[–] TheBookWasBetter 0 points 10 points (+10|-0) ago  (edited ago)

Python python python. It is the mini-van of programming languages. ... Sounds sexy right?

  • It goes fast enough for the highway

  • lots of trunk space

  • Super reliable

  • Other people can drive it

  • good enough on fuel/processing power

  • Can go faster if you soup it up (c extentions)

  • Works with web or data

Other languages might have more bells and whistles but for the whole package, python is really hard to beat.

[–] vastrightwing 0 points 2 points (+2|-0) ago 

Python is a great gateway language! Get a Raspberry Pi, learn Python. Later give C++ a try. After you know Python, most modern languages will be easy to understand.

[–] TheBookWasBetter 0 points 2 points (+2|-0) ago 

Yeah, I learned on a pi. Setting it up is a fun hobby project.

[–] DudeImBetter 0 points 1 points (+1|-0) ago 

I sort of think the opposite, after you learn c++ everything else is a piece of cake. I'm working on php now and this shit is a cakewalk compared to c++. I mean I know the basics of php, I don't know the intricacies as I somewhat do c++. If you go from python to a statically typed language you're gonna have to learn a bunch of shit you probably didn't learn about using python.

[–] ItsBad 0 points 8 points (+8|-0) ago 

If you want to actually learn how the computer thinks and gain proper programming skills learn C. NOT C++, just C.

If you want to quickly and easily make programs without having a proper understanding of programming and what the computer is doing learn Python. Though not having a proper understanding of what the computer is doing can easily bite you later. But most programmers nowadays don't actually know what is happening so that wouldn't really be a strike against you employment wise. And in spite of Python being very abstracted away from what is happening a lot of actual programs do use it.

Java, C# are decent and common in professional IT projects.

Do not use JavaScript for learning, it is an insane language and the JavaScript community is insane.

Getting the programming tools set up is just as if not harder than the actually programming itself. I don't know exactly what you use on windows nowadays for the tools. Notepad++ is a useful generic editor that supports syntax highlighting for basically all programming languages. Useful to have.

[–] Wharleas 0 points 3 points (+3|-0) ago 

C is great to learn how the computer thinks, but you would have to get really good at it before it starts paying off in terms of jobs or projects with real world use. A lot of "how the computer thinks" is abstracted by OSes and runtimes. It's a bit like how learning the physics of ICEs won't help you repair a modern car, because modern cars have a lot of complicated electronics and other shit that you wouldn't know from first principles.

Given that he says he wants to do data analytics, I'd say C is a particularly bad suggestion. There are not as many libraries for that in C, it's less popular so there will be fewer resources, a lot of it is high level stuff so implementing all the low level nitty gritty in C will drive you insane, and few companies in that space are looking for C programmers.

If you're planning to go into embedded, drivers and very high performance programs C is not bad. Problem is that C is best for writing low level stuff, and most of that has already been written. There's not a lot left for you to do, especially for a beginner.

[–] DudeImBetter 0 points 0 points (+0|-0) ago 

That's why I'd say c++ is a better starter language. You learn datatypes since it's static, garbage collection, pointers, ect, and it's used more broadly than c. You learn practical knowledge that can help you even with dynamic languages.

[–] vastrightwing 0 points 3 points (+3|-0) ago 

Oh, but then you miss out on all the cool javascript frameworks. There's a new flavor every week! Just don't fall in love with any of them, they die fast.

[–] dan_k 0 points 2 points (+2|-0) ago  (edited ago)

I agree with itsbad, and would offer a youtube playlist from a guy that really helped me get an underlying knowledge of 'the basics'. Its java, and a great place to start, but itsbad is right the community is insane. He starts out with a tutorial that well help you install eclipse a great tool, which will lead directly to the insane community he speaks of if you have to stray from the playlist.


Edit: I used the wrong link the first time, if you clicked it..

[–] Helbrecht 1 points -1 points (+0|-1) ago 

Komodo Edit seems to work pretty good with Python, though I am new to this. Can get it free, which is nice.

