Bjarne Stroustrup: The 5 Programming Languages You Need to Know | Big Think
Vložit
- čas přidán 12. 06. 2011
- Bjarne Stroustrup: The 5 Programming Languages You Need to Know | Big Think
"Nobody should call themselves a professional if they only knew one language."
New videos DAILY: bigth.ink/youtube
Join Big Think Edge for exclusive videos: bigth.ink/Edge
------------------
Bjarne Stroustrup is a computer programmer most famous for having designed and implemented the computer programming language C++, one of the most widely used programming languages in the world. His book "The C++ Programming Language" is the most widely read book of its kind and has been translated into at least 19 languages. In addition to his five books, Stroustrup has published hundreds of academic and popular papers. He currently holds the College of Engineering Chair in Computer Science at Texas A&M University.
------------------
TRANSCRIPT:
Question: What are the five most important languages that programmers should know?
Bjarne Stroustrup: First of all, nobody should call themselves a professional if they only knew one language. And five is a good number for languages to know reasonably well. And then you’ll know a bunch, just because you’re interested because you’ve read about them because you’ve wrote a couple of little programs like [...]. But five isn’t a bad number. Some of them book between three and seven.
Let’s see, well my list is going to be sort of uninteresting because it’s going to be the list of languages that are best known and useful, I’m afraid. Let’s see, C++, of course; Java; maybe Python for mainline work... And if you know those, you can’t help know sort of a little bit about Ruby and JavaScript, you can’t help knowing C because that’s what fills out the domain and of course C-Sharp. But again, these languages create a cluster so that if you knew either five of the ones that I said, you would actually know the others. I haven’t cheated with the numbers. I rounded out a design space.
It would be nice beyond that to know something quite weird outside it just to have an experience, pick one of the functional languages, for instance, that’s good to keep your head spinning a bit when it needs to. I don’t have any favorites in that field. There’s enough of them. And, I don’t know, if you’re interested in high-performance numerical computation, you have to look at one of the languages there, but for most people that’s just esoteric.
------------------
Follow Big Think here:
📰BigThink.com: bigth.ink
🧔Facebook: bigth.ink/facebook
🐦Twitter: bigth.ink/twitter
📸Instagram: bigth.ink/Instragram
📹CZcams: bigth.ink/youtube
✉ E-mail: info@bigthink.com - Věda a technologie
He actually deserves to say "C++, of course".
wrgg
ofc he did, because it's the language that he created, so obvs he's gonna put it at the top of the list
@@TheHippyHoppyHippo yes but also c++ is arguably one of the most important languages to learn
@@cpzd83 and one of the most powerful if not the most powerful one (not talking about assembly)
@Cruz Jayson soo this is how you bots work huh?
00:47 "Python for mainline work." Talk about predicting the future. This video was 9 years ago.
I used to have some prejudice against Python for being so easy to learn and ignored that programming language for years, then I decided to do some research and learn and holy f... what a awesome language, it even made me become interested in data science/machine learning.
@@Loug522 me too. I really didn't take it seriously.
@@Loug522. Yeah, I am currently learning Python as a hobby. It's really unusual the a good beginner tool in a given field is capable enough to do a majority of hobby projects you can think of. When I get properly comfortable in Python, I will almost certainly learn another language. But it's still nice not to feel limited in my first language.
I am still considering what my second language is going to be though.
I know, right? Python can do so much, it's easy to learn, it's well-supported and documented, it's used by many known large ICT companies like Microsoft, Facebook, Google and so on. You can do scripts, you can do server-side code, you can do small games (pygame etc.), you can do GUI-apps (pyqt, wxpython, tkinter etc.), you can do mobile games (kivy) although that isn't too common yet but I'm sure it will be since python has skyrocketed in popularity in the recent years. And then there's Dash that came a few years ago so if someone is intrigued by React but doesn't like JavaScript, then no problem.
I think Python is in a similar situation with JavaScript: both have been increasingly popular for such a long time that there's been some real innovation and cool new project rising. For instance JS was first just a client-side browser language. Now it's also used in servers, also used to make mobile apps and also used to make desktop apps.
My prediction is that the same thing will happen to Python and it's already happened to some degree. It will get more and more functionality in the upcoming years.
The only thing holding Python back is its speed but even that isn't a huge problem unless you're doing heavy 3D games with physics etc. since people have SSD, powerful processors etc. and if your code is running on a web-server, then the limiting factor is the internet connection, not your processor or harddrive. If your internet is like 100mbps, then that's the max. speed for stuff to happen so you won't achieve any nanosecond results anyway :D
Python was already fairly popular 9 years ago. And already one of Google's blessed languages.
C/C++, C#, Python, English.
Lol.. I would choose English first....
VirtualCoder who needs language when you speak binary :D
VirtualCoder
Haha. This reminds me of a guy who wanted to learn programming, but knew zero English and wasn't really interested in learning it. Everyone pretty much just told him to give up and find something else to do.
VirtualCoder can you make a game with English ?
KingCitaldo125 If you haven't noticed yet, all high level languages are based on it.
If you aren't going to solve a problem using a programming language, don't learn it, most people think if they finish a codecademy track, they will be "programmers", programming is about problem solving, and not just being able to write a function in a given programming language.
+Souhail Kaoussi to solve problems like what? ,and what program lang you advise for me?
+Souhail Kaoussi Not sure what you mean as your sentence is ambiguous. Languages have idioms. Being forced to try different idioms is very healthy. Java and Python are for instance very different in how solutions are structured. If you know only one of them you will struggle with whole domains of code bases and you will probably make some poor choices when asked to solve a real problem.
So CORRECT,IT ABOUT THE PROBLEM REDUCTION THRU ALGORITMS AND PROGRAM DATA
+Souhail Kaoussi Ok, I have solved some problem. Now how to translate it in the form of a program. And that's another problem. Get it?
Don't be difficult.
For some weird reason I find his voice soothing. I wonder what it would sound like if he would do "The C++ Programming Language" audio book, including the examples.
He HAS A Very Calm and Composed Temperment
it would be a year long
@@esmondlucan4269 Hes worth 25+ million dollars. He probably has a very very chill life, probably wakes up, makes coffe, goes and sits by his garden and codes without anyone to bother him.
What most of us find is that by learning how to get things done in a vastly different language, you learn a deeper understanding of your primary language. Its strengths, its limitations, its biases, and the ways it has biased your thoughts and designs. All this and you learn new and useful techniques to apply back home.
I personally didn't REALLY get English grammar until I took a foreign language. It's really the same. Perspective begets wisdom.
I am replying this 8 years later but what you say is so true! Lots people say that once you know one language you'll learn many more, but almost nobody says that when you understand how to do something in many different ones you'll truly comprehend your primary language in a really deep level.
I'm a Node.js dev now, I changed from C# and .Net 5 years ago. And now, I'm learning Fortran and Golang in university. Recently, at my job I just got in touch with Java. Some years ago I was too arrogant to accept that I'd learn such "old and ugly" languages like Fortran and Java. Now I can say that all of them are cool, and I really like all of them. You're too right: Perspective begets wisdom.
I love how he says "keep your head spinning when it needs to", exactly what some people need to hear:D
For me, it's a managed language (C# or Java), a compiled high-performance language (C, C++, or D), an interpreted script language (Python, Ruby, or Lua), a functional language (I like ML-based ones like F# and OCaml), and for sure have a suite of web technologies under your belt (JavaScript, CoffeeScript, or TypeScript; HTML or any of its template engines like Jade; CSS or it derivatives such as SASS or SCSS; and a serialization format such as XML, YAML, JSON, etc.). It's also good to know a LISP (Clojure is a great place to start). A good programmer has a wide swathe of experience and is always willing to learn something new. Clinging to one language in the fetal position and resisting new things only harms you long-term.
“managed language”?
@@RonWolfHowl Probably has a strong ecosystem of libraries
Agree with this take. Learning different types of languages broadens your knowledge and makes you a better programmer in general.
@@RonWolfHowl The term "managed language" refers to language implementations where the code is primarily executed within a heavily managed runtime environment, such as the JVM or the Microsoft CLR.
Java is also an interpreted language, hence, JVM.
As he said: While learning one language, you usually learn some others implicitly. This is very true for Java and C#. The important / difficult part is getting familiar in an API.
Haha it’s been 10 years but can you tell me what is API?
@@Abon963 I think what he means is getting familiar with using the common libraries in the ecosystem.
...in addition to c++, Java, Javascript, Ruby and c#, I also recommend English.
Lol.
agreed with you, but for me if I can communicated with many people
that's great and enough...don't need to learn about professional language for English :)
No woris m8 . I alredy kno how to egnlisch .
Нахуй инглиш! ^_^
MyMind.english=null;
¿Y a quién le importa el inglés? ¬¬'
Kinda depends on what you are.
A programmer? A scientist? An engineer? A mathematician?
Programmer: Python
Scientist: Python
Engineer:Python+others
Mathematician: Matlab/Python
@@xtremeloverboi6066 good luck running Python code on a 8bit microcontroller.
@@embeddedbastler6406 shit I have to go for assembly or C
@@xtremeloverboi6066 Engineers and programmers don't have hours on hours to debug code because python is interpreted, compile time errors are infinitely easier to handle. There are multiple areas where python isn't well suited.
Games - C++ > Python
Game engines - C++ > Python
Embedded systems - C++ > Python
Real time heavy applications - C++ > Python
Powerful neural networks - C++ > Python
Reliable and fast backend servers - C++ > Python
Operative systems - C++ > Python
Operative systems' kernels - C++ > Python
Hardware drivers - C++ > Python
Fast GUI applications, namely native ones, e.g for Desktop Environments - C++ > Python
Web browsers - C++ > Python
Compilers - C++ > Python
Media access - C++ > Python
Graphical animation - C++ > Python.
Python isn't a *good* language, it's just simple and fast to *develop in*. The only reasons why people use it "everywhere" is because they don't know any other languages. Data scientists aren't programmers, only programmers and engineers actually use what their area of work truly require.
@@valizeth4073 Thanks for the reply man. I myself don't code much in python. I am a full stack developer but seldom use Django. Although I admire how much they speed up the development process. C++ is much much faster than Python performance wise. Also I don't believe in one size fits all perfectly. It may fit but it might not perform that well.
Why am I not surprised he picked c++?
because he's the one who created it :p
มนตราวายุ ร่วงโรยดุจสายฝน Very good sir. You win an internet point.
Brock X yay ! finally I got it
มนตราวายุ ร่วงโรยดุจสายฝน Congratrs!!!
perhaps he thought "yeah I must to defend my fucking languaje".
I agree 100%. One thing that is not really that necessary, but I think is really cool when you already are a decent programmer is to also look into one assembly language. It will most likely not be necessary for your job, but I found it pretty cool.
if you can learn C or Java to a level of complete understanding then you can learn anything. I spent 5 years studying/using the 2.
Javascript took me a week to learn and Python took me less than a month.
Languages are tools, use the correct tool to build the correct parts of your system.
Javascript does NOT take a week to learn. :) Especially if you are comming from a classically inherited language. It gives you the illusion that it's simple, but if you want to create trully powerful and vast applications with it it requires a lot of literature to be studied.
blissB2 Exactly, I am still trying to learn Javascript after a career of using myriad of languages including C++, Java, VB, PL/SQL, even COBOL. I discovered Javascript can surprise you the way no other language can. Maybe it is because of its C syntax people expect it to behave C'ish and when it gives crazy errors we accuse it of being immature while actually our learning process of it was immature.
Anis Matar Indeed. JavaScript may be the most powerful language at this very moment. It's aplicabiltiy on the client side and on the server side is vast. The node environment is crazy fast, works wonders with the very powerful and reliable nginx http server and allows for huge and powerful apps to be made even if it is single threaded .However you can always simulate a multi-threaded environment in node just by..starting a new node execution process. The beautiful thing about developing in JavaScript are the libraries and frameworks. There are thousands of them. And being able to construct a project with tools like npm (equivalent to ruby gems but imho more powerful) and task runners that automate a lot of the process, like Grunt and Gulp is just dreamy.
The only language you can use to program rich applications, REST applications while programming the web browser. The synergy between server side JavaScript and client side JavaScript can be very well noticed in the socket io framework as well as in many others.
And Microsoft took a step forward.You can program native applications to be run in the windows 8.1 and 10 environments using only HTML5/CSS3/JavaScript on a browser-like-platfform that behaves almost as rapid as a native app.
And whats even more beautiful are projects like Phonegap which allow you to do basically the same thing..but for handheld devices running IOS, Android and Windows Phone. Compiling an HTML5 application to run 'natively' on such a platform is only one click away. And you need not know languages like Java, C# and Objective-C to program your dreamy app.
And there is a lot more. :)
blissB2 You should also check Facebook's React and React native which makes new generation of very capable Javascript hybrids for mobiles and tablets possibly replacing cumbersome Phonegap.
If you program web, then Javascript is the only one language needed and actually on client side there is no other anyway. For node,js one can utilize concurrent clusters for parallelism (not multithreading, but concurrent) and on the client side if anything blocks UI then it is most probably an excellent case for concurrent web workers. That combined with today's amazing speed of Javascript engines (quarter or half the speed of Java for example) makes it an excellent technology to invest your time and energy in.
However, one should be clear Javascript has its intended purposes but it will not replace Java and .net C# for business applications. Most probably it will complement the existing investments for speedy web interfaces and social networking but those languages are more suited for maintenance of behemoth sized business applications.
C++ on the other hand, maybe it is used by one or two programmers in a thousand for actual low level work (near the kernel) but I really don't see how can anyone recommend it for business applications knowing how many nightmarish crashes people suffered in the past due to its uncontrollable pointers operations.
Anis Matar !
the legend himself..........love his calm personality
That would depend upon the time when you initially started programming. I'm 43 and have been programming since age 12. The difference between that time and the current, is RAD. These IDE types allow the developer to deploy a project across many native code based using one language. So, today you're correct in that assumption; however, back when I came around you had to do everything yourself. Rapid Application Development has its perks, but decreases the roundness of the programmer.
i had this guy as a professor... it was awesome
My top picks: C/C++, Go, Rust, Python, JavaScript
Honorary Mentions:
- Java
- C#
- Basic Shell Scripting
Arguably, you could swap JavaScript with the former two of your honorary mentions
Bjarne Stroustrup looks like in a movie when they have to make the lead character old for a scene or two and put a bunch of makeup on them, but it still just looks like a young person in make-up rather than a real old person.
It really depends on what you want to do. I'm in my final semester before I graduate with my Bachelor of Science in Application Development. While there are fundamental differences such as garbage collector in Java. Java/C++/C are all very similar languages. Java being important if your developing for android or oracle based systems. However, if your doing web development - This is entirely seperate category. Although you'll find PHP easier to learn after C++.
Here's my list:
Assembly/VHDL (some type of HDL) so critical, must be your strong point. Know this better than any of the others.
C
Python
Java
Haskell
“I haven’t cheated with the numbers. I rounded out a design space” Bjarne brining Boolean to the real world.
6 languages for me
C++ / Qt5 (for most of my apps)
Python (for easy quick scripts)
Html / css / javascript
R (for quick stats)
SmallTalk to learn the originals concepts of OOP: encapsulation, isolation, decoupling, modularity, reusability, generics etc. Lisp to learn about metaprogramming, recursive data structures and how to process/construct/descontruct then, and other common functional stuff. Erlang to learn to deal with concurrency problems in a elegant and powerfull way, and more functional stuff. C to learn the do it yourself stuff. Assembly to learn the hardware stuff. (Bonus: Rust to learn a cool contemporary language that have a compiler that hates you but you love it anyway)
alone c++ will take half of your youth to master it!
nop
@@carloshernandez8060 yes
C++, C#, Java, Prolog, Haskell are my 5 picks
Oh thank you! I didn't know if I was going senile and inventing things in my head; I had this doubt that there is a non TC language out there, but I didn't know what it was or what it did. You're absolutely right, I stand corrected.
Bot
Well the languages I've noticed to be most useful in my field of study are:
Assembly (not much for coding but underline understanding and maybe decoding and debugging),
C,
C++,
Python (for simulation softwares) and
VHDL (Verilog would be easier to learn probably but it reminds me so much of C that it gets me confused as VHDL is a dataflow language and not a procedural language like C.)
Guys, do you recommend Rosetta Stone to learn this languages?
You could get a job in Indonesia, if you learn Javanese.
this.
At this point I would not recommend Rosetta Stone for learning any languages, not since the program went solely online. Mind that I'm trying to learn Japanese with that software, but my copy is from before that design mistake.
Coincidentally Rosseta _Code_ has several sample programs in several languages
Google translate is better
I think C# will help you a lot to understand programming languages and it will keep you motivated as well, because the things you can do with the amount of code you have to write and understand is relatively little.
That's its problem. C is the way to go since it doesn't hide anything from you and forces you to learn how everything actually works.
Well, understanding memory addresses and referenced instructions certainly helps with grasping the concept of pointers and function calls. Else you leave a black magic hole between the HLL and the actual underlying machine it runs on.
It really depends what you want to work with. If you want to develop android then you'll need a good grip on Java. If you want to write device drivers then C is the way to go. If you want to program Robots, a basic understanding of C++ is quite enough, if you know how to handle classes, structures and pointers you're good enough to program just about any robot. I'm planning on getting a fair grasp on Python somewhere in the near future because I've seen it used by a number of companies and it has done the job quite well, the terminal application I use is written in Python and the functionalities it has are just amazing (Terminator, for those interested). But yeah it really depends on what you plan on working with. It's good to know as many languages as possible, you never know who you get as an employer :D
the only guy i know with very little hair who has Way too much HAIR!!!
Prominent examples of mostly-"functional" programming languages would be Haskell, Scala, and OCaml, but it's more complex than that, because other languages like Python and JavaScript can be used "functionally" as well.
StackOverflow has a page entitled "why functional languages" with a good discussion. (CZcams won't let me post the link here.)
Commonly stated but hogwash. Functional languages are fundamentally different way of programming, not just another style. Being able to write map and reduce or using various lodash utilities does not functional programming make.
Depending of what you are doing:
For me a lot more important than C++ Java are:
Python (incl. numpy/scipy) package, R, sed and Shell.
Perhaps there will come a point when I will need SQL.
Yes... thank you for double commenting. I get your guys' point, it just seems like a trivial distinction in this context. And I don't know if you can calculate 5 + 5 in HTML since I barely know it; you could certainly call a javascript function to do it.
Wow, Bjarne advocating that you should learn Java and Python... now I've seen it all..
I know english, hindi, telugu, punjabi which language is java?
ashish singh java is island language in indonesia
@Jonah Jameson, I would focus on you if you were a girl.
@Arif, java land :D
ya java land
ashish singh You are a wise man .
Instead of programming language, I think a better suited comment would be which paradigm e.g. functional, OO, procedural. Understanding the paradigm well will make understanding language secondary.
the Infidel
Good learning sources of these languages also teaches their main paradigm and more.
the Infidel
Got that covered in two semesters of CS: Haskell, Assembler (SPIM) and Java.
@@MrCmon113 I Hate Haskell.
Yeah, I hear Bjarne knows a thing or two about programming so I'm going with his statement that 3-7 is a good range. Many people can have a very long and profitable career knowing only three. Thing is though, over the years, which three will change.
In 2020, descending order: JavaScript (also implies HTML, CSS), C#/Java (C# also implies PowerShell), Python, C++ (does not imply C(from my experience with those who claim to be "C/C++" programmers - I've found if someone is actually familiar with both they consider them as separate languages)), SQL (implies any variant).
He explicitly said "pick one of the functional languages".
In college I learned "Pascal", which was suppose to be the "language of the future". I also learned Basic, C, Fortran, Snobol, LIPS, Algol, a little Ada, etc. Over the years I only ever ended up using C for my career, doing mostly embedded programming. I have been exposed to C++, but wouldn't call me self adept in that language. I've learned JAVA and love it. My point, I guess is that some languages, over time, will die away in popularity, and others will have longevity.
and how it is now?
@@SonitPL depends on the project. Android, for cell phones, for example, uses many different languages in the same project. C/C++ is best for embedded, but then you can bridge over to other interpretive languages from C/C++. Interpreters are certainly slower.
No one is using pascal,cobal,fortan that's 90s stuff
@@Verified_Hits Fortran is still actively used in astrophysics by a large number of people. Most of them rather keep their old Fortran code that works instead of spending months re-writting it in a new language they're not familiar with.
@@Verified_Hits cobol is still very active.
This man reminds me of John Carmack. He's such an engineer. He's been doing his thing for decades, and has accumulated so much experience and knowledge, but he never lost that enthusiasm along the way. As with Carmack, I could listen to him for hours.
You're absolutely right.
This would explain all the driver code I've seen written in F#.
(I keed.. I keed.. functional programming is fun but it's strength is formulaic. This is a tremendous advantage when you need to, say, use CL for some scientific application. But you'll never see most of us use it because it's terrible to maintain such a creature when you're mainly concerned with IPC, managing state, or the dozen other things most of us care about more than mathematical algorithms)
I have 10 years of C++, Tcl, Perl and Python under my belt, and I am indeed struggling with Haskell ... but I'm determined to go through with it as I really like the language so far, even if it's giving me constant headaches.
I've heard a lot of people say that every programmer should know at least one functional language as it's supposed to totally change the way you approach problems.
Hey bro it's been another 8 years how's it been?
I would like to know about your 18 years of coding journey as well!
update after 10 years?
@@Golden_AceDBD He is dead
Assembly Language, still very important in many areas!
7 years later ...and still very true.
True. However, you are stuck with whatever processor it's for.
@@baruchben-david4196 To me it's more about understanding how to help the compiler and see if its done a good job at your bottleneck (on your target platforms). Also when you want to know the difference between syntax A and syntax B, you can compile and look under the hood. It's no longer a hand-waving argument.
Personally,
Python - First language that can cement an understanding of how to break down/tackle problems without overloading you with gotchas and quirks
C++ - Introduces a much better understanding of how a computer works and forces you to structure your code well
An assembly language - This is really the ultimate in appreciating what goes on "under the hood" and it really gives context to the behaviour you see at higher levels
LISP (or clojure maybe. I'm yet to give that a go) - This is going off the beaten track but LISP really helped me see the complexity you can develop from a very simple language. It gives a more functional approach to problem solving too
Java - This is more of a cop out for me. It's a useful language to know because it's popular. However it doesn't teach anything on top of the others. If you understand C++ and Python, you really should be able to pick up Java quickly.
Another language I would throw into the mix is Rebol. Which is amazing for beginners and also for expert engineers.
An off shot of Rebol is red as both a very similar if you can use one then you can use the other.
Quire reasonable: C++, Java, Python and C# and you have your backend covered. Add JS and one of his frameworks and thats it.
Also, quite impressive: this video has almost 9 nine years and Stroustrup was already talking about Python as "mainline work language"
Python has existed since the '90s, dude. It's not like it appeared all of a sudden during the last 5 years or something.
@@alfredomulleretxeberria4239 but it wasn't as popular 9 years ago, stupid
We wouldn't need all these fancy languages if people had really got to grips with Sinclair Basic when they had the chance.
10 REM Calc Fibonacci using Sinclair Spectrum 16K
20 CLS
30 LET a=1
40 LET b=1
50 LET t=0
100 PRINT a;", ";
130 LET t=a+b
150 LET a=b
170 LET b=t
190 IF a
Stop it - you're getting me all excited. :-)
Sam Pollard
1 REM Approximate Pi using
2 REM Gregory-Leibniz series
10 CLS
20 LET p=0
30 LET a=8
40 DEF FN d(p)=(p/101)-INT (p/101)
50 PRINT "Thinking..."
60 FOR f=1 TO 32768 STEP 2
65 IF a=8 THEN GO TO 90
70 LET a=8
80 GO TO 100
90 LET a=0
100 LET p=p+(4-a)/f
110 IF FN d(f)=0 THEN PRINT ".";
120 NEXT f
130 PRINT
140 PRINT "Pi approximated to ";p
150 BEEP 1,10
160 STOP
Beautiful.
i can almost read that
C (low level), C++ (higher level yet fast concepts), Python (powerful general purpose scripting and ML), JavaScript (web) (this language is kind of easy tbh, adjusting to different frameworks and web engines is bulk of learning it practically), Haskell (just learned it for uni), Assembly (wanted to see what my C and C++ code evaluates to) and a couple more.
in full honesty, you really only need one or two though to know at a high extent, because apart from C++ and C, I never use anything else practically
The main idea is not how many languages you have tried to programming on, but in your understanding (from low - to - top):
1. CPU or microcontroller's architecture principles, command formats & tact-execution;
2. MEMO/IO bus cycles, interrupt handling;
3. Various OS organisation, memo management, interprocess communications, file system organisation;
4. H.Level Language text files Compilation - Linking of EXE's and DLL's(LIB's) principles;
5. Virtual machine, TCP/IP stack, WEB.
I think that it would be useful to define some programming styles, or "types" of programming:
1. Procedural programming - what almost everyone learns "first", and most programmers learn "only": "for" loops, mutable data, structured programming, etc, etc.
2. Object-oriented programming - inheritance, encapsulation, polymorphism
3. Functional programming
- immutable data, programming by composing and combining functions, which are first-class citizens in the programming environment
4. Logic programming - programs in which a program performs logical operations on a body of knowledge
5. Data query programming - manipulating data in a database
Given the above list I'd suggest:
1. C - because it has become ubiquitous, NOT because it's a "good" programming language.
2. Smalltalk - in part because the differing syntax (such as it is) and programming style will make new programmers strain their brains a bit, and in part because learning it will teach someone to actually *understand* object-oriented programming.
3. Clojure - again, the different syntax of Lisp, in general, will force those learning Clojure to work a bit, mentally. It's not your mama's Same Old Programming Language and that's a good thing.
4. Prolog - because having a programming language which enables logical deductions to be made might mean more application of logic in the world. And having a program give an unexpected (but completely logical) answer may force people to develop more understanding of their problem domains.
5. SQL - partly because it has become ubiquitous, along with relational databases, and partly because it forces programmers to figure out how to work with sets of data - which can also be helpful in the "functional programming" paradigm.
Fortran, Cobol, Algol, PL/1, Pascal, C, C++, Perl, Java, Python, ... 47 years.
Lisp 58 years
Javascript...3 weeks.
hahahahahahahhaha what ?????????
hahahahhaha r u crazy
58 years ???
wow
4 weeks now... LOL
And Assembly, any platform. Just to remind you what all others end up being translated to, so you can tell serious optimizing compilers from the rest of the bunch.
Coming from Delphi. C# was easy to pickup. Thanks Anders Hejlsberg
A professional is a person who earns their living from a specified activity - regardless of how many programming languages you know.
5? There days you have to know frameworks, not just languages. Knowing just one framework is an incredible feat!
If you can use Assembly, C/C++, and HDL then you can use any other languages.
Programming 2.0 (DNN) is also important.
Class Abstractions Meaning how Declarative Program data are classified by a compiler as not to look like a IMPERATIVE line by line Program for representing a particular Object,example LIKE a Java Class declaration
Java technically could be called C--
HHAHAHA
+TheProfiler What? How? C and Java aren't even remotely related to each other.
+Tom Cassidy Just because a portion of the language was written in C, it doesn't imply that the language is related to C. C is a very non-object-oriented and low-level language, while Java is the exact opposite of that. Java is more like C#, if anything.
Simon Farre What? No. Someone was comparing Java to C, not C# to C. I was trying to point out that Java is much more similar to C# than C.
No need to use the loosest definition, they are actually quite similar, when you compare syntax and what OOP concepts you may express. They feel inherently different from things like Haskell or Scheme, because they follow different paradigms and developed a different syntax for that.
As mentioned, the key is to study various programming paradigms rather than just some hard # of languages. Functional: Lisp, Haskell, ML. OO: Smalltalk. Dynamic: Python, Javascript. Managed: Java, C#. Concurrency: Erlang. In my opinion, the single most important to be a good programmer is Scheme.
If you learn a static, dynamic, functional, OOP language, the only thing that differs from that is syntax, except for maybe memory management.
Created C++ and recommends Java alongside it 🎉 makes me feel solid
1 Lisp, 2 Lisp, 3 Lisp, 4 Lisp, 5 Lisp.
If you will master Lisp all other existing languages are only few macros away.
No.
*****
There are more C dialects: Java/C#/C++/PHP/Rust/Go/.... and nobody is complaining. Language is just a tool. The less dependent on committee the better. A good language allows you to shape itself according to your needs, C++ is like Soviet Russia - it shapes you.
1 Common Lisp 2 Scheme 3 Clojure 4 learn more Lisp 5 learn more Lisp
Just learn Scheme and reinvent the wheel many times until you get a working SNOBOL interpreter.
Lisp is a stupid language that is too tied up within itself to be understandable by most human beings.
So I'm in college right now, and I learned Python before coming. I think Python -> Java -> C is a great way to kind of learn the 'big picture' and narrow in. Of course, Java and C were a part of my coursework so it is a bit naive of me to say that this is a "superior" progression, but it worked well for me. I don't know what language I want to learn next. I think I want to try more front-end programming, so I'm thinking HTML/CSS or JavaScript. Does anyone have a good entryway language to learn for more front-end programming? Thanks!
Typescript
My picks are C++, Typescript, Rust, Elixir, Haskell and Python
Covers most of what I need to do.
And sometimes Dart as well
Have a play with zig too, it's the only thing I've seen that fits nicely as a straight C replacement.
Much respect for a great guy, but, I learned, and used, Fortran, Basic, assembler, COBOL, Pascal, C, C++, Java, JavaScript, Forth, and machine code - right down to the bare metal.
But all that really matters are the algorithms. Then you can do it in whatever language is best for the job.
c++, java, phyton, ruby, java script
english
@@krystof7059 Which version, English, English++ or English#?
And you better be able to pick up new languages on the fly if you want to have regular meals in this racket boys and girls. The last job I had was maintaining e-commerce sites. Guess how many skills that took? The job before that I was in a Visual Basic environment writing software for a resort management company. Guess what I'm doing now? I'm writing tools in Access 2003 using VBA that runs a FACTORY! That right. We are running a manufacturing facility using freaking ACCESS! So you see, you never know what you'll have to roll into. So forget "languages". You better be a versatile problem solver that can learn new things on demand, reverse engineer shit code to create useful solutions, AND spin straw into gold, LOL!
+Todd Cannon If i had to work doing VB applications and working with access I would quit and go work in the fast food industry.
+Carlos Sanchez Don't think it hasn't crossed my mind, LOL!
If you can pick up languages OR software fairly easily (or with a lot of effort but short time span) then they both take care of eachother. The mentality there helps and the more languages you use and corporate software you become not only familiar with but also have mastered the power-user aspects of, the more likely you are to get the job that the next equally qualified person could have gotten.
And they try to tell us that we are silly to put things like Powershell/Office/Maya/OpenSourceTools/AdobeSuite on our resume but all of my corporate jobs have involved some modicum of knowledge in programming macros for office products, familiarity with how they react to COM objects, using tools like ImageMagick in your software or scripts, and photo-editing knowledge with programs like Gimp/Photoshop/Paint.NET.
That makes a really large and costly fix turn into a quick and cheap powershell script with use of tools that have been tested by thousands or millions of people. Cheap QA :-)
Developers/Engineers/Architects/etc could all do themselves a lot of good learning how to use critical software that are used in open-source projects and/or internal corporate powerhouses. LIke you said - Languages aren't everything - but they do help (they've found that like speaking languages, the more you learn, the faster and more efficiently you learn new ones).
1:40
Lua. Just do it, it's like a throwback to BASIC era sometimes. Refreshingly so. I'd swap out Python with PHP, too.
Well in my opinion - Java(with kotlin), Python, C++(start with C), (Html,css, Javascript) Typescript, Database- handling. And also 2 or 3 framework would be beneficial.
"C++ of course..." XD
i only heared 3 languages ie.
c++
Java &
Python
then others 2 ?
Also Javascript. Ruby
Inheritely, if you know Java you also know quite a bit of C#.
@@sekgo1265 If you know C++ C# won't be a big problem.
Not current on all of them, and not learned in this order, but in 36 years of programming: BASIC, FORTRAN, C, C++, Pascal, PostScript, Javascript, Java, ActionScript, 6502 Assembler, Swift, a smattering of Objective-C.
My 5: Java, Python, C, JavaScript, and (((((Lisp))))). I have varying experience from all (Java the most of course), but would really like to play with others more, particularly python and JS. I’m a big fan of clean syntax and pretty code.
What is the advantage of LISP?
What does "knowing programming language" really mean?
Even kids know how to move pieces on a chessboard. Does that qualify them for "knowing chess" ?
MrVoayer No, just like kids can move chess pieces randomly, I can write shit and call it c++. But on the other hand if I know how to move and use the pieces correctly, just like syntax and solving a problem in programming is, then yes, you "know" it.
Matt Fischer The way I look at it for a language of C++ complexity you need several years of heavy programming to reach the level of expertise that you may say you "know the language". Five such languages could easily mean 15 to 20 years of heavy coding. By that time you can't remember how to declare a variable in the language you first started with let alone be able to say you know that language any more.That's why I find such an advice for having to "know" five programming languages simply preposterous. Having extensive experience with several programming languages is advisable, though.
MrVoayer
Learning to play chess is not hard. You can do it pretty quikly, becoming decent and better than most of the population takes more effort, but isn't the biggest challenge. Becoming good at it takes a lot of time and effort.
Mastering it? Most people will never master it, but becoming very good and efficient at it takes some real dedication.
When he talks about learning languages I really doubt he means becoming an expert at all of them. Familiarising yourself with multiple languages will make you able transition to new languages and new ideas quickly. This is a field that's constantly developing and getting new tools and updated paradigms. I'd say these days it's more important to become adaptable than mastering 5 languages.
Obviously you should become very proficient at least with a couple, but don't over do it.
+MrVoayer C++ is a HUGE exception, any other language isn't nearly as complex, and a lot easier to get proficient in.
+Toveri Juri “jack of all trades and master of one”
I love his hair LOL
😂
brain >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> hair
No electricity left to give the hair's static electricity
I wasn't saying Java or C# were functional, I'm getting at if you're gonna write a driver it basically comes down to which c compiler do you like.
As for functional languages not having practical code reuse I have to bring up lambdas are the ultimate form of abstraction. Almost any pattern can be generalized to a higher order function.
I've been struggling with Haskell, lol! I've never looked at Clojure to be perfectly honest. The languages I know are C/C++, Python, and Jave. I would consider myself a novice with C because I'm still learning about data structures and all that. My latest project has been to create a dynamic array in C. When I get better with Haskell I really would love to be able to tie Haskell and C together into a fun project. Happy coding!
Did you find learning Haskell either directly or indirectly useful in your career?
Well, can we all at least agree that XML is a bad idea?
XML is a Markup Language, not a Programming Language.
Yes, I understand that. I use it, and I hate it. It needlessly bloats everything it touches needlessly.
Bloated sentence: "It NEEDLESSLY bloats everything it touches NEEDLESSLY".
That said, you're right it does. Still I couldn't face webdev without ajax.
...see? It even makes you talk redundant in your speech. That's how bad it is.
The only time I use XML is to request using jSon as an alternative to XML. haha.
Fortran for numerical/high-performance programming
Rust for system and embedded development, Elm for web apps, Julia as Python replacement and Scala, F# and maybe something like Go for the rest
So good to know that even Bjarne Stroustrup thinks some functional languages can keep your head spinning.. Even when I got use to haskell, it still kept me on my toe's.. I think I'm going to have to revisit the C++ days. C# has consumed me.
Oh come on! One should start at assembly, and work their way up :D
One does not have time for it these days, unless they are 10 years old sort of genius
I do most of my programming in assembly language, mostly for embedded applications these days. I just love having total control of the machine and I don't like compilers getting in the way. I'll never make a million but I don't care - it's all about having fun.
Grab the debug command and use the a and u subcommands. Better put in nop's between sections of code and don't forget to write your program to disk with the w subcommand.
Yes, I agree - I interpreted the list as C++, Java, Python and one of the functional languages (e.g. Haskell, Lisp). Knowing those, you can't help but know a little C, Ruby, Javascript and C#.
That's only 4 languages though, so what exactly the list of 5 was supposed to be, I'm not sure. As a list of 4, it looked pretty solid to me, but I guess I misinterpreted it. :)
some assembly required
"C++, of course"...
C/C++, Haskell, x86_64 assembly, OCaml
Just an idea but pick languages from different paradigms
1. C++ for a good background in OO.
2. HTML for a good background in all the tag based languages.
3. Lisp for a good background in functional programming.
4. Assembly because it helps in all of the above.
5. Write your own because then you'll be cool like Bjarne!
If you know these languages you basically know 100's of others. Java, Python, C#, machine code, Scheme, XML, XAML etc. etc. They're all just different accents of the above!
1) C, 2) Scheme or Lisp or Clojure, 3) OCaml or Haskell 4), Python or Ruby 5) Prolog.
With all due respect to Stroustrup, being a good professional developer is so much more about having a feel for algorithms and logical thinking than about which syntaxes you know.. For any good developer learning a new language is relatively easy. Learning the logic behind programming is the hard part. He gives some nice examples of good languages to start with, but I don't agree with his basic premise.
then i'm sorry but you just cannot call yourself a complete programmer. You say this as you have only been exposed to imperative programming(c,c++,java,python,js,etc). Have you ever tried haskell or erlang. Its not just syntax, these languages are grounded in lambda calculus.(superior to imperative style). So unless you understand closures,monads,tail recursion,etc, you just cannot call yourself a complete prpgrammer
Sanjith Joseph a true programmer, is one that creates with what he knows, not one whom knows the most.
one can know ever programming language and do very little with it, and one can know one or two languages and do heaps, who is the real programmer.
***** Your definition of a programmer is highly utilitarian. Doing heaps is good, but being stuck to a single programming language is very narrow and restricts thinking(not just knowledge). Gaining an understanding of different paradigms broadens ones mind. Also, today's world requires knowledge of multiple platforms/libraries/languages to develop full stack apps - client android/ios app, server backend, presentation layer, front end, db layer,etc -- all require juggling multiple technologies. So sticking narrowly to a single lang is an impossible. Also, this is not just my opinion, google out all the greats - Norvig, Knuth,Alan Kay etc - all the experts advocate learning multiple paradigms...
Sanjith Joseph i'm talking about the term of a true programmer, as in i was saying one that does what they can with code is instantly a programmer.
Bart Guliker It didn't sound to me like Stroustrup was implying that.
Don't forget BASIC! I got started on gwbasic in MS-DOS, and IT CHANGED MY LIFE!
R/downvottohell
I was and still a fan of AutoLisp now called visual lisp for AutoCAD
I say learn Prolog just to let it screw with your mind :D
Pure C!
Thank You Sir , I'll remind your advice.
I think my argument is that most problems I encounter are data driven, not functionally driven. Nesting many lambdas together to try to reuse some kind of data usage pattern seems silly to me. But I didn't mean to imply there is no reuse in any functional language. Just that the 'reuse' here lends itself to function derivation. OOP makes more sense for most of the data plumbing we all do on a daily basis.
But, hey, this is why languages are becoming more 'mixed'. Everything has a use