Jump to content

Summer Goal: learn a Programming Language ☑ What should I start with ?

whud99

I have a list of a few goals for the summer and one near the top of the list is learning a programming language fully. I have learned a few things in the past like a few years ago I became rather fluent in python on an old computer and I've dabbled here and there with code academy, autohotkey, basic, lua and for a computer class I learned how to use MIT's scratch (that website is sooo full of 12 year olds making furry art it creeps me out). So I know the very basics of how to code but I can't really do anything with it. I was wondering what should I learn ? The general use I want to get out of learning one is education and maybe some useful stuff like automating tasks or something I don't know... I was looking at C++ but I figured I might as well ask and see if there is anything else more experienced coders might suggest for me. 

 

Thanks for any help !

Link to comment
Share on other sites

Link to post
Share on other sites

You'll find plenty of opinions on this (very few of which would be wrong, tbh) but IMHO, I usually recommend C++. It feels like writing in long-form cursive when compared to other languages but it's a great stepping stone to other languages. Actually, now that I think about it, I would suggest whatever language you can find the best training for. IIRC, lynda.com's beginner programming courses suggest Java, which is also a great place to start.

 

Basically, find a great training program and use whatever they recommend.

"The doctors X-rayed my head and found nothing."  - Dizzy Dean

 

i7-4770K, ASUS Z87 Gryphon, EVGA GTX 780 Ti, 16 GB Kingston Fury RAM, Crucial M500 240 GB, 1TB Seagate Barracuda, Cooler Master Hyper 212 Evo, Seasonic 760W PSU, Asus BD, Phanteks Evlolv mATX (Gunmetal).

Link to comment
Share on other sites

Link to post
Share on other sites

Honestly if you are just looking to do some coding for fun go with Python or C#. If you are looking to really learn how to program effectively I would start with C++ since that is where you will learn a lot of the lower-level stuff you wouldn't need to learn with Python. Also if you choose to start with C++ don't use Visual Studio at first, use G++ as your compiler (Under MinGW in Windows or standalone on Linux) and something like Notepad++ or Sublime Text to write the code. Writing your code like this will teach you how compilation and debugging really works instead of just letting Visual Studio handle everything.

My Current Build: 

Intel i5 3570K @ 4.4GHz 1.11V, Cooler Master Hyper 212 EVO, Asrock Z77 Extreme4, Corsair Vengeance 8GB 1600MHz, Samsung 840 EVO 250GB, Asus GTX 760 DCII Overclocked, Corsair CX600M

Link to comment
Share on other sites

Link to post
Share on other sites

I try to learn a new language for every new project I write. Given that nobody will ever "fully learn" any language with all of its special cases and libraries, it's well enough to be able to use them as they come. 

 

My current C++ projects are compiled with Visual Studio's cl.exe. Yes, on the command line. The major advantage towards G++ on Windows is that cl.exe already supports the current version of the C++17 standard, including the new std libraries. 

 

Admittedly, C++ is not the ideal language to start with. I'd recommend Common Lisp (because you learn a lot of important, abstract concepts with it) or Perl 5 (because it's portable and works like Python, but with a sane syntax).

 

(Sorry for not introducing myself. I'm just a random lurker.) 

 

Good morning. 

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

Personally i think it depends on what area you are planning to go into. Windows applications some C language i personally use c# and for web development python, php.

 

TBH they aren't that much different once you learn the concepts of OOP then it's really just a matter of learning syntax.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

Python is an okay choice, but the language's syntax is weird, more advanced programmers don't really like it. It also makes it quite difficult to switch to other languages.

If you want to do general things, but not much of them, take Python. However, if you want to perhaps do some other languages in the future too, take Ruby.

If you want to do something specific (like webdev or apps), then the choice isn't as simple.

Link to comment
Share on other sites

Link to post
Share on other sites

my vote is java. 

It is very widely used among all sorts of applications, from android, to computers to your microwave. It is relatively simple and beginner friendly (pretty understable and isn't super annoying about pointless syntax and convention (see C or C++ for an example of (IMHO) an annoying language in terms of convention and syntax)(you can tell I'm a programmer, solely based on the parenthesis here... but I digress)). Also it is very popular especially since the advent of JDK 8. Also did I mention good compatibility on all systems and pretty rock solid dev support? Just look at this chart here for overall language popularity: https://pypl.github.io/PYPL.html.

Link to comment
Share on other sites

Link to post
Share on other sites

On 21.5.2016 at 0:48 PM, Gachr said:

If you want to do general things, but not much of them, take Python. However, if you want to perhaps do some other languages in the future too, take Ruby.

 

 

Ruby's syntax is not so different from Python's, except that its community is much smaller...

So you better don't.

 

48 minutes ago, BuntzenB said:

my vote is java. 

