These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Out of Pod Experience

 
  • Topic is locked indefinitely.
12Next page
 

Want to learn programming - Where do I start?

Author
Degren
The Scope
Gallente Federation
#1 - 2012-04-03 10:26:18 UTC
Hey, gents and ladies. I've reached (what I consider) a dead-end in my current career.

In a few years I'll be able to stop (contracted work kinda deal), and continue pursuing education...but I don't really want to wait a few years.

I'm basically looking at programming, robotics and mechanical engineering. Ideally, I'd like to one day work on AI or medtech research/engineering.

So...my question for you folks is where do I start? I really only have a basic understanding of if/then/else relations so...not much.

I've sent a few e-mails to professors working on AI and such, but I get bot responses, so...help!

Thanks in advance!

Hello, hello again.

Penelope Star
#2 - 2012-04-03 10:52:37 UTC  |  Edited by: Penelope Star
Nothing to do with your area of interest, but If I was only starting out now would be sorely tempted to get into developing apps for ipads. Fun, topical AND the potential to make a bit of money.

iOs Developer Library


Let us know if you get any useful feedback from your emails.

.

Sidus Isaacs
Center for Advanced Studies
Gallente Federation
#3 - 2012-04-03 13:06:43 UTC
Degren wrote:
Hey, gents and ladies. I've reached (what I consider) a dead-end in my current career.

In a few years I'll be able to stop (contracted work kinda deal), and continue pursuing education...but I don't really want to wait a few years.

I'm basically looking at programming, robotics and mechanical engineering. Ideally, I'd like to one day work on AI or medtech research/engineering.

So...my question for you folks is where do I start? I really only have a basic understanding of if/then/else relations so...not much.

I've sent a few e-mails to professors working on AI and such, but I get bot responses, so...help!

Thanks in advance!


I would start with google. Read up on some tutorials. What language is not really as important as the thoughts and ideas behind it. And if need be, one can swap out language as needed with only minimal "relearning" time.

Personally I would check out C++ or Java to begin with.

I started myself by typing hex codes into an old chip, then went to assembly, then to C++. I do not recommend the first two, but they did give me a good understanding back in the day.
Telegram Sam
Sebiestor Tribe
Minmatar Republic
#4 - 2012-04-03 13:19:38 UTC
Codecademy has free, easy online lessons in coding. It's designed to be kind of like playing a game. Maybe somewhere to start to see if you like this stuff.
stoicfaux
#5 - 2012-04-03 13:42:13 UTC
Algorithms + Data Structures = Programs.

Take or audit a university course or two on Algorithms and Data Structures. Everything else tends to flow from there.

Pon Farr Memorial: once every 7 years, all the carebears in high-sec must PvP or they will be temp-banned.

Kattshiro
Deep Core Mining Inc.
Caldari State
#6 - 2012-04-03 13:50:13 UTC  |  Edited by: Kattshiro
Telegram Sam wrote:
Codecademy has free, easy online lessons in coding. It's designed to be kind of like playing a game. Maybe somewhere to start to see if you like this stuff.


Actually heard these guys were pretty good.

Also you need to figure out what kind of programming/coding you want to do. Also need to see if it really is for you.

Also some classes on itunes U from Stanford MIT etc. Free and can at least show you what your in for if you want to do high level OOP.
Herzog Wolfhammer
Sigma Special Tactics Group
#7 - 2012-04-03 16:10:32 UTC
Degren wrote:
Hey, gents and ladies. I've reached (what I consider) a dead-end in my current career.

In a few years I'll be able to stop (contracted work kinda deal), and continue pursuing education...but I don't really want to wait a few years.

I'm basically looking at programming, robotics and mechanical engineering. Ideally, I'd like to one day work on AI or medtech research/engineering.

So...my question for you folks is where do I start? I really only have a basic understanding of if/then/else relations so...not much.

I've sent a few e-mails to professors working on AI and such, but I get bot responses, so...help!