What makes JavaScript and its community so nutty?

[–] UsedToBeCujoQuarrel 0 points 4 points (+4|-0) ago 

We used C++ (government contracting doing simulations) exclusively.

I love what Python can do but I dislike the language itself. Whoever thought using indentation for blocks is insane.

[–] SpottyMatt 0 points 4 points (+4|-0) ago  (edited ago)

From what you've mentioned and touched so far, latch on to the Python. Python's a real programming language that is beginner-friendly and is in major current use in industry and academia.

This means you're not only learning to code, but doing it in something that's relevant to employment.

Matlab is programming but it's very specific to Matlab, which is very specific to the kinds of problems Matlab's for. VBA is not going to lead you to any instruction that teaches you good things that will last.

I'm hoping to direct my career towards working with data analytics.

Python. Python is popular among the big data & machine-learning folks.

The best way to learn them "outside an academic setting" IMO, is:

  1. Find several "do it yourself" teaching websites, and run through each of their free courses. You'll probably "learn" the "same" things more than once, but this will help you spot patterns and begin to be able to tell good instruction from bad instruction.
  2. Look up "beginner projects" for programming, language be damned. Pick one and do it in the language you've been learning in. For example, "creating a calculator program, like Windows' calculator" or "creating the game 'snake'."
  3. Look up popular open-source projects built in the language you've been learning in. Bonus if you used one of them in #2 above. Look at the bugs that got fixed until you find a bug + solution you understand.
  4. Go look at the open, un-fixed bugs for that project until you find one you think you understand. Try to fix it and contribute to that open-source project.

Now, when you think of a problem that can be solved by software, that's a new #2 project for you. When you need someone's code to complete your project but it doesn't quite do exactly what you need... that's a new open-source contribution for you to make. This will keep you active which will grow your skill and keep it sharp.

At some point, branch out and learn a new language, and repeat.

[–] justlogin 0 points 2 points (+2|-0) ago  (edited ago)

Engineering you say? First thing to come to mind is MatLab/Octave, but maybe not. There is an annual MatLab contest and they do all kinds of scientific things...

Learn Fortran, people claim engineering is why the language still exist lol. An old engineering friend think Fortran is obsolete and never even learned it, despite being an engineer...

You could do worse than Python... The one and only benefit of Python is all the libraries and everyone else using it. :/

Don't underestimate the possible utility of Excel and/or spreadsheets. The darndest things get modeled in spreadsheets [EDIT: not always appropriate, but spreadsheets can be made to do elaborate things... and you still need to tabulate things anyways] and an engineer needs to tabulate project estimates and so forth.

Wait, if you are still in school there shouldn't be enough free time to do anything else!

[–] [deleted] 0 points 0 points (+0|-0) ago 


[–] justlogin 0 points 1 points (+1|-0) ago  (edited ago)

One thing to keep in mind about studying ahead, the head start you get in any subject (if of future classes) runs out quickly! You can be head of the class for a few weeks and then suddenly lose your classroom advantage...

If you somehow learn a seemingly impressive amount on any subject, and for some reason or another take a break from school, your former classmates will end up surpassing whatever level you had attained.

That said, professionals are expected to commit to Continual Education, keep up with industry news and all that jazz...

EDIT: Your question makes more sense if your schools cirriculum doesn't have much programming... An engineer probably should know how to do a little coding, but most of the value is engineering Domain Knowledge.

[–] Wharleas 0 points 2 points (+2|-0) ago 

A lot depends on your ultimate goal, but generally I'd say the things you want to learn are:

  • Other loops, starting with for, if, while, switch. Also what break and continue are.
  • Variables, arrays and indexing. Lists/arrays (and their dynamic versions) and dictionaries (aka hashmaps) are very commonly used.
  • How to import libraries. How to make your own libraries. (this may require you to learn things like OOP, inheritance, lambdas depending on your language choice)
  • Reading/writing files. At least plaintext tables but being able to use databases helps.
  • Parsing web pages and using APIs, if you care about it.
  • How to make GUIs, if you care about it.
  • Parallelization/multithreading, if you care about it.
  • How to write (unit) tests.
  • How to version control with git.
  • How to make charts and graphics, if you care about it.
  • How to debug.
  • How to optimize performance.

