Jump to content

What program language should I start with?

Dominik999
Go to solution Solved by macklin264,

Different languages are well suites for different purposes, so you may want to think about the type of programs you eventually want to write. For instance, are you interested in programming close to hardware, like developing drivers, or programming micro controllers like the Arduino? In that case, you should probably start with C/C++. Do you want to go more into the direction of machine learning and data science? C++ will work well for that too, but Python is significantly easier to learn and is very well suited for data processing and analysis. If you want to develop games, it depends on the game engine you want to use. For example Unity uses C#, while Unreal Engine (if I remember correctly) uses C++, and if you want to develop games without an engine all together (i.e. program all the graphics, physics, etc. as well), C++ will most likely be the best way to go. Finally, if want to do web applications or web servers, there's a wide variety of viable choices, such as JavaScript, Python, Java, C#, and many more.

 

In terms of the learning curve, my personal opinion is Python < JavaScript < Java <= C# << C/C++. Another thing to consider is that learning your second programming language is much, much easier than your first one, so don't worry too much about picking the "right" one right away. The ones that I have mentioned here all have practical applications, so you can't really go wrong with any of these.

Hello!

 

So, recently I just wanted to get into programming, put I do not know where to get started... before a few months I learned a little bit of C++....

 

One day I would like to make programs by myself that would help other people as well as me...

Link to comment
Share on other sites

Link to post
Share on other sites

I recently had the same idea. I went on Codecademy and started learning Python. The syntax is really straight forward and after some research, a lot of people were recommending it for a useful starting point. 

 

I'm following to see what others recommend though.

Link to comment
Share on other sites

Link to post
Share on other sites

10 minutes ago, Bakedpanda said:

I recently had the same idea. I went on Codecademy and started learning Python. The syntax is really straight forward and after some research, a lot of people were recommending it for a useful starting point. 

 

I'm following to see what others recommend though.

I made the decision to start learning C++ on sololearn.com

Link to comment
Share on other sites

Link to post
Share on other sites

Python is fine to start with, C++ is fine to start with (though it has a bit of a steeper curve since less is abstracted for you), java is fine, etc.

 

Most any OOP language is a good place to start, the important things to learn about programming are actually language agnostic, and if you can get comfortable in one language it doesn't take much effort to learn another. So worry less about the language, and just start learning. You're not locking yourself into anything.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

Why not keep up with C++? 

Link to comment
Share on other sites

Link to post
Share on other sites

Depends on what your ultimate goal is. Do you plan to make a living out of programming? Start with C and see if it is tolerable (so you can know if it is actually something you should make a living out of; it teachers the fundamentals of memory management in a much more straight forward manner than C++). If you just want a fun side hobby, Java, Python and C# are nice places to start depending on what you want to do with it. C# is good if you are windows for life. Python is great if you want to be able to scrape websites or make small applications super quickly. Java is good if you don't know what you want to do. 

Link to comment
Share on other sites

Link to post
Share on other sites

44 minutes ago, HPUser7 said:

Start with C and see if it is tolerable (so you can know if it is actually something you should make a living out of; it teachers the fundamentals of memory management in a much more straight forward manner than C++). If you just want a fun side hobby, Java, Python and C# are nice places to start depending on what you want to do with it.

While I don't disagree knowing C incredibly is valuable in terms of understanding, the idea that you would only learn java python or C# if you want to do it as a hobby is a bit ridiculous. There are far more java/python/c# jobs out there than pure C jobs. I didn't learn C until I was already a working professional, with a Java/python background from college.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

Different languages are well suites for different purposes, so you may want to think about the type of programs you eventually want to write. For instance, are you interested in programming close to hardware, like developing drivers, or programming micro controllers like the Arduino? In that case, you should probably start with C/C++. Do you want to go more into the direction of machine learning and data science? C++ will work well for that too, but Python is significantly easier to learn and is very well suited for data processing and analysis. If you want to develop games, it depends on the game engine you want to use. For example Unity uses C#, while Unreal Engine (if I remember correctly) uses C++, and if you want to develop games without an engine all together (i.e. program all the graphics, physics, etc. as well), C++ will most likely be the best way to go. Finally, if want to do web applications or web servers, there's a wide variety of viable choices, such as JavaScript, Python, Java, C#, and many more.

 

In terms of the learning curve, my personal opinion is Python < JavaScript < Java <= C# << C/C++. Another thing to consider is that learning your second programming language is much, much easier than your first one, so don't worry too much about picking the "right" one right away. The ones that I have mentioned here all have practical applications, so you can't really go wrong with any of these.

Link to comment
Share on other sites

Link to post
Share on other sites

C.

 

 

 

