proj-plbook-plChFavLangs

Difference between revision 38 and current revision

No diff available.

Table of Contents for Programming Languages: a survey

Favorite programming languages

my favorite languages

Python is my favorite language to use for writing normal programs.

Haskell is my favorite language for inspiration of how programming languages can and will be improved; but not for actually getting stuff done.

Perl is my favorite language for one-, two-, and three-liner text manipulation from the command line.

Octave is my favorite language for quickly plotting a mathematical function (but for a serious numerical project I prefer Python).

HyperCard? is my favorite language for simple programs with a UI.

BASIC was the first language I really learned.

Logo was the first language I learned, I didn't realize it was a programming language at the time.

My recommended languages

Here I recommend languages to learn, not necessarily to use (what's the difference? When learning languages, you really want the simplest, best expemlar of a language style. When using languages, you really want to use a popular language because it will have more libraries and more questions answered on the Web).

note: and what for concurrency? clojure? erlang?

Links

everyone else's favorite languages

summary (subjective)

Up to this point, the list of languages which were either moderately used and very liked or most used and not disliked are: Python, C, Javascript, Clojure, Scheme/Racket, Lua, Haskell, Go, C#. Other languages which were most used but disliked include Java, PHP (note that PHP is extremely disliked). Other languages which were highly used but neutral or disliked were Ruby, C++, Objective-C.

This list doesn't include 'new' languages or languages which are not yet used a ton but which seem to be 'trending'.

Based on the above, i might suggest definitely learning both Python and C, and probably Javascript, and after that, prioritizing learning those languages which are either moderately used and very liked or most used but not extremely disliked, that is, the following 10 languages:

then:

out of the last 7, the ones that are the most different from the Python, C, and Javascript are Haskell and the two Lisps (Clojure and Scheme/Racket), so i might suggest the following course of study:

then:

then:

To provide some more color on this curriculum:

(todo: clear up the question marks below)

then:

then:

other languages which i almost put on the above list are:

by source

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

 1 	1 		C 	17.246% 	-2.58% 	  A
 2 	2 		Java 	16.107% 	-1.09% 	  A
 3 	3 		Objective-C 	8.992% 	-0.49% 	  A
 4 	4 		C++ 	8.664% 	-0.60% 	  A
 5 	6 		PHP 	6.094% 	+0.43% 	  A
 6 	5 		C# 	5.718% 	-0.81% 	  A
 7 	7 		(Visual) Basic 	4.819% 	-0.30% 	  A
 8 	8 		Python 	3.107% 	-0.79% 	  A
 9 	23 		Transact-SQL 	2.621% 	+2.13% 	  A
 10 	11 		JavaScript 	2.038% 	+0.78% 	  A
 11 	18 		Visual Basic .NET 	1.933% 	+1.33% 	  A
 12 	9 		Perl 	1.607% 	-0.52% 	  A
 13 	10 		Ruby 	1.246% 	-0.56% 	  A
 14 	14 		Pascal 	0.753% 	-0.09% 	  A
 15 	17 		PL/SQL 	0.730% 	+0.10% 	  A
 16 	13 		Lisp 	0.725% 	-0.22% 	  A
 17 	12 		Delphi/Object Pascal 	0.701% 	-0.40% 	  A

Programming Languages sorted by Wilson Score Interval, 2012:

	Here are the HN polled programming language favorite [1] and disliked [2] scores sorted by the Wilson Score Interval [3] at 85% confidence:
    Language       Ups  Downs  85% Confidence
    --------      ----  -----  --------------
    Python        2881    115    0.980
    Clojure        424     21    0.974
    C              912     54    0.971
    Haskell        488     31    0.968
    Lua            140     10    0.961
    Lisp           298     32    0.948
    Erlang         152     18    0.941
    Ruby          1607    220    0.937
    C#             758    104    0.937
    Scheme         177     25    0.932
    OCaml           76     10    0.932
    Smalltalk       62     10    0.918
    Scala          222     40    0.918
    Other          182     37    0.908
    D               50     13    0.880
    JavaScript    1310    415    0.871

Githut: most popular languages on Github: the top 12 are:

(some comments on flaws in that dataset: https://news.ycombinator.com/item?id=9032226 )

http://lesswrong.com/lw/cnp/what_is_the_best_programming_language/6o8w

random commenter's opinion of what the 'major languages' are:

Words used on language-specific forums (subreddits): https://github.com/Dobiasd/programming-language-subreddits-and-their-choice-of-words

http://stackoverflow.com/research/developer-survey-2016

jokes:

---

"There are many, many types of assembly languages. The current most popular are ARM, MIPS, and x86" [4]

(that was written in 2010)

---

http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages

list of most popular languages, and some high-profile software written in each of them

---

http://www.zdnet.com/article/which-programming-languages-are-most-popular-and-what-does-that-even-mean/

---

Empirical Analysis of Programming Language Adoption by Leo A. Meyerovich, Ariel Rabkin

" ...intrinsic features have only secondary importance in adop- tion. Open source libraries, existing code, and experience strongly influence developers when selecting a language for a project. Language features such as performance, reliability, and simple semantics do not. ...when considering intrinsic aspects of languages, developers priori- tize expressivity over correctness. They perceive static types as more valuable for properties such as the former rather than for correctness checking. "

---

http://pypl.github.io/PYPL.html

---

http://stackoverflow.com/research/developer-survey-2016#technology-most-popular-technologies http://stackoverflow.com/research/developer-survey-2016#technology-most-loved-dreaded-and-wanted http://stackoverflow.com/research/developer-survey-2016#technology-top-tech-on-stack-overflow http://stackoverflow.com/research/developer-survey-2016#technology-top-paying-tech

most loved:

Rust 79.1% Swift 72.1% F# 70.7% Scala 69.4% Go 68.7% Clojure 66.7% React 66.0% Haskell 64.7% Python 62.5% C# 62.0% Node.js 59.6%

---

http://www.connellybarnes.com/documents/language_productivity.pdf

---

https://stackoverflow.blog/2017/10/31/disliked-programming-languages/?cb=1

http://redmonk.com/sogrady/2018/03/07/language-rankings-1-18/

https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages

https://insights.stackoverflow.com/survey/2018#work-salary-and-experience-by-language

https://thenewstack.io/which-programming-languages-use-the-least-electricity

https://www.techrepublic.com/article/the-most-loved-and-most-disliked-programming-languages-revealed-in-stack-overflow-survey/

https://www-techrepublic-com.cdn.ampproject.org/v/s/www.techrepublic.com/google-amp/article/forget-the-most-popular-programming-languages-heres-what-developers-actually-use/?amp_js_v=0.1#referrer=https%3A%2F%2Fwww.google.com&amp_tf=From%20%251%24s&ampshare=https%3A%2F%2Fwww.techrepublic.com%2Farticle%2Fforget-the-most-popular-programming-languages-heres-what-developers-actually-use%2F

https://programminglanguages.info/influence-network/

https://news.ycombinator.com/item?id=22231675

https://www.hpcwire.com/2020/07/22/python-again-tops-ieee-spectrums-programming-language-list/


(in response to an article titled "Is Zig the Long Awaited C Replacement")

" Not really, unless it manages to cater the interest of a platform vendor.

As much as I dislike it, fact is that C will stay around as long as UNIX clones, or POSIX implementations exit. So here efforts like Frama-C and Checked C are much more tailored for success.

Then if we look at the OS landscape, we already have a mix of languages replacing C to certain extent.

On mainframes, C was never relevant to start with, so the surviving ones from IBM and Unisys make a mixed use of their original systems programming languages, PL/S and NEWP, mixed mostly with C++. Whatever C like code is used, it is in the context of "compiles as valid C++" still.

On embedded, besides C + language extensions (stuck at C89 in some domains), there are C++ based platforms like Arduino and ARM mbed, microEJ (Java + C), Pascal and Basic (a couple of surviving OEMs are still around), Oberon (Astrobe), Ada, Java and .NET bare metal, TinyGo? and Rust are now doing their baby steps.

The relevancy of C on embedded can be shown by Microsoft adopting it as the only language for Azure Sphere applications, despite the whole sales pitch about IoT? security. Apparently despite all that talk, the market they are targeting is only interesting in buying, if the platform only speaks C. Currently developer requests for C++, C# and Rust support keep being nicely rejected.

On research OSes we have GenodeOS? now going with a mix of Ada/SPARK and C++.

Windows is a mix of C, C++ and .NET, and the market pressure for C has won, as Microsoft gave in to their "you will only need C++ and .NET", and the more recent version of MSVC introduced support for C11 and C17. Most likely also caused by the need to support Azure Sphere and WSL development workflows.

On ChromeOS?, only the Linux kernel is C based, everything else is a mix of JavaScript?, C++ and Rust.

On Android, similarly, we have C for the Linux kernel and "legacy drivers", everything else is a mix of Java and C++. Project Treble also supports writing drivers in Java if one wishes to do so, and the reason why Google is having meetings about using Rust in Linux kernel is related to possible adoption of Rust in the Android world.

Fuschia uses a mix of C++, Rust and Dart. I think none of the original C code still survives as pure C.

Apple platforms use a mix of C, Objective-C, C++ and Swift.

Then we had experimental OSes like Redox (Rust), Powernext (D), in production hypervisors like gVisor (Go), secure firmware like TamaGo? from F-Secure, low level file system drivers like Weka.io (D),...

C++ has gained a new wind on its sails as the main language for GPGPU programming, regardless of used directly or via language bindings. The only thing that might cut it, are better support for GPGPU programming from other languages, or some kind of GPGPU DSLs, then again NVidia is pretty much focused on first class support for C++ on CUDA, so.

Game console SDK are all about C, C++ and now C# (thanks Unity).

So, C replacements already exist, one just needs to step away from C cargo culture that there is no other systems language.

On the other hand, there are domains where no matter what, C will remain the sole king. So we need to fix its warts without throwing away everything.

However, Zig is a welcomed arrival to the party of compiled languages, maybe it will find its niche and make a couple of happier users anyway, even if it never makes a dent replacing C.

That I what I consider a success for programming languages, having their own customer base that keeps the language alive. " pjmlp

---

" The natural fate of almost any language is to die. Only a few get the miracle it takes to survive, as did (only) COBOL, Fortran, C, C++, Python, Java, and Javascript. There was a time when Pascal and Ada looked like they would survive, but the needed miracles did not arrive. ... It is just barely possible Rust and/or Go will survive. If they do, over the years they will get radically more complex. " [5]

---

https://research.hackerrank.com/developer-skills/2019

---

https://benhoyt.com/writings/count-words/

---

notes on https://earthly.dev/blog/brown-green-language/ :

languages which (a) were in the top 20 in 2016 July 2016 TIOBE, and (b) are in Stack Overflow Developer Survey 2020 The TOP 15 Loved Programming Languages, and (c) are NOT in Stack Overflow Developer Survey 2020 The TOP 15 Dreaded Programming Languages:

Python, C#, Swift, JavaScript?

data: (all data to follow removes VBA, Shell, HTML/CSS):

2016 July 2016 TIOBE: Java, C, C++, C#, Python, PHP, JavaScript?, Swift, Perl, Ruby, Assembly, R, Objective-C, SQL

The TOP 15 Dreaded Programming Languages:

VBA, Objective-C, Perl, Assembly, C, PHP, Ruby, C++, Java, R, Haskell, Scala, HTML, Shell, and SQL.

The TOP 15 Loved Programming Languages:

Rust, TypeScript?, Python, Kotlin, Go, Julia, Dart, C#, Swift, JavaScript?, SQL, Shell, HTML, Scala, and Haskell.

---

https://wiki.alopex.li/LanguageCompilationSpeed

---

https://pypl.github.io/PYPL.html

--- portability

https://cancel.fm/blog/2019-11/language-fragility/ discussion: https://lobste.rs/s/63vqsu/programming_language_fragility

---

https://insights.stackoverflow.com/survey/2021

---

https://github.com/eatonphil/lisp-rosetta-stone/

---

energy benchmarks: https://www.scala-lang.org/blog/2021/12/14/sustainable-scala.html

---

https://www.infoworld.com/article/3661248/developer-survey-javascript-and-python-reign-but-rust-is-rising.amp.html summarizing https://www.slashdata.co/free-resources/state-of-the-developer-nation-22nd-edition

---

" The Popular And Loved Programming Languages (2022)

Rust, Typescript, Python, Go, C#, Kotlin, JavaScript?

The Popular And Dreaded Programming Languages (2022)

Ruby, C++, Java, PHP, C " according to 2022 Stack Overflow developer survey, via https://earthly.dev/blog/programming-language-improvements/; see footnote https://earthly.dev/blog/programming-language-improvements/#fn1

note that "loved and dreaded" in the Stack Overflow developer is just what percentage of a language's users express interest in continuing to use it

---

https://news.ycombinator.com/item?id=32488480 (Australian recruiter)

C#

JavaScript?/TypeScript?

Python

---

"

2 points by bshanks on Oct 10, 2013

parent context favorite on: Poll: What are your liked and disliked programming...

Added:

  like+dislike
  like/dislike
  (like/dislike)*log(like)
  (like/(like+dislike))*log(like)
  (likeDirichlet/(likeDirichlet+dislikeDirichlet))
  (likeDirichlet/(likeDirichlet+dislikeDirichlet))*log(likeDirichlet)
  lower bound of confidence interval at 95% level

http://arcane-waters-4617.herokuapp.com/

source: https://github.com/bshanks/lang-rank

3 points by bshanks on Oct 10, 2013 [–]

The resulting lists are quite similar but not identical, so i've analyzed them to find sets of languages that always or almost always appear at the top. I also made the corresponding 'most disliked' lists to find the most disliked languages.

On every 'most liked' list out of the above with some sort of control for wellknown-ness[1], the two most liked languages are C and Python. On every corresponding 'most disliked' list, the most disliked five languages are coldfusion, cobol, visual basic, actionscript, php.

Looking at various lists, the next most after C and Python liked usually tend to be lisp, scheme, lua, haskell. Then clojure, rust, erlang, go. Then sql. Then assembly, C#. Then ocaml, F#.

And after {coldfusion, cobol, visual basic, actionscript, php}, the next most disliked usually tend to be groovy or java.

In other words, the partial ordering seems to be approximately[2]:

  {c, python} >
  {lisp, scheme, lua, haskell} >~ {clojure} >~ {rust, erlang, go} >~ {sql} >~ {assembly, C#} >~ {ocaml, F#}
    > ... >~
  {groovy, java} > 
  {coldfusion, cobol, visual basic, actionscript, php}

It's interesting to contrast this 'most liked (controlling for wellknown)' ordering with the most (like+dislike)d counts, whose top 9 items are javascript, python, java, php, c, ruby, c++, sql, c#:

[1] by which i mean, the six lists (like/dislike), ( (likeDirichlet/(likeDirichlet+dislikeDirichlet)), lower bound of confidence interval at 95% level ), (like/dislike)log(like) ), ( (like/(like+dislike))log(like) ), and ( (likeDirichlet/(likeDirichlet+dislikeDirichlet))*log(likeDirichlet).

[2] where >~ means a relation that holds for many of the lists under consideration, and > means a relation that holds for all of them. "

-- https://news.ycombinator.com/item?id=6530043

---

https://engineering.fb.com/2022/07/27/developer-tools/programming-languages-endorsed-for-server-side-use-at-meta/ Hack, C++, Rust, Python

---

https://spectrum.ieee.org/the-top-programming-languages-2023

---