It is very widely used among all sorts of applications, from android, to computers to your microwave. It is relatively simple and beginner friendly (pretty understable and isn't super annoying about pointless syntax and convention

 

C and C++ run on Android and your microwave too - but much faster than Java and without the notorious security holes in the runtime VM.

 

Also, C++17 introduces quite a lot of nice things, e.g. a lot of the Boost libraries. Given that its object model is pretty mature by now, there is no reason to use Java instead of C++ anymore.

 

jm2c

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

python gets my vote. Just finished a class with it and the power behind it with usage of plugins and apis. amazing.

 

I can create a code to find the 100 most recent tweets about presidential candidates and make a word cloud with the most used terms. And that is just scratching the surface.

CPU: Intel Core i7 8700k CPU Cooler: Corsair Hydro Series H100i Mobo:  Memory: G.Skill Ripjaws X 32GB 2133 Storage #1: 1TB 850 EVO SSD Storage #2: Western Digital Black 2TB Storage #3: Western Digital Green 4TB GPU: Gigabyte 980 Ti G1 Case: Mastercase5 PSU: EVGA 750 W G2 80+Gold Keyboard: Corsair K70 RGB Cherry MX Brown Mouse: Razer Deathadder Elite Monitor: LG 34UM94 Headset: Bose

Phone: Samsung Galaxy S9

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, Dat Guy said:

C and C++ run on Android and your microwave too - but much faster than Java and without the notorious security holes in the runtime VM.

 

Also, C++17 introduces quite a lot of nice things, e.g. a lot of the Boost libraries. Given that its object model is pretty mature by now, there is no reason to use Java instead of C++ anymore.

 

jm2c

 

Interesting... I was under the impression that since Java compiles into bytecode that it has the ability to run on devices such as toasters, cars and other 'dumb' electronics. 

 

Also about the security - I think you've been horrible mislead. I'm fairly certain that Java is indeed more secure than C++ and C. For example: It is sandboxed, there isn't buffer overflow, no stack corruption, it is converted into bytecode and therefore cannot interact with the compiler and is verified before compiled - to name some.Granted it is unsafe on the web, but so are most languages not designed for the web (including C based languages. Stick to JS or preferably HTML5). Also yes, C and C++ are faster (especially for OSs where there is no memory access needed) but also Fortran is faster than C for math and scientific use, etc etc. It is about application.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Yes, Java bytecode runs inside a VM on anything. But that VM has nearly no useful memory management. Also, you can't really "optimize" your application for certain CPUs as you work on a rather abstract concept instead of the real machine with Java.

 

There is no sane reason to prefer it to C++. 

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Dat Guy said:

 

Ruby's syntax is not so different from Python's, except that its community is much smaller...

So you better don't.

Ruby's syntax is VERY different to Python's, it just shows your lack of knowledge, if you assume that all "simple", interpreted languages have a similar syntax.

21 minutes ago, Dat Guy said:

There is no sane reason to prefer it to C++. 

This shows your lack of competence even further. Look at how many C++ jobs are out there and how many Java jobs.

Link to comment
Share on other sites

Link to post
Share on other sites

Thank you for your kind answer. Of course I have no actual clue of development and/or languages. By the way, you probably work with my code right now unless you're on Windows.

 

Ruby and Python share a lot of similarities, with Ruby having slightly more parentheses. Concerning Java: Yes, there are a lot of jobs for it, because Java is a good language for starters because Universities recommend it. That does, however, not mean much. Feel free to compare the wage to real (C++) jobs. 

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

10 minutes ago, Dat Guy said:

Thank you for your kind answer. Of course I have no actual clue of development and/or languages. By the way, you probably work with my code right now unless you're on Windows.

 

Ruby and Python share a lot of similarities, with Ruby having slightly more parentheses. Concerning Java: Yes, there are a lot of jobs for it, because Java is a good language for starters because Universities recommend it. That does, however, not mean much. Feel free to compare the wage to real (C++) jobs. 

You might've written some patches to the Linux code in C for example, but it doesn't mean you know anything about scripting languages. And please, share your achievements with us.

Do I really need to explain the syntax differences? I'm worried you might understand those things, since you even think that Ruby has more parentheses than Python, which is completely the other way around.

The job count gives you a reason to prefer Java over C++.

Link to comment
Share on other sites

Link to post
Share on other sites

Do you want a lot of jobs or good jobs with a fair payment? 

There are a lot of jobs as a trash man too... 

 

By the way, the most fun are languages which you learn because you want to, not for a potential job. ;)

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Gachr said:

Ruby's syntax is VERY different to Python's, it just shows your lack of knowledge, if you assume that all "simple", interpreted languages have a similar syntax.

This shows your lack of competence even further. Look at how many C++ jobs are out there and how many Java jobs.

here in scotland c#, java, javascript with angularJS vastly out out weigh c++ jobs.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, vorticalbox said:

here in scotland c#, java, javascript with angularJS vastly out out weigh c++ jobs.

 

c# bothers me - it feels like it just doesnt know what it wants to be. Also it makes sense that those are the languages focused on.

 

6 hours ago, Dat Guy said:

Yes, Java bytecode runs inside a VM on anything. But that VM has nearly no useful memory management. Also, you can't really "optimize" your application for certain CPUs as you work on a rather abstract concept instead of the real machine with Java.

 