Longer answer (from here?

 

---------------------------------------

 

Woo-hoo, my favorite topic!

 

Here's a number of (unsorted) recommendations for a beginner:

 

1. Start with Common Lisp!

 

Pros: Common Lisp, being a very mature language (first standardized in the 1980s), is quite unlikely to get major API breakages anytime soon, i.e. you won't have to adapt new language features every few years. It is basically an "executable lambda calculus", so it includes a lot of the shiny lambda and closure features other languages are still missing. The REPL allows you to gradually extend code which is currently running (i.e. modify your applications while using them). There are great and free books for it, e.g. Practical Common Lisp and Wikibooks. Paul Graham said that learning and using Lisp will make you a better programmer.

 

Similar to Python, Perl and other popular languages, there is a shitload of libraries you can just include and use. The language ecosystem is, despite of its age, alive and kicking. SLIME is probably the world's greatest IDE for any language. Performance-wise, certain Lisp implementations can even be faster than C. Code examples: See rosettacode.org.

 

Cons: Due to Lisp's unique approach, it will be hard for you to adapt any Lisp knowledge to non-Lisp languages. Don't worry, there are a lot of other Lisp languages, e.g. Clojure and Scheme. You can even script certain GNU applications like Emacs and The GIMP in a Lisp language. C-like languages are an entirely different thing though.

 

2. Start with Perl 5!

 

Pros: Perl 5 is an ubiquitous language, it is a part of the standard distribution of quite some operating systems so there is a good chance that you can start right away. Its legendary CPAN directory includes modules for quite anything. Perl inherits some of its specialties from shell scripts, so if you have ever used the shell of a Unix-like system, you might feel right at home. Perl 5 is also rather mature, currently being in its 24th release and still being maintained, so it is unlikely that you'll ever have to change your working code. As Perl is a pure scripting language (there is no official way to create a binary application with it), all it takes to modify your code is a text editor. There is no REPL though.

 

There is, of course, a good Wikibook for learning Perl. I've taught someone the basics of Perl within one week, so it is easy to adapt without any previous programming knowledge. Code examples are available on rosettacode.org again. As Perl uses certain constructs from C-like languages, you can even learn C, C++ etc. with your Perl knowledge later; also, PHP was initially based on Perl, so if you're interested in PHP, learning Perl might help you here.

 

Cons: Some people say that Perl's syntax reminds them of a swearing Donald Duck. Yes, there are a lot of symbols (@#$...) in a Perl script, helping you to understand what a certain variable is (array, hash, string, ...) and what it is not. - With Perl 6 (very) slowly replacing Perl 5, the advantage of having a very consistent package ecosystem may fade over the next decade.

 

3. Start with C!

 

Pros: C is everywhere. If your computer has an operating system, it (most likely) also has a C compiler, even on niche systems like RISC OS and Plan 9. Due to this fact, C has a library for anything, it can even be a great choice for web applications. As C's language core is often called a portable assembler, C code is usually translated to very efficient machine code, making your code do exactly what you expect it to without too much fiddling from your compiler or linker.

 

Cons: The learning curve of C is actually a vertical line. Seriously, C is not your friendly beginner's language, it basically punishes you for even the smallest mistakes. This could as well be a positive aspect though, you will learn to avoid sloppy coding. If you are afraid to jump into cold water, you might start with C++ instead, C++'s current revision C++17 is rather beginner-friendly and (almost) every valid C program is also a valid C++ program, so you are able to slowly turn your C++ code into C code while you learn the differences.

 

Concerning Python: Please don't use Python. It is a horrible language, teaching you a horrible coding style.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Dat Guy said:

Concerning Python: Please don't use Python. It is a horrible language, teaching you a horrible coding style.

Please stop putting this boilerplate response in every one of these threads. It's unhelpful, and extremely biased.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, reniat said:

the idea that you would only learn java python or C# if you want to do it as a hobby is a bit ridiculous.

So this is not "extremely biased"? :)

 

All I can do is add my opinion here. Nobody in this thread has the ultimate answer for "which language is the best to start with?" which is, admittedly, a rather generic question. I give boilerplate answers to boilerplate questions. I see too many newcomers impressed by the loudest crowd, just to be disappointed. I consider it important to show them that there are different opinions.

 

However, I won't discuss this any further with you - at least not here. Please continue your personal opinions about my personal opinions by sending me a private message in the future.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, Dat Guy said:

So this is not "extremely biased"? :)

The idea that java/python/C# are best learned for "hobbyists" and not "real developers" is falsifiable. It's just language elitism, by suggesting that a new developer isn't a "real" programmer if they only know JIT languages or something, which is a harmful idea to new learners. The important skills in programming, the things that separate "developers" from "good developers", have nothing to do with the languages they know, and you can learn 90% of those key skills in any language. Things like modularity, knowing when to balance readability/optimization, maintainability, scalable/robust class design, etc, are all things you can learn as part of learning to be a good python or ruby dev, just like you can learn them (well, minus the OOP stuff, but C++ covers that slack) in C as well.

 

To be clear why I keep giving you a hard time on this: You are 10000% entitled to your opinion, but I feel compelled to respond each and every time because it is harmful to new learners to think that they should avoid perfectly good languages, or they have to start with the hardest language in order to be good developers. A person who might struggle initially with C/C++ might become a fantastic Java developer, and from there launch into a successful engineering career in many languages.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

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

×