Thanks in advance!




I started programming in the desert, modifying threat libraries in the countermeasures systems of fighter jets. All I had was an LED display and a number pad and the whole thing was in hex code. Everything had to be learned from a binder marked "SECRET" that was thicker than a phone book and I could not take it home to study it.


How you get your start does not matter. So therefore I recommend you pick a goal, an easy one, that requires you create a program. Make it a goal in the lines of what you want to do (graphics, communications, databases, control, etc) and then, search on the internet for your answers.

Just about everybody who does anything with programming puts stuff on the internet showing how to do what they do. So finding the right information is not as hard as you would think.


Once you get a feel for it, congratulations, you are doing what 90 percent of programmers already do in their daily work. There is no point where it's said that you know what you are doing. Most programming work is finding a solution that already exists and adapting existing code to your own solution.




Bring back DEEEEP Space!

Merin Ryskin
Peregrine Industries
#8 - 2012-04-03 16:30:21 UTC
Hello world is always a good start.

Since you're interested in robotics, you might want to get a microcontroller starter kit and (TI evalbot, arduino, etc) so you can get used to the idea of controlling physical hardware and dealing with the much tighter memory/speed/etc limits. That kind of programming is very different than, say, writing PC business software.
Tsadkiel
Aliastra
Gallente Federation
#9 - 2012-04-03 16:43:19 UTC
ok so, a couple of things

1) i highly recommend you set up a unix environment to work in of some kind. if you are a mac person, you're set. if not, consider installing Ubuntu as a second operating system on your PC. the reason why i say Ubuntu is because their recent releases have the ability to be installed FROM WINDOWS, so no need to go through the preboot setup crap. i don't know how computer literate you are so if you are already comfortable with setting up your computer to dual boot, then just pick the linux OS of your choice.

2) if you are just learning, i would start with Python. install ipython and all of the necessarily python libraries. you can do this in Ubuntu through the Synaptic Package Manager, which can be found under System->Administration. once you feel comfortable writing code in python my next recommendation is to move on to C++. this will make you much more employable as C++ is the current "workhorse" language. it has a lot more subtleties than python, and you will need to learn about compilers, but it will be worth it. If Python is Jazz, then C++ is Classical Bach, Mozart, or Chopin.

3) make projects for yourself and start small! here are some projects that i think will help you learn the basic ins and outs of any programming language.

3a) "Hello World!". write a program that simply writes something to the screen (the terminal).

3b) write a program that accepts and uses user input.

3c) write a program that reads and writes to files! make it so that the behavior of the program is determined by the file read.

3d) write a program that implements classes and class inheritance. unless you are working with an archaic language like FORTRAN or a language designed for a specific purpose, these will be present in EVERY language

3e) write a program that determines whether or not a user inputed number is prime. there is a "smart" way and a "dumb" way to do this. try both and note difference in run time. assume the person trying to use the program is attempting to crash it.

3f) write a program that takes user input from the terminal, converts it into binary, and outputs the result to the screen. you will need to learn about how that language handles different data types.

this should be a good start! good luck!

FloppieTheBanjoClown
Arcana Imperii Ltd.
#10 - 2012-04-03 16:58:47 UTC
Some friends and I recently decided to take up programming as a group hobby, with the intent of devloping iOS games (no promises of them being good...the purpose is learning). Useful information here, thanks guys.

Founding member of the Belligerent Undesirables movement.

stoicfaux
#11 - 2012-04-03 17:38:39 UTC
Tsadkiel wrote:

2) if you are just learning, i would start with Python. install ipython and all of the necessarily python libraries. you can do this in Ubuntu through the Synaptic Package Manager, which can be found under System->Administration. once you feel comfortable writing code in python my next recommendation is to move on to C++. this will make you much more employable as C++ is the current "workhorse" language. it has a lot more subtleties than python, and you will need to learn about compilers, but it will be worth it. If Python is Jazz, then C++ is Classical Bach, Mozart, or Chopin.