There is no sane reason to prefer it to C++. 

 

Java handles the memory much better than C and C++.... i think you're mistaken. C and C++ are preferred in OSs specifically because they don't have to access RAM and therefore are much much faster in comparison to Java. Otherwise  i agree.

 

And to say that there's no sane reason to prefer it seems very fanboy-ish and newby. The entire coder-base disagrees with you. 

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, BuntzenB said:

 

c# bothers me - it feels like it just doesnt know what it wants to be. Also it makes sense that those are the languages focused on.

 

 

Java handles the memory much better than C and C++.... i think you're mistaken. C and C++ are preferred in OSs specifically because they don't have to access RAM and therefore are much much faster in comparison to Java. C and C++ dont even handle RAM managemenet - it is up to the system as they run directly on the machine while Java VM handles it. Otherwise  i agree.

 

And to say that there's no sane reason to prefer it seems very fanboy-ish and newby. The entire coder-base disagrees with you. 

 

Link to comment
Share on other sites

Link to post
Share on other sites

I would go with Java or C#.  Both are heavily used in today's computing and both have very strong FREE tools available to help you.  (Eclipse IDE for Java and Visual Studio Community for C#)  The syntax is very similar between the two as well as well as some other languages so learning one opens the door and allows you to easily learn additional languages.  As opposed to python which don't get me wrong is a very good language skill to have, it's a lot more difficult to translate python into other languages. 

 

Another bit of advice I have is don't focus on learning a language, as much as learning the concepts.  The syntax will come if you understand the concepts.  Meaning, Java and C# are both object oriented languages.  Learn those concepts and not only will those languages come more easily but then to 'learn' a new language all you really need is syntax because your background knowledge of the concepts makes everything way easier.

Link to comment
Share on other sites

Link to post
Share on other sites

22 minutes ago, BuntzenB said:

Java handles the memory much better than C and C++....

 

Yes, it just clogs memory until it thinks it has enough. "Memory handling" vs. "memory management" ...

 

 

The entire coder-base disagrees with you. 

"Everyone does it" was never a good sign of quality. Remember, everyone does left-pad. I know a lot of people who felt relief after their IT studies when they could finally stop using Java for their applications.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

16 minutes ago, BuntzenB said:

C and C++ are preferred in OSs specifically because they don't have to access RAM and therefore are much much faster in comparison to Java. Otherwise  i agree.

All programs run from and must access RAM. From where else would it run and what else would it access?

And don't say caches, caches are part of the memory hierarchy used to hide the latency of RAM and are implemented in hardware and don't care what language you write in. Also writing cache aware code can be done in any language (ie take advantage of spatial and temporal locality etc..) 

 

Not gonna get involved in the rest of the discussion, everyone has a preferred language and they have different usage areas.

Link to comment
Share on other sites

Link to post
Share on other sites

On 23/05/2016 at 4:43 AM, BuntzenB said:

...for OSs where there is no memory access needed...

18 hours ago, BuntzenB said:

C and C++ are preferred in OSs specifically because they don't have to access RAM...

I think that you really need to go and learn the basics of how a computer works at the fundamental hardware level to be brutally honest with you.

18 hours ago, BuntzenB said:

And to say that there's no sane reason to prefer it seems very fanboy-ish and newby. The entire coder-base disagrees with you. 

What's a 'coder-base'?

On 22/05/2016 at 0:15 AM, BuntzenB said:

...you can tell I'm a programmer...

Are you really sure about that statement?

The single biggest problem in communication is the illusion that it has taken place.

Link to comment
Share on other sites

Link to post
Share on other sites

C++ is an excellent choice. It's not beginner friendly, but the language design and documentation is very rigurous, so it's easy to follow. Don't expect to do any big projects from the start though.

i5 4670k @ 4.2GHz (Coolermaster Hyper 212 Evo); ASrock Z87 EXTREME4; 8GB Kingston HyperX Beast DDR3 RAM @ 2133MHz; Asus DirectCU GTX 560; Super Flower Golden King 550 Platinum PSU;1TB Seagate Barracuda;Corsair 200r case. 

Link to comment
Share on other sites

Link to post
Share on other sites

On 5/23/2016 at 10:42 AM, Hamosch said:

All programs run from and must access RAM. From where else would it run and what else would it access?

And don't say caches, caches are part of the memory hierarchy used to hide the latency of RAM and are implemented in hardware and don't care what language you write in. Also writing cache aware code can be done in any language (ie take advantage of spatial and temporal locality etc..) 

 

7 hours ago, Nuluvius said:

I think that you really need to go and learn the basics of how a computer works at the fundamental hardware level to be brutally honest with you.

 

Yeah you are probably both correct.... Could have been a little more brutal to be honest - you went fairly soft on me.

I recall someone telling me that java code couldn't be an OS because of the way that memory is handles. After some rudimentary research which I should have done before pontificating - it seems as though it is since Java compiles into bytecode and not machine code and therefore it needs to run in a VM which needs to run in an OS. Is this correct? Sry.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×