These concepts have a theory to them that is determined by pure math and not language, but it's a lot easier to understand that theory by trying them out with a real language first. Once these click, learning new languages from then on is almost trivial. You just learn some syntax and all the deeper skills will transfer easily. Especially if you've done your homework and tried to understand why things work the way they do instead of blindly copying and pasting code from the internet.

If you want to go into data, I highly suggest Python. It's what everyone uses in that industry, it has great libraries, and it's a pretty forgiving language for a beginner. You might want to try R as well, which is a harder language but has very good statistical/data tools, but you would probably find it easier to start with Python. VBA and Access, forget it. They're shit langs and only worth learning if something you're using requires it. For databases (ie. alternative to Access), start with SQL. Matlab is a trap too, if you are an engineer it's decently valuable, but it's not widely used for general purposes. Avoid anything proprietary as a rule.

Generally, classes are a waste of time. Get yourself one of those "learn x lang in a week" books, or even an online tutorial. Follow it until you get familiar with the syntax and basics. Then start learning on your own by Googling "how to do x in language y". Make lots of projects and put them on your github because that's all that employers care about. Learning is a lot easier that way because you just learn whatever you need to make a project work.

[–] 3dk 0 points 0 points (+0|-0) ago  (edited ago)

People like to ask "which language should I learn?" rather than "which concepts should I learn?". Your post answers the latter and is more important for a beginner especially, so they have at least heard of things. I'm also still a noob, but I'd like to think I have the essentials figured out. Topics to start with: datatypes, control structures, Object oriented programming (OOP), databases and SQL. Once you've got that figured out, it seems the road of improvement becomes more nebulous...

Try out some coding challenge sites for some good puzzles (and chance to have a look at other people's code, you will always learn something). The difficulty of challenges on these sites ranges from just getting your feet wet to folding your brain inside out. Find certain topics, books, projects that interest you. Think of stuff to do and always keep tinkering around. Search the internet and read a lot of stack exchange answers.

Further topics to consider:

Install and get used to Linux and learn some bash shell scripting. Someone here mentioned avoiding proprietary software as much as possible, it's true and using Linux is part of that.

Web development - Find out why HTML is not a programming language and what CSS is. Make your own styles to customize the looks of any site to your liking with the browser extension Stylus (not Stylish, they sold out). Set up a webserver and and a database and learn some PHP (or another server-side language with a framework, for example python with django, java with spring, or C# with ASP.NET - I'm not quite sure what is the best choice here). Put up a shitty website.

[–] glassuser 0 points 2 points (+2|-0) ago  (edited ago)

What kind of engineering? Learn C and C++. Python is of limited use, depending on the platform, but it can be very useful for the right use case. If you're going to have much to do with windows (and an increasing amount of Linux systems too), learn C# and .NET.

[–] avgwhtguy1 0 points 2 points (+2|-0) ago  (edited ago)

It shouldnt be about which language. C is like carpenty. Python is like plumbing. Javascript is like electrical.

Some people are specialists on large teams; some learn enough on youtube to build empires.

An intelligent man who puts in time to learn how to make websites, apps, etc start to finish is in high demand and can work from anywhere.

To get a job as a data scientist, most companies are asking for graduate degrees. They work on large teams in cubicles in major cities. Pale skin, bad backs.

I would learn everything, but start with Web Development, as its a full stack, real life, skill that pays the bills kind of topic. An engineering degree with some languages and web dev skills will get you a shot at a jr data scientist job without grad school. Ad a minor in econ, finance, etc to be sure and well rounded.

Plan to get out of the office life before your back and knees go (30s), because it is the main cause of the modern physical decline

load more comments ▼ (3 remaining)