Sweet Jesus, no! Python is strongly typed only at run-time, which means that a) Python IDEs provide almost no value over a straight text editor (no auto-completion, no immediate flagging of problems, etc.,) and b) it's much, much, much more expensive to discover your errors at run-time, which makes learning a lot more frustrating and a lot slower for the newbie. Plus, Python's documentation is probably the most useless I've ever had the displeasure to use.

A complete newbie would be better off grabbing a copy of VB.Net Express (free) which has a lot of hand holding, a very friendly IDE, easy GUI creation tools, one button builds, OO, easy to google for code examples/help, etc.. Once a newbie gets the general concepts down, then they can move on to a more professional language or pick up a scripting language.

Pon Farr Memorial: once every 7 years, all the carebears in high-sec must PvP or they will be temp-banned.

Selinate
#12 - 2012-04-03 17:54:28 UTC
Degren wrote:


I've sent a few e-mails to professors working on AI and such, but I get bot responses, so...help!


Professors barely give a rat's ass about undergraduate students. It might be harsh to say this, but don't expect them to care about you.

I'd go with what Tsadkiel said. Keep in mind, it varies heavily on what you want to do with programming. For instance, discretizing a complex mathematical model (such as a system of partial differential equations) and writing a program based off of convergence criteria with that discretization is much MUCH different from, say, making a game for the iPad.

With this in mind, you really have to be very specific on the kind of progarmming you want to do. You say "AI", and mechanical engineering, and while I can't say specifically what kind of programming the field of artificial intelligence uses, I can say that you need to be prepared to go to school for a long, LONG time. I'd guess for about 6-8 years, maybe longer, just off the top of my head.
Tsadkiel
Aliastra
Gallente Federation
#13 - 2012-04-03 18:01:08 UTC
stoicfaux wrote:
Tsadkiel wrote:

2) if you are just learning, i would start with Python. install ipython and all of the necessarily python libraries. you can do this in Ubuntu through the Synaptic Package Manager, which can be found under System->Administration. once you feel comfortable writing code in python my next recommendation is to move on to C++. this will make you much more employable as C++ is the current "workhorse" language. it has a lot more subtleties than python, and you will need to learn about compilers, but it will be worth it. If Python is Jazz, then C++ is Classical Bach, Mozart, or Chopin.

Sweet Jesus, no! Python is strongly typed only at run-time, which means that a) Python IDEs provide almost no value over a straight text editor (no auto-completion, no immediate flagging of problems, etc.,) and b) it's much, much, much more expensive to discover your errors at run-time, which makes learning a lot more frustrating and a lot slower for the newbie. Plus, Python's documentation is probably the most useless I've ever had the displeasure to use.

A complete newbie would be better off grabbing a copy of VB.Net Express (free) which has a lot of hand holding, a very friendly IDE, easy GUI creation tools, one button builds, OO, easy to google for code examples/help, etc.. Once a newbie gets the general concepts down, then they can move on to a more professional language or pick up a scripting language.



the primary reason i mentioned python is because it is the easiest way to learn how to "think like a programmer" without getting bogged down in unnecessary syntax for the most part. you don't need to learn how to use an IDE to use it (any text editor will do, and this is true for all languages), you don't need to learn about compilers, and it's a scripting language, so it forces you to learn how to think in sequence.

long story short is that it will help you learn a lot without requiring a ton of overhead knowledge.
Merin Ryskin
Peregrine Industries
#14 - 2012-04-03 18:05:40 UTC
Tsadkiel wrote:
you don't need to learn how to use an IDE to use it (any text editor will do, and this is true for all languages)


