Bjarne Stroustrup: The 5 Programming Languages You Need to Know | Big Think
Вставка
- Опубліковано 26 вер 2024
- 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/face...
🐦Twitter: bigth.ink/twitter
📸Instagram: bigth.ink/Inst...
📹UA-cam: bigth.ink/youtube
✉ E-mail: info@bigthink.com
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.
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
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.
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.
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?
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.
...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? ¬¬'
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 !
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
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".
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.
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.
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.
good one 😂
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.
1. SQL: Declarative programming in a timeless and eternal programming language
2. Java: OOP, programming with a garbage collector
3. JavaScript: pragmatism, learning to work with code existing in an ecosystem with an enormous amount of libraries and toolings
4. Rust: Imperative programming, some functional programming, programming closer to the hardware, solving puzzles with a demanding type system, and type classes
5. Clojure: functional programming, LISP, simplicity, working with a REPL, dynamic systems
It's about learning concepts,, not languages. So many combinations work, this is just one.
the only guy i know with very little hair who has Way too much HAIR!!!
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
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
the legend himself..........love his calm personality
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.
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.
“I haven’t cheated with the numbers. I rounded out a design space” Bjarne brining Boolean to the real world.
alone c++ will take half of your youth to master it!
nop
@@carloshernandez8060 yes
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++.
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
@@HINDUSTANI_CLUB 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.
@@HINDUSTANI_CLUB cobol is still very active.
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. (UA-cam 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.
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
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 .
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.
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.
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
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
C++, C#, Java, Prolog, Haskell are my 5 picks
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.
Coming from Delphi. C# was easy to pickup. Thanks Anders Hejlsberg
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.
A professional is a person who earns their living from a specified activity - regardless of how many programming languages you know.
for (var i = 0; i < 5; i++) {
console.log("JavaScript");
}
crashing from overflow :D
ugh
6 languages for me
C++ / Qt5 (for most of my apps)
Python (for easy quick scripts)
Html / css / javascript
R (for quick stats)
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).
5? There days you have to know frameworks, not just languages. Knowing just one framework is an incredible feat!
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.
He explicitly said "pick one of the functional languages".
Stroustrup mentions seven languages by name (not five), but doesn't indicate which five of those seven one "needs to know". He then limp-wristedly waves in the direction of the "functional languages", calling them "esoteric". How am I supposed to take someone like this seriously?
Stroustrup created C++, so I'd expect him to be partial to that language, but truth be told, it is a TERRIBLE language to use in an educational setting and too low-level in many commercial settings when getting problems solved is more important than spending a year or two debugging and fixing code.
You are probably TERRIBLE at C++. Truth to be told.
You need to spend year or two to learn it, which you don't want to (or are not capable to do) so it is just easier to thrash talk about something which you don't understand to cover up your incompetence.
j4k154 You make assumptions for which you have zero evidence, although it's pretty clear that my comment hit a raw nerve in your case, at least.
***** "...spending a YEAR OF TWO debugging and fixing code"
You are right. I have no evidence that you are terrible at C++. Maybe you are just pretending you are stupid.
Yes, you hit my nerve, because your "opinion" is damaging new programmers, who will choose book "how to be Java expert in 2 weeks" instead of investing some time in their education, just because some lazy-wannabe-programmer told them C++ doesn't fit educational and commercial settings.
I have 10 years of professional programming experience in C++, C, C#, Java, Python and Javascript, to name a few languages, and I started with Basic, during my elementary school, but my very first OO-language was C++. Learning C# and Java, after that, was piece of cake, and recognizing how terrible Java code can be created by so-called Java experts, just because they don't have a clue what is going on under the hood, is something that I got from C++.
Majority of my projects are C++ or C#, because I have to work with .NET technology often. I live in country which is economically near collapse, but I don't worry about my job, because I can take every single programming job offered, and give my employer immediate benefit because C++ trained me to be efficient and adaptable.
Your attitude, and attitude promoted by lazy programmers like you, tend to create mediocre programmers who earn less money, who are easily replaceable, and who don't enjoy programming.
If your intention was to hit raw nerve of somebody who is clearly more experienced programmer than you, well done!
If you had paid better attention, he says a programmer should at least know somewhere between 3 and 7 languages, and calls high-performance numerical computation languages, and not functional languages, esoteric. He says knowing a functional language is good to "keep your head spinning". Also, you're supposed to take him seriously because he invented C++.
j4k154
Any advice on how to properly learn C++? I'm in the midst of the semester and I have to learn assembly, C and C++ right now ... but there is only so few time that I kind of have to rush through it. But afterwards I'd really like to elaborate my learning.
It's just ... I don't know how. Any good sides, books or tutorials you can recommend? I'm also looking for exercises but I can't find many that suit myself (they are either too easy or too hard). My biggest problem is that I can't program for myself ... someone in my course was like: "I programmed myself a script which did the work for me" and I'm like "how?!".
If you take BINARY Machine Language ,add OPERATION Abstractions you get. ASSEMBLY LANGUAGE ,Add Structural Abstractions you get ALGO 60 MACHINE CODE , add NUMERICAL Abstractions you get COBOL ,add FORMULA Abstractions. you get FORTRAN ,Add INLINE Abstractions you get BASIC, add CLASS Abstractions you get SIMULA, C, C++ JAVA, ADD FUNCTIONAL Abstractions You get Haskell
ADD Syntax Abstractions you get LISP
+TheProfiler FORTRAN IS LAMBDA CALCULUS ABSTRACTION OF INTERGER TYPE OF COBOL
+Esmond Lucan Basically ALGO 60 ++COBOL EQUAL FORTRAN,JOHN BACKUS OF IBM WAS INVOLVED IN ALGO DEVELOPMENT HE SIMPLY TOOK WHAT HE LEARNED FROM ALGO 58-60,AND CREATED FORTRAN BY FORMULA ABSTRACTIONS OF COBOL NUMERICAL LINEAR DATA ,TO CREATE A FORM OF STRUCTURE,THIS IS WHERE WE GET THE OOP ,ORIENTATION PRINCIPAL A DECADE LATER ,AROUND 1965-70 LEADING TO WHAT WOULD BECOME OBJECT ORIENTED PROGRAMMING
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”
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
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.
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
With C I learned the basics of programming.
With Assembly I learned what's behind C.
With Java I learned OOP and design patterns.
With Matlab I learned to see computation in terms of vectorial operations.
With Python I learned the elegance of simplicity, high-level features of modern languages, the basics of functional programming.
With JavaScript I learned the pain to work with a shitty language.
You coulda just done everything in C. C can be used for matrix manipulation just as it can be used for OOP and even for handling things down to the basic Boolean logic gates level.
c++, java, phyton, ruby, java script
english
@@krystof7059 Which version, English, English++ or English#?
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.
1) C, 2) Scheme or Lisp or Clojure, 3) OCaml or Haskell 4), Python or Ruby 5) Prolog.
He seems to be much more educated and respectful than Linus Torvalds, lots of respect to him
After watching the video i went to analyze which languages i know well they are C, Java, Python, Scala (recently devoted a lot of time for FP), Typescript(Javascript), thats it so i have covered so far 1 procedural language , some scripting/oops, oops, and a FP language totaling to 5. Now some languages i know from the basis of HDL(Hardware description languages) like Verilog (especially used it to programme for the FPGA), embedded C(lets say it but will not count it as its just like we use few libraries from embedded verse), Hmm i guess that all. Feeling confident and happy : ), lets try to analyse pls reply in commentso we see what generally how other fellow dev's, researches language portfolios look like over the years.
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).
Viewer, I'm proud of you for clicking on this video.
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
Five languages professional programmers should know? Well, that will be different depending on the typical problem domain you work in, but let's try the following (which are in no particular order, except for C, which is last, which is where it should be):
1. JavaScript - web.
2. SQL - because at some point you'll have to interact with a database.
3. Lisp - or a modern variant such as Clojure.
4. Smalltalk - if you tell me "I don't know Smalltalk and I know all about objects" I'm going to tell you that you don't know what you don't know. Smalltalk will twist your brain, but when you finally get it...well, then you'll finally get it. Besides, learning a language that doesn't have an "if" statement is good for you.
5. C - because it has become software development's least common denominator. Frankly, at this point in history I think it's a cr*ppy language to force on people, but some of the concepts are useful to know (if only from the point of view of "don't ever do this"). For some huge percentage of programming tasks a language which does not provide garbage collection and forces people to manually deal with pointers is wasteful, because for many programmers it's simply going to be a bug farm. Arguably this could be replaced by something like Python.
English is your most important & first language to learn
Rhetoric is important too.
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.
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
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.
Hi. Look into Turing Completeness. HTML is mark up, not a programming language. The reason why is that HTML code isn't actually executed at all. It is simply a way to describe a web page. For instance, your word document also has a format that describes things like where to bold and font sizes. But a programming language has to be executable by definition.
Hey Guys. I would Really appreciate it, if someone Could give me information about where To start.
I am 32 and have Basic HTML-knowledge... But I would like To Change my profession. I intend To Work in and on It-Security. I intend To develop home and Business Applications To secure "smart" devices and/or for smart-objects (home, car...)
I know that it is a lot of work so therefore I arranged that I have at least 4 hours per day To study.
Question: Where shall I begin or which fields shall I combine? Data, Network/Servers? Programming and Network and so on...
Could it be that I just should start with anyone and then go To the Next topic?
Seeing how you have a bit of an HTML background, I would suggest you start learning some JavaScript, simply because it requires the least amount of setup (all you need is a browser, which you have), you will find yourself in a framework that you are used to and you can immediately get visual output, which is - for most people - a huge benefit in early learning. It doesn't matter so much how you learn; pick what you think works best for you. A book, a UA-cam video series, CodeAcademy, a paid course. As long as you simply get started, how you do it isn't too important.
Once you've grasped some basic concepts of programming (variables, functions, conditonals, loops, etc), you can then leave JavaScript behind and switch to a language that is better suited for the target market you're interested in. Because you mentioned smart devices, which points at embedded development, I would suggest that you set up a Linux machine (could be an old laptop you've got lying around, could be a partition on your disk or simply a virtual machine - Linux is free after all) and start looking into C. C is an old language but still dominant in the embedded world, among others. Plus, learning C, which is very low-level (compared to JavaScript, which is very high-level), will give you a very good grasp of how your code is actually interacting with the hardware; it will teach you how code can be exploited (stack overflows, for example) and how to prevent such attacks. In other words, a good understanding of C will be a fantastic foundation for everything else.
The reason I suggest doing this second step on a Linux machine is three-fold. First, setting up a C development environment on Windows is a pain, whereas in Linux, it is a breeze. Second, Linux is prevalent in the server world (the Internet is mainly based on Linux machines), as well as in the embedded world, so learning the basics of it will be mandatory for the trajectory you're going for. Third, it is generally a good idea two see what else is out there and understand how different operating systems work and interact with one another.
If, later on, it turns out that you actually need Python or Java or any other language for the target job, then the plan I described here will still be fine. Once you know C (and JavaScript), learning other languages will be a walk in the park.
Oh shit, I realized just now that your comment is three years old... well, how did your plan pan out? :-)
Fortran for numerical/high-performance programming
I would include SQL in the list.
+MisterKorihor But SQL is not a programming language, it is a Structured Query Language. Its about processing data using a set of predefined keywords and instructions.
Carlos Sanchez The problem here is the definition of "programming language". The "L" in SQL does stand for "language". Furthermore, Webster's dictionary defines "programming" as "the act or job of creating computer programs". So even though SQL is very limited in its power, it does seem to fit the criteria of a "programming language".
MisterKorihor I dont have time to go into that never ending debate with you sir, I asume we are all in the same level of uderstanding when we refer to programming languages here. The ability to provide OOP, inheritance, polimorphism, Overiding, overloading, dinamic binding, these are things required of a modern programming language. SQL is not a programming language, same as HTML. You cant wrap your head around that then there is no point in dragging this debate.
Carlos Sanchez I think the term you are looking for is "general-purpose programming language". Prefixing "programming language" with "general-purpose" conveys the meaning that the language must have adequate power and a reasonably comprehensive feature set. By the way, requiring object-oriented features is absurd. According to your definition, C would not even be a programming language.
MisterKorihor C is not a modern programming language, if it was there would not be c++, listen i do not have time to continue this, youre not even a software developer. Go and keep coding tables in SQL and dream about being a software engieneer.
Whats about Assembly??? Thats the father of all programming languages, it's fast and you can do everything, REALLY everything! You can shut down the cpu fan and burn your computer down if you like!
You have to learn it only when you are taking Computer Architecture (or Computer Organization) class to understand how the registers and memory work.. All high-level programming languages translated to Assembly Language which is basically a mnemonic for machine language in binary. i know if you are just joking. If you feel nostalgic try MARS and Spim Simulator. They are basically a simulator for you to learn assembly or mips without the worry of messing up your actual computer hardware if you made a mistake in your program.
@BlueTron97 - Punch Cards & Magnetic tape came before even that
Yeah, for one specific CPU.
You can't shut down any PC via fan manipulation by writing some code in MARS.
Taxtro or Bash
BlueTron97 yup 😐 Assembly language is the the beast of them all.
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
At least you get the concept now better than later if you are planning to work/continue working in IT field.
I love his hair LOL
😂
brain >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> hair
No electricity left to give the hair's static electricity
Learn first Pthon then C++ and you rule the other language easily.
I think this is really helpful...I'm learning for Py and looking for what else I really need
If you learn python first, learning C++ would be painful.
Orochimaru_Sama Why would it be painful? That's the path Im taking now
Not painful like that lol. Just difficult. It may not seem to be difficult but it is.
I first tried learning C+ but I just found it too much for simple things I wanted to do. So now I am learning C# and it feels like heaven.
"C++ of course..." XD
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.
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.
In my opinion the best languages to learn are the following:
Java and C/C++ - for software development
Python - for data science and analysis
JavaScript - for web development
By learning these five, as Bjarne said, you really do cover a lot of domains and can carry that forward with you, should you specialise with one particular area of development. Currently, I'm learning three on the list (Java, Python and C++). But I hope to learn the others too at some point in the future.
Prolog for backtracking algorithms lol
I am just going to go sit in a corner with my cobol. . .
+Razziez COBOL is the worst programmer insult!
Take the b outof Cobol and you get Cool
COBOL IS numerical processing Abstractions
Learn C for learning how to deal with hardware, Learn Java because you can do anything with it, Learn Pyhton because it is simple and quality scripting language, Learn Scala for functional programing, and learn any declarative language.
Define what "knowing" a language entails. Most programmers I meet say they know a language just because they know how to print and do a couple looping things with it that are common to all languages.
It's easy to tell when someone is BS'ing because they'll arrogantly claim to know such and such language, then you ask them more about it and they immediately change the subject. Never fails.
I love how PHP is never a language listed by any renowned programmer as a language you should know (and understandably so); yet it's often the only language today's working programmer knows - aside from a little javascript.
Why do you say that PHP it is never a language listed by any renowned programmer? (serious question, it's for my homework)
WTF man why would you say that!? are you fucking crazy???
I need to only know 1 language to do what I do. And I am not a prick about what I do
Top 5 programming languages u need to know : 1. mine 2. mine 3. mine 4. mine and 5. C++
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)
If you learn a static, dynamic, functional, OOP language, the only thing that differs from that is syntax, except for maybe memory management.
All declarative languages are roughly the same. Sample a bunch of them and learn which make the most sense. Then go learn functional programming, how to script, how to manage a database, and learn something like C. Then you'll be kicking ass.
I say learn Prolog just to let it screw with your mind :D
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.
Texas Instruments 59, Fortran, Pascal, Forth, Assembler, C, Smalltalk, C++, Java, Mathematica.
LISP, because imperative programming sucks.
+MoronicAcid1 lots of modern language features come form lisp. lambda functions, maps (assoc), delegates and all that stuff
+James Rockford but Lisp does it better and cleaner
Wakko Warner
better than C# for sure
+MoronicAcid1 Lisp is the weirdest most interesting language. It can be totally immutable like Haskell but in the same time the most mutable language where even the compiler and the code is mutable. The only language where you can write functions that write functions that modify themselves according to the input of the user! Programs that think.
Theodor Berza
assembly does that as can C/C++
bjarne: "java"
me: "NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" *jumps trough window"
c# is the way just for the ide and the framework
"C++, of course"...
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!
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
I've watched a few of these and am very surprised that no one said sql. Sql is an awfully important language, unlike any other.
sql is not a programming language,. it's on the same level of stuff like xpath, regular expressions, mongo DB aggregation engine, css selectors, in other words: a way to query and manipulate data, mostly. You can't write a "hello world" web service with sql. YOu can't write a text editor with SQL. Yeah it feels like programming language, but then again, google search query has syntax and operators also, you don't call it programming language for that.
Nope. SQL is a first class turing-complete programming language.
madwilliamflint I agree. SQL is actually a functionally programming language.
madwilliamflint Really? You can't write a game just with it.
Orochimaru_Sama
Why not? Of course you can. You just need an I/O library, which you need in every language/platform.
I like C++, C# and Lua...absolutely love lua. I use it whenever I can, screw Java.
C# is like Java so you saying you like C# but not Java is basically lying
Pure C!