Except you want to use an IDE as soon as possible, so that you can debug your code in a sensible way. Trying to compile and understand error messages from a command line SUCKS, and I would've gladly spent five minutes learning where the "create new program" and "run" buttons before writing "hello world".
Tsadkiel
Aliastra
Gallente Federation
#15 - 2012-04-03 18:22:06 UTC
Merin Ryskin wrote:
Tsadkiel wrote:
you don't need to learn how to use an IDE to use it (any text editor will do, and this is true for all languages)


Except you want to use an IDE as soon as possible, so that you can debug your code in a sensible way. Trying to compile and understand error messages from a command line SUCKS, and I would've gladly spent five minutes learning where the "create new program" and "run" buttons before writing "hello world".


i guess that's a matter of preference. i prefer working with a text editor like emacs or vim and running and compiling on the command line to using an IDE. i feel like it forced me to learn things like make, cmake, shell scripting, etc... i feel like it's more like working on the engine of a car with your bare hands :3 again, purely a matter of preference i guess.
Merin Ryskin
Peregrine Industries
#16 - 2012-04-03 18:26:18 UTC
Tsadkiel wrote:
i guess that's a matter of preference.


True. Some people like whips and chains, some people like their masochism in digital form.
Caleidascope
Republic Military School
Minmatar Republic
#17 - 2012-04-03 18:58:31 UTC
I am taking microcontroller class right now. We are using intel 8051 style microcontroller. All the programming for it we do using C (not C++ nor C#).

Life is short and dinner time is chancy

Eat dessert first!

Tsadkiel
Aliastra
Gallente Federation
#18 - 2012-04-03 19:33:40 UTC
Merin Ryskin wrote:
Tsadkiel wrote:
i guess that's a matter of preference.


True. Some people like whips and chains, some people like their masochism in digital form.


YUP! =D
Herzog Wolfhammer
Sigma Special Tactics Group
#19 - 2012-04-03 20:41:24 UTC
Merin Ryskin wrote:
Tsadkiel wrote:
you don't need to learn how to use an IDE to use it (any text editor will do, and this is true for all languages)


Except you want to use an IDE as soon as possible, so that you can debug your code in a sensible way. Trying to compile and understand error messages from a command line SUCKS, and I would've gladly spent five minutes learning where the "create new program" and "run" buttons before writing "hello world".




Whoa there.

Beginners should not go straight to an IDE. The small simpler programs for a beginner don't require it, and at that stage learning the ins and out of the IDE get in the way of learning the language.

Furthermore, Intellisense has made a lot of new programmers "framework dependent". They end up knowing more about the framework than how to actually write efficient code. This is a detriment. Sure it's faster, but the moment some bug comes up or something is not doing what it's expected, they have ZERO troubleshooting skill for it. I have to hand-hold so-called programmers like this all day.


New programmers should stick to the simple stuff and use the command line compilers and linkers to get a feel for how these things work. A lot of the simple free ones out there are easy to use. Then after that, it's time for an IDE and the FIRST thing anybody needs to learn with an IDE (beyond how to create a project and populate it with classes, functions, etc) is how to run a debugging session or a debugging mode. That is the true power of the IDE, not in how it makes things easier.



Bring back DEEEEP Space!

Merin Ryskin
Peregrine Industries
#20 - 2012-04-03 20:56:16 UTC
Herzog Wolfhammer wrote:
Beginners should not go straight to an IDE. The small simpler programs for a beginner don't require it, and at that stage learning the ins and out of the IDE get in the way of learning the language.


So don't learn all the details of the IDE right away. "Create new c/java/whatever file" and "compile and run" is a total of two buttons. I bet you'll spend just as much time looking up what the command line syntax for your compiler is, and way more time if you have to install an entire new operating system like some people are suggesting.

Even very basic things like syntax highlighting, visual pointers on compiler errors, etc are way better than doing it with a command line, and even a very basic understanding of how to use breakpoints/watch lists/etc makes debugging a program much easier. The only reason not to take advantage of those features is if you're one of those idiots who thinks that you aren't a "real" programmer unless you've had to suffer x/y/z pointless difficulties.
12Next page