DEV Community

How many programming languages do you know?

Ben Halpern on December 16, 2019

Feel free to elaborate on your criteria for what "know" means... 😁

Collapse
 
deciduously profile image
Ben Lovy

If my search history is any indication, zero.

Collapse
 
jeikabu profile image
jeikabu

I'm still chuckling to myself about this. Wish we could give unicorns for comments.

Collapse
 
sandeepbalachandran profile image
Sandeep Balachandran

I am this close to hack NASA with my html skills

Collapse
 
tarasnovak profile image
dataPixy 🧚‍♂️

you might need to know more than html to do that. lol!

Collapse
 
mbrtn profile image
Ruslan Shashkov

This plus some CSS skills would be quite enough.

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

hardly, maybe try XSS ;)

Thread Thread
 
deciduously profile image
Ben Lovy

HTML+css is turing complete!

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

if you say so :)

Thread Thread
 
deciduously profile image
Ben Lovy • Edited
Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️ • Edited

I am not, I don't think you can prove it w/0 JS. lol!

Thread Thread
 
deciduously profile image
Ben Lovy • Edited

Not personally, but this is cool, fuller write-up here.

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️ • Edited

I think we work on different planes ...

Thx for your CSS links tho!

Thread Thread
 
gabgab2003 profile image
DownloadPizza

PowerPoint is also Turing complete

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

PowerPoint is just a tool! Wrong channel! :)

Thread Thread
 
gabgab2003 profile image
DownloadPizza

Doesn't change the fact that it's Turing complete (also a little hint: the html+css dudes are joking, except for the Turing completeness, that's real)

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

dude, you would not know Turing complete if it hit you on the head ;)

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

this thread is now Turing complete! lol! Cheers!

Collapse
 
ericschillerdev profile image
Unfrozen Caveman Dev

It's amazing what you can do if you remember that "hack" in this day and age also means social engineering.

HTML/CSS is enough to cause some nasty problems if you hook the right people.

Also, don't forget Powerpoint is Turing Complete (youtube.com/watch?v=uNjxe8ShM-8). If you really want to spread lies and/or disrupt the ongoings of a business, that'll do it right there.

Collapse
 
simply_stanley_ profile image
Simon Stanley

Common guys! Its pun intended, some of ya all needs to Google for their sense of humor, you might find it lying around in stakoverflow or GitHub 🤣

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

I thought I kept it that way, with some sprinkles on top ...

Collapse
 
femi_dd profile image
/

XML might do the trick

Thread Thread
 
tarasnovak profile image
dataPixy 🧚‍♂️

sure! try it with SOAP! 🤓

Collapse
 
pablomezak profile image
PabloMezak

Html and css?? for nasa? i use html e css for haking the all world

Collapse
 
kenbellows profile image
Ken Bellows

I agree with you in general that understanding a single language at a very deep level will let you easily pick up many, many others, but I don't think one is enough to cover everything, because I think there are a few different fundamental threads in programming languages that different enough that being deeply familiar with one will not prepare you for the others.

I'd probably argue that there are three major threads:

  • imperative languages — Languages in which the main thing you do is write down a list of steps for the computer to follow in order. This is probably the 75% case. This covers everything from low-level C or Go, to Object Oriented languages like Ruby or Java, to more scripty languages like Python, Perl, or JavaScript.

  • functional languages — Languages in which the main thing you do is define how to solve very small problems independent of the main task of the program, then wire these smaller problems together to solve bigger problems. It is certainly true that many of the imperative languages above have functional aspects to them and can be used in a functional style, especially flexible, interpreted languages like Ruby, Python, and JavaScript. However, in my experience there's a big difference when you step into a purely functional language like Lisp or Haskell, and writing imperative code in a more functional style won't fully prepare you.

  • declarative languages — Languages in which you don't really give the computer a list of instructions, but instead you describe the problem for the computer to solve, or sometimes the outcome you desire, and let the machine fill in the blanks. This is a rare breed of language and is often found as an ability of languages that otherwise fall under one of the two above categories, though explicitly declaritive languages do exist. My main exposure to this paradigm is through Prolog, a Turing-complete logic-based language in which you feed the system a set of facts and relationships then ask it questions. Constraint programming, in which you hand the system a set of rules or conditions that must be followed in solving a problem then let the system work out a satisfactory solution, would fall under this label as well, and Oz seems to be a popular language choice, though I haven't used it.

Of course, as I alluded to above, many (most?) languages fall at least somewhat into more than one of these categories, and they are probably better thought of as "paradigms" or "approaches" of programming rather than "types of language". What I'm really trying to get at is that I think it's super valuable to pick a language or two from each of these different categories or paradigms and spend some free time digging in deeply and really wrapping your head around each of these very different perspectives.

I took a course during college called "Programming Languages" in which we had three big programming projects: one in Java, one in Racket (a flavor of Lisp), and one in Prolog. This was, in my opinion, one of the most valuable courses I ever took, and probably one of the most valuable coding-related experiences I've ever had, because it forced me to really lean into these three different perspectives and actually use them enough to make something substantial. It showed me how much variety there can be in how we talk to computers.

I highly recommend this as a personal project for anyone who wants to broaden their mind. First, go through a tutorial for some flavor of Lisp (Racket is a nice introductory one, though everyone has their fav) and write something non-trivial, like a Tic-Tac-Toe player or something. Next, go through a tutorial for Prolog and write something else non-trivial, like a simple chatbot based on Markov chains or something. It's a wild ride.

Collapse
 
metalmikester profile image
Michel Renaud • Edited

Throughout the years I've used...

BASIC
Turbo Pascal
8086 assembler
SPARC assembler
C
C++
COBOL
Modula-2
Scheme (LISP dialect from MIT)
Smalltalk
VBA
Visual BASIC
C#
Javascript
Java
Typescript
PL/SQL
Transact-SQL
PHP

I could be missing a few.

Of these, I regularly use only C#, Javascript, PHP and Transact-SQL, so at the moment I'd say they're the only ones I "know", as I've forgotten a lot of the others and going back would almost be like learning them again.

Collapse
 
fultonbrowne profile image
Fulton Browne

What is your favorite?

Collapse
 
metalmikester profile image
Michel Renaud • Edited

Hmmm... Overall, probably C# these days though I have fond memories of Turbo Pascal and 8086 assembler. I never did anything that really worked in assembler, but I had a lot of fun playing with it. I learned a lot about the 8086 (a simple processor by today's standards) just by learning the language, and that helped when dealing with low-level stuff in other languages.

Lately I'm mostly dealing with JavaScript (front-end; the back-end is in C# but I haven't touched it in a few weeks) and it's driving me completely crazy. I'm having a lot of fun. :D

Collapse
 
ericschillerdev profile image
Unfrozen Caveman Dev

We're nearly career twins!

Collapse
 
erebos-manannan profile image
Erebos Manannán

Definitely depends heavily on the definition of "know", and I guess also "programming language"

Have written something meaningful in? Over 30 different "families" of languages, where I'd say e.g. BASIC includes C-64 BASIC, QBASIC, GW-BASIC, and so on, C++ includes various Borland C++ and such things all the way to C++20.

Write actively and could write something new in without needing to refresh my memory first? More like .. 5? Incl. like BASH and PowerShell.

Mostly these days I write things in Python and Go, but I can unfortunately remember most of JavaScript as well. In the past the list is long and some are very specific things like Quake C and ZZT-OOP that are hard to even remember were a thing.

I try to make a point about learning new languages constantly, since most of the new things are pretty cool and have great new use-cases. Some of the things I plan to learn more about in the future:

  • Zig has a lot of promise to kill off C finally
  • Kotlin might get Java developers to finally migrate, and might provide us a new cool way to make one codebase for both frontend and backend
  • Rust has exciting new thoughts on reliability, but the syntax is pretty hostile to get into - hopefully they'll work on that in the future
  • Nim has a lot of promise to also give us ability for compiling to multiple targets and to build e.g. low level software in much more convenient languages
  • Elm is delivering on a great promise to make frontend programming pleasant again, and the community has a lot of interesting great takes on e.g. animation, web application styling, etc.
Collapse
 
jessekphillips profile image
Jesse Phillips
:greating
?n
#touch @lietux
Hi
#zap greating
#give health 5
Collapse
 
gdotdesign profile image
Szikszai Gusztáv

For some reason I cannot reply to your comment about JavaScript so I'm replying here.

Since you don't like JavaScript that much and interested in Elm I just want to let you know about Mint - the language I created to solve the issues of programming for the frontend. I wrote a series of posts here so you can check those out if you are interested :)

Collapse
 
erebos-manannan profile image
Erebos Manannán

Thanks, I'm definitely interested in all alternatives. Actually now that I think about it a bit more Flutter is one of the more promising developments, as you can write an app once and deploy to multiple targets, one of the (currently alpha) targets being web, and you get massive speed benefits on mobile over doing it the other way and deploying web apps on mobile.

Thread Thread
 
gdotdesign profile image
Szikszai Gusztáv • Edited

I am aware of Flutter and it's intriguing, however I am always sceptical about software that offers compiling the same code to the web and mobile, it is extremely hard to make things look and behave exactly the same on mobile and web without breaking the web.

Collapse
 
galoiswannabe profile image
galoisWannaBe

IDK, it feels unfortunate that I remember JavaScript 😂😂😂

Collapse
 
deciduously profile image
Ben Lovy

ZZT-OOP

Whoa. Instantly transported to middle school.

Collapse
 
erebos-manannan profile image
Erebos Manannán • Edited

Well, in short because JS is one of the more awful experiences you will ever have with programming in the modern world.

Nowadays you can't do anything remotely serious with it without a massive toolchain that makes setup really difficult, near impossible to figure out what goes on at every step, and challenging to debug things. Want to just write a quick little thing in JavaScript? You'll have to go to stack overflow to copy & paste a bunch of helper stuff into your code before you can even write the most basic "pick a random number between X and Y" into your app.

The NPM ecosystem is pretty terrible for many reasons, mainly poor design of NPM, and the fact that JavaScript having almost no useful standard functions at all means there's a library for everything - installing a few basic dependencies for your project will end up with you downloading hundreds of libraries, many littered with bad decisions, security implications, and gotchas. Then someone decides to just push a new version to GitHub but reuses an old tag and suddenly your builds break for no apparent reason.

There is no clear standard for formatting code, there are gotchas with the popular choice of not using semicolons, and there's roughly 16 different variants of the language - the JavaScript that actually runs on your browser (but just which parts depends on the browser hue hue), ES6, ES6 + flow, and so on. There is constant infighting about whose tool of choice is the best, and they keep evolving but there's no good documentation about anything, so you end up having to waste a ton of time guessing.

The community is full of people who think all of these issues are good, and like the new features with incomprehensible syntax, like apparently functions weren't clear enough when they were function(arg, arg2) { return "something"; }, but now need a shorthand syntax that looks like the nightmarish things from CoffeeScript, yet nobody is interested in trying to fix the serious and deep issues with the language. For some incomprehensible reason people like writing short code, like arg = ~~arg instead of clear code.

One such issues that is constantly causing pains to everyone working with anything where JS is related is that there is really no validation of arguments. People get lazy with using named arguments and doing checks, so they pass option objects, but these objects are never validated against any schema, so you end up e.g. writing configuration like {plugin: ["foo"]} and can't figure out why the foo plugin isn't loaded. No errors anywhere, it just doesn't work. Turns out you were supposed to use the key plugins, and you just wasted a day on one character.

The whole object and prototype system is like a massive hack and feels like an afterthought, which causes significant memory leaks and other issues all the time - think you can bind a reference to this.processClick on some event handler? No - this is another reason to end up with tons of pointless boilerplate in your applications to copy & paste a bunch of this.processClick = this.processClick.bind(this) in the constructor.

Then there are a lot of the just plain language design issues, like Number, clearly wrong choices for truthiness, lack of errors where clear errors in code occurred, poor error handling in general especially in the new async handlers, and so on.

There's probably quite a lot of other things that I quickly bump into every time trying to work with JavaScript, and these are just the ones I can quickly remember off the top of my head.

Really the best way to write JavaScript is to not write JavaScript and adopt another toolchain instead. TypeScript is ok, but ends up with most of the same convoluted toolchain anyway, and you end up with having to deal with npm and typings which are really poorly available. Elm and other such languages with their own ecosystem and tools that just compile into JavaScript are the biggest hope I have for the frontend world.

Thread Thread
 
phlash profile image
Phil Ashby

+1 for the really honest rant - sounds like WASM support in other language ecosystems can't come quick enough :)

Thread Thread
 
erebos-manannan profile image
Erebos Manannán

It would be pretty amazing if in the near future WASM became a fully viable option, with full access to DOM and all the browser APIs, where you could load WASM code onto a browser as easily as JS code.

So many great languages compile to WASM now that it'd basically revolutionize the whole frontend experience, both for developers and users. This actually makes me ponder if Electron was nicer if you'd build WASM apps for it 🤔

Until then, these languages compiling into JavaScript are a glimmer of hope, Flutter maybe one of the bigger ones due to getting pretty significant performance benefits on mobile devices.

Thread Thread
 
kspeakman profile image
Kasey Speakman

Also check out Bolero. It is F# MVU on web assembly. I haven't used it per se, but we are developing a product using its constituent elements (F# and Elmish, but built with JS toolchain similar to how we did Elm). I also have an Elm project in production a couple of years for comparison. For both technical and non-technical reasons, I prefer F# Elmish over Elm.

 
kenbellows profile image
Ken Bellows

Oh yeah, absolutely! Sorry, should have been more clear on that point: for practical purposes, if you learn Java to a super deep level, you should be well equipped to pick up Ruby, Python, JavaScript, C#, or any number of similar languages.

My main point was really that learning these other paradigms is good for expanding your problem-solving perspective. Especially functional programming: since dipping my toe into Lisp, the way I think about problems in JavaScript and the other mostly-imperative languages I actually use has changed a lot.

Collapse
 
jeremylikness profile image
Jeremy Likness ⚡️

Let's see ... including those I could do more than just write "Hello, World" in ...

  • Assembly Language (6502) learned this on the Commodore 64.
  • Active Server Pages web dev in the early days
  • Bash coz Linux
  • BASIC first language (TI-99/4A)
  • Boo from my intro to MVC
  • C when I got tired of assembly
  • C++ my introduction to objects
  • C# one of two languages I've used since it was created
  • COBOL early business developer days
  • Fortran forced to use this in college (maybe why I dropped out?)
  • Go learned recently, mostly for its WebAssembly support
  • IBM RPG/RPG ILE from my AS/400 programming days (now iSeries)
  • J# tried this out to transition to C#
  • J++ sadly fell for this in the early days of Microsoft
  • Java language used in the startup days of a company I worked at in late 00s
  • JavaScript second language I've used continuously since it was invented
  • JScript coz I liked it better than VBScript
  • LINQ for biz data queries and aggregations
  • Lisp because sets are fun
  • Objective-C back in the early mobile device management days
  • Pascal language I learned in high school
  • Perl get stuff done on Unix machines
  • PHP webmaster days
  • PowerShell admin all the things
  • QuakeC one of my favorite languages - I was quite active in the Quake scene
  • QBasic to get it done faster
  • Rust one I've learned most recently and am quite enjoying
  • SQL/T-SQL coz apps need data, too ... wrote my first SQL in 1994 (25 years ago!)
  • TypeScript making JavaScript scalable since the beta
  • VisualBasic COM objects for the world!
  • XPath/XSLT because XML was going to rule the world

Wow, thanks for that excuse to trip down memory lane! I am familiar with/have written code in probably a half dozen more, but that's more hobby. The languages I listed I either have been paid to write or could have if I was working age when I learned them.

Collapse
 
anwar_nairi profile image
Anwar • Edited

Interesting one :) Here is my list

Language Confidence
PHP * * * * *
Javascript * * *
Pug * * *
SQL * * *
Python * *
SASS * *
Typescript * *
C# / ASP.net *
VB.net *
Java *
C *
C++ *
Collapse
 
pcrunn profile image
Alexander P.

You should definitely learn some more Java! It looks a lot like PHP too

Collapse
 
anwar_nairi profile image
Anwar • Edited

Nice suggestion, I was thinking of which language should I spend more time on between C# and Java. Maybe I will try Java again one of these days... :)

Collapse
 
panditapan profile image
Pandita

I'll use "know" as in "met" :3

So, I've met:

turbo pascal, vb6, vb, c++, java, python, xml, xaml, python, javascript, sql, matlab, hmtl, css, c#, php, scheme, prolog and I think that's it? it's what I remember hahaha

I had to use most of them in classes, nowadays I use mostly use c# :D

Collapse
 
aadibajpai profile image
Aadi Bajpai

How do you decide whether you know a language? Is it just knowing the syntax, or actively using it, or even being able to use it when called for? 🤔

Collapse
 
guledali profile image
guledali • Edited

You feel comfortable writing in it and you able to write idiomatic code

idiomatic* means that the code you wrote is seen as correct way of doing it or more like the "appreciate & preferred" way of writing the code by the overall community of that language.

Collapse
 
codenutt profile image
Jared

I like this definition

Collapse
 
rachelsoderberg profile image
Rachel Soderberg

I consider any programming language that I can navigate as well as I can French (which isn't great) to be a language I know... Therefore I'd say about three. But some days I would have to google how to print for a hello world so perhaps it's none, as would be my mastery of french as well. lol

Collapse
 
fossheim profile image
Sarah

Those that I actively use these days: JavaScript, TypeScript, HTML, CSS, Python, MySQL.

Have used before/took classes on it but don’t use them very often anymore (various degrees of confidence, some I could start working with again fairly quickly, others that I only used a couple of times five years ago I’d need a bit more time catching up with): PHP, ActionScript, C, C++, Objective C, Swift, C#, Matlab.

Collapse
 
maxart2501 profile image
Massimo Artizzu

I lost count and I kind of don't care 😄 Probably less than many here, but most than average I guess.

I discovered that knowing a language is important... up to a certain point. What really matters is how you use it - in relation if what it can do, if course.

Getting to know a language (meaning the syntax) is a matter of a couple of months tops. But knowing the best practices and its ecosystem is something that takes years...

Collapse
 
drewtownchi profile image
Drew Town

I'm strongest in C#, PowerShell and JavaScript.

I have a workable skillset in Python and SQL (if you want to consider SQL a language). But I definitely need to Google a lot more.

I used to work in PHP a lot, back in the 4.x/5.x days. So I would consider that knowledge pretty much lost at this point.

We'll call it 3.75 programming languages

Collapse
 
_hs_ profile image
HS

Java,C#, and JavaScript and by knowing I mean I actually develop stuff in this. And lately Cypher if that is a language hehe.

Rest is basically playing with and could swich to them if I want to but I don't 😁

PHP
Groovy
Scala
Kotlin
Ruby
Python
C++

Collapse
 
hyftar profile image
Simon Landry

In no particular order, the programming languages of projects I worked on:

  • Ruby
  • Python
  • C
  • C++
  • C#
  • Java
  • Javascript (ECMAScript, NodeJS and all that jazz)
  • Typescript
  • Transact-SQL
  • PHP
  • CSS / HTML (I count both as one)
  • Latex (Might as well count it if we count HTML and CSS)

I could list a bunch more that I have toyed with, but for me, knowing a programming language means that you can program in it with minimal Googl'ing

Collapse
 
seniru profile image
Seniru Pasan Indira

I have started programming 3 years ago, and I proud that I know more than a dozen of languages now.

It is not hard to learn after learning a language deeply as first (as desire said). I first started with java, then js. At present I'm confident more with js and lua, but also good at java and python.

Here is the list of other languages I know:

  • C#
  • Ruby
  • Kotlin
  • Swift
  • C/C++
  • Pascal
  • PHP
Collapse
 
jxpx777 profile image
Jamie Phelps

I tend to give an answer to this question that is long-winded and frustrating to people. First, once you reach a level of proficiency with programming where you understand the big pieces that you'll see in any particular language (loops, conditionals, value vs reference, comparison, common design patterns) it's not very difficult to pick up the syntax to apply those concepts in a new language, so in that sense, I don't find this question all that useful. "Do you know $LANGUAGE?" "No, but I can probably be reasonably productive in it within a couple weeks."

But! Do I think that this means I "know" all the languages? Not. At. All. For me, knowing a language in programming is more about knowing what is idiomatic and which design patterns apply most commonly. So, in that sense, I think I really, truly know maybe 3-5 languages starting with Ruby, Javascript, and Objective-C but then I would include in a second tier of lower fluency Typescript, Go, and Swift.

I also think it's a mistake to think that because you know the syntax or even the idioms of a language means you'll be able to be productive in it without learning some ropes. I have been writing Javascript professionally for about 8 years but the last few months have been my first time working in Node.JS projects, and adding that to the mix has presented a whole different set of challenges. Conversely, someone with a lot of Node expertise would probably struggle to work productively in the architecture required for browser extensions at the beginning.

What I would advise people looking to expand their knowledge of different programming languages is to learn about different paradigms of programming and the advantages and disadvantages, analyze the tradeoffs. Prototype-based languages like Javascript and Lua have different strengths from languages that emphasize functional programming paradigms like Clojure and Haskell. And dynamically typed languages like Ruby and Python have advantages and challenges compared to statically typed languages like Go or Swift. What are the advantages of concepts like pattern matching and which languages leverage them the best? These are actually useful questions and learning about the different paradigms expands your toolset so that you have more kinds of information to bring to bear on solving problems. I think the biggest challenge and probably the biggest benefit to learning wildly different languages from what you already know is this process of learning that these different paradigms even exist. For instance, I wasn't even aware I should know about pattern matching until I dipped my toe into Elixir and now I see that it's a powerful feature that enables some very elegant solutions to really thorny problems.

If you already feel comfortable in a programming language or two, maybe learn to implement different paradigms there. What constraints does that impose or what possibilities does it expose? Before I left my last job, I had a coworker that introduced some pretty pure functional programming to a Javascript project. It was really challenging to think about the problem in a way that I wasn't accustomed to thinking about Javascript code.

Like I said, my answer to this "simple" question is long-winded, but I hope it's helpful to break folks out of the mindset of treating programming languages like Pokemon. Instead, I hope you'll focus on learning the concepts that will expand your programming toolbox so you can find elegant solutions to interesting problems.

Collapse
 
galoiswannabe profile image
galoisWannaBe

I know Kotlin and Java, although Swing UI layouts still confuse me. These are the languages I would say I know, without qualification.

I know Python, C++, Objective C, and JavaScript, so far as I could probably Google my through whatever problem I have, but I MAY need to watch a tutorial by the end of it.

Collapse
 
peacefullatom profile image
Yuriy Markov

HTML
CSS
TSQL
PHP
Java
C/C++
C#
Perl
Bash
VBA
ActionScript
JSON
XML
RegEx
Asm
Basic
Pascal
Python
Lua
JavaScript
TypeScript
Adobe Script
Bunch of other scripting environments.
Here I've listed everything beyond "Hello world" example. 😁

Collapse
 
guledali profile image
guledali • Edited

JavaScript
JavaScript
.
.
Ruby
.
.
.
.
PHP

So JavaScript it the language that's most natural for my eyes to read and write. However at some point I was going crazy with ruby still love that language. PHP is a language that I have been forced to learn either from school or from previous jobs I had.

So JavaScript and Ruby!

Collapse
 
jrop profile image
Jonathan Apodaca

Langs I'd say I know (or rather, knew at a past time):

  • BASIC
  • sh/Bash
  • Fish
  • C/C++ (a long time ago, and a lot has changed since then)
  • PHP
  • Python
  • Java
  • C# - WinForms + ASP.NET - fun times
  • Scheme - learned for a class - this was my "gateway" lang to learning functional programming concepts
  • JavaScript
  • TypeScript
  • Go
  • Rust
  • SQL

Langs that I've investigated (partially learned):

  • D
  • Haxe
  • Kotlin
  • Lua
  • Nim
  • Ocaml/ReasonML/F#
  • Perl
  • R
  • Rebol
  • Red
  • Ruby
  • Smalltalk

In retrospect, what I've come to value that I've learned in my journey is a set of abstractions that make solving complex problems doable in clever ways: OOP, functional programming, reactive programming, actors, text-processing, data-structures, memory models, data ownership, concurrency, package management, etc. For this reason, I tend to favor languages that support these strategies. My favorites to pair together (at the moment) is Fish for scripting the system, TypeScript for generalized scripting, and Rust for the lower-level.

Fish is much more sane shell scripting. TypeScript has an awesome type-system (for a scripting language). Rust has the best developer experience for a systems programming language I've ever encountered. Fun times!

For completeness, I should list some things I know I need/want to review:

  • Linear programming
  • Dynamic programming
  • Graph algorithms
  • State machines (both NFA + DFA)
  • etc.
Collapse
 
sduduzog profile image
Sdu • Edited

Java

The very first language I ever learned. Intro to computing was the course. We did Karel the robot, I learned Principles of Object-Oriented Programming with it, learned Android programming with it and later did a course on design patterns mostly with it

C++

Not only we were learning the language but with C++, I learned Data Structures and Algorithms. It later came in handy in learning computer architecture as these two are very complementary.

PHP

With this I include html, css and javascript. Funny enough, when I wasn't close or had access to a computer, I used my phone (a Galaxy Pocket Plus at the time) to run as a lamp server. I even used php to practice Data Structures with single and double linked lists. (Most of the apps I used as servers have been taken off google play. I don't know why)

Python

Used to teach us design patterns but I still went back to java just to understand what python tried to express

8086 Assembler

Part of course work for systems programming and compilers. This was fun. I'm sure it's gonna make it easy for me to pick up a side project with microcontrollers and robotics one day.

JavaScript

I'm still learning it. You never really know JavsScript. But with it, I've learned JQuery, Angularjs, Vuejs, NodeJS, etc. and I don't know if that list will ever stop growing.

Kotlin

At first, I was intimidated by it, but I learned later that it isn't so scary. I converted my android app to use only it.

Dart

This I learned through picking up Flutter. From there I've been interested in AngularDart also. Especially the part about code sharing and state management (or the lack of. I'm not certain)

CSharp (the pound sign disappeared when I used it)

I completed a udemy course on it, therefore I know it. Also, I'm writing a .NET Core project just to check how comfortable I am with it.

I feel like I should write a full-blown post out of this 🤔

Collapse
 
stevepitts profile image
StevePitts

I'm not sure that I agree that everything mentioned in this discussion falls under 'programming languages' but I'll define 'know' as meaning a language that I understand (or in some cases, understood) well enough to either make a living from (ie. poeple paid me to work with that language) or produce tools used by others. In roughly chronological order of first picking up the language:

Basic (on a PDP machine at a technical college in 1976/77 - no computers at home or school back then)
JCL (if HTML is a programming language, then so is IBM's Job Control Language)
FORTRAN
APL
VS BASIC (IBM mainframe variant)
INFO (probably the most obscure entry on this list, a 4GL from Doric)
EXEC2 (old IBM mainframe scripting language)
BAL/HLASM (IBM mainframe assembler)
BCPL
ST Basic/Fast Basic (on an Atari ST)
ANSI C
REXX
Motorola 68000 assembler
Superbase BASIC (SBL)
COBOL
FOCUS
PL/1
Windows batch files (especially the dialect used by Take Command and predecessors)
HTML
LotusScript (in the Lotus Domino/Notes context)
Javascript
VBA (primarily under Excel)
C++
ASP.NET/VB.NET
PHP
Easytrieve Plus
SQL
Python

There are at least seven variants of Basic in that list, and apart from APL (which I haven't used in more than 30 years) most of the languages are procedural and I would anticipate being able to make sense of a program written in that language if it was put in front of me.

Of the above I still write in REXX/SBL/HTML/PHP/SQL for leisure activities, write Python/REXX and read C/COBOL/PLI/JCL/SQL for work. REXX has been my favoured tool for 'quick and dirty' programs for more than 30 years and I'm currently trying to get my head around Rust as a possible replacement for C in situations where performance is more important than the elapsed time to something usable.

Collapse
 
ferricoxide profile image
Thomas H Jones II

Depends on what you mean by "know". If measuring against, "knowing all possible ways of doing things in a given language," then "none."

Mostly, I have an overall knowledge of the things I ought to be able to accomplish in any given language, and then one "home" language where I can do those things with minimal dicking with Google to refresh myself. I've a couple other languages that I need to have close-to-the-top of my brain, but what those are and their "freshness" relative to each other varies depending on workload (i.e., "how recently I've had to use them"). That list changes over time – sometimes with addition of a new language or a language falling into the "mental archives" – an is heavily driven by work-demands.

On the plus side of code-linters, it tends to mean that the amount of <LANGUAGE_A>y-ness of my <LANGUAGE_B> output is reduced over what it used to be.

Collapse
 
pinotattari profile image
Riccardo Bernardini • Edited

So...

  • Languages that I know pretty well and I can be productive in time zero (maybe modulo a refreshment for those I do not use since long time)
    • BASIC
    • FORTRAN
    • PASCAL
    • C
    • C++
    • PostScript (yes, it is Turing complete...)
    • Tcl/Tk
    • LISP
    • PERL
    • PHP
    • Ruby
    • Ada
    • Unix shell (sh-like)
    • Matlab
    • few assemblies (Z80, 386, ...)
  • Languages I have some experience with, but not a big deal
    • JavaScript
  • Languages I played with them for a bit or that I read about them. I guess I will be able to read a program, but I do not feel like I could be operative since time zero.
    • FORTH
    • Prolog
    • Simula
    • COBOL

Oh, yes, also I programmed the TI-57 (if you are not too old, you do not what I am talking about... :-))

I could throw in also LaTeX since I guess it is Turing-complete, although LaTeX programming (not just writing shorthand macros) is quite an experience...

Collapse
 
particulated profile image
Brian Berry • Edited

I use web-based references to remember, supplement and write about 2% of code.

I'm
HTML 5
JavaScript
CSS3
PHP
JAVA
CSS grid
Android SDK
Kotlin (Android)
Actionscript 3
Flash Server Side ActionScript
Linux BASH shell scripts
Microsoft.bat scripts
RED 5 sever side Java
Wowza sever side Java

Other assets of calmchess

Collapse
 
delta456 profile image
Swastik Baranwal

I am sure that I will be able to adapt to any language as long as I have the references and cheat-sheet with me. Though will take time to make something with it as need of remembering the best practices and studying the code of that language to understand which would be the best way to conquer problems etc.

Collapse
 
damcosset profile image
Damien Cosset

I can print out Hello World! to the console with every single programming language ever invented by humanity 😎

Bow to me, you nerds!

Collapse
 
kenbellows profile image
Ken Bellows

How about Assembly, the original language? 😋

Collapse
 
damcosset profile image
Damien Cosset

Damn it, I'm busted...

Damn you, Ken Bellows! I shall have my revenge!

Thread Thread
 
raguay profile image
Richard Guay

My first computer (an 1802 processor in a system that was published in Electronics) did a LED sign board controller by hand assembling the code and inserting it into memory using switches! I then thought that punch cards were a step up!

Collapse
 
gklijs profile image
Gerard Klijs

As long as I can bring my IDE about 5. It also depends what count as a programming linguage. If css, xml, yaml etc. count it's a lot more. Without IDE it's pretty hard.

Collapse
 
alohci profile image
Nicholas Stimpson • Edited

Ones I've delivered production code in, in approximate chronological order

6502 Assembler
Basic
8048 Assembler
C
DBASE/FoxBASE
8086 Assembler
Occam
LotusScript
BaanERP
VB
Transact-SQL
PL/SQL
C#
XSLT
Java
JavaScript

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Generically, I'd consider 'knowing' a programming language to be having a sufficient understanding of the syntax and core language semantics to look at an arbitrary snippet of code (with sensible naming) and understand generically what it's doing (possibly with access to documentation about the API's it's using). IOW, you can read and understand at a basic level code in that language without needing to look up stuff like the basic syntax.

By that measure, I 'know':

  • C
  • C++
  • Java
  • POSIX shell script
  • Python
  • Lua
  • Perl (5 only)
  • BASIC (2 dialects)
  • Forth (basics, not specific dialects)
  • JavaScript (ES5 and newer only)
  • Elixir
  • Erlang
  • PowerShell (2.0 and newer)
  • MS-DOS CMD.EXE

And, if you consider them 'programming languages':

  • HTML (4.01, 5, and XHTML 1.1)
  • XML
  • JSON
  • YAML (1.2 and 1.3)
  • CSS (3)
  • SQL (core functionality + 2 dialects at a basic level)
  • Half a dozen network protocols (SMTP, HTTP, etc)
  • Half a dozen configuration file formats
Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

Various shades of knowing:

I know Kotlin: I use it every day and could write poetry in it if you asked.

I know Java: I can understand any code written in Java - albeit slowly - but since I'm doing mostly Kotlin I'm forgetting the ampersand and inverting the order of arguments all the time

I know Typescript: the language is straightforward and I can use it in the same IDE so I can submit pull requests to my frontend colleagues: I copy paste then adapt.

I know Bash: I wrote a lot of scripts with it, but still have to Google every time I want to do a for loop.

I know Haskell: I know the name of the language and that it has lots of M.....

Collapse
 
cadams profile image
Chad Adams

I've used Java, Kotlin, C#, Go, Python, TypeScript, JavaScript. I would say I "know" Java, Kotlin, C#, TypeScript, JavaScript.

"know" as meaning, if I'm giving a problem odds are I can write code without having to do a quick google search on the syntax.

Collapse
 
raguay profile image
Richard Guay

I’ve done substantial programming in 23 different computer languages (programs with over 1,000 lines) over my 35 years of programming. But, currently regularly using HTML/CSS, JavaScript, go, ruby, tcl/tk, python, zsh, scheme, prolog, VimScript, and php. Of frameworks, I’m mostly using Svelte with NW.js.

Collapse
 
ericschillerdev profile image
Unfrozen Caveman Dev • Edited

Note that I'd be hard pressed to do most of this today, but I can relearn if I need to...

Stuff I've done a deep dive in for school/production work:
-- Fortran
-- Pascal
-- C
-- C++
-- Scheme
-- SQL (including a few variants like SOQL, HQL, etc.)
-- SPARC Assembly
-- Java (applets, JSP, servlets, and relatively modern Java)
-- Cold Fusion
-- HTML/CSS
-- Javascript (vanilla and with jQuery/AJAX)
-- Classic ASP
-- Perl
-- C# (both in ASP.NET Forms and ASP.NET MVC)
-- SED/AWK/Grep/etc
-- Shell scripts (Bash, the DOS shell, etc.)

Variants of BASIC
-- Apple BASIC
-- QBASIC
-- Visual BASIC (pre .NET)
-- VB.NET
-- VBA (macro language for Office)

Stuff I've had to read in production but not really do a lot of coding in:
-- Ruby (on and off the RAILS)
-- Python (that hurts considering I'm currently a data engineer)
-- Scala
-- Kotlin

Stuff I've dabbled in but never got to really use:
-- React
-- Angular
-- Cypher
-- Node

And there's a list that's just as big if you open up various tools, ecosystems, frameworks, data formats, etc. that aren't quite "languages" in a traditional sense but do have a learning curve.

Collapse
 
downey profile image
Tim Downey

I used to think I could "know" a programming language in a week or two.

I still can program in one in that amount of time and lean on a linter/style checker to achieve some semblance of idiomatic code.

For this definition I'd say I "know":

  • C
  • Scheme
  • Javascript
  • Java
  • Go
  • Ruby
  • Python

I've built projects in all of those languages and with the help of the internet I can become productive in them again.

However to truly "know" a language now and be able to do deep debugging of issues I feel like I need to understand more of the nitty gritty of it. How does it implement threads? What is its memory management/garbage collection like? Etc. etc.

In addition to this I like to ask myself "would a seasoned $LANGUAGE programmer understand this code?" "Would they be surprised by anything?"

For that definition of "know" I mostly just know Ruby. 😱

Collapse
 
kayis profile image
K

If I say, it's every language I "heard of" it's too many.

If I say, it's every language I worked with "professionally" it's still too many, because I started working as a tech blogger, which led to using many languages in my blog posts.

If I say, it's every language I feel (or felt) comfortable using, it would probably be PHP, JavaScript, C, LiveScript and VBA, because those are the ones I used to write bigger projects.

At the moment I'd consider myself only comfortable using JavaScript and often have a bit of fear using another langauge, because my knowledge of JS is so deep that I think it would take too long to get to know another language THAT good.

On the other hand, I didn't start with that deep JS knowledge and still used it everyday, so it's probably not needed to get things done :D

Collapse
 
codemouse92 profile image
Jason C. McDonald

I was going to say, "define know"...

I'm an expert in Python and C++, and formerly in ActionScript 3.0. Of course, "expert" is a hard term to pin down: what I mean is, my code in these languages is clean, idiomatic, and efficient, and I have a solid grasp of the underlying language patterns and principles. (Pluralsight confirmed, at least on the first two, so that's something.)

I'm able to write good code in C, HTML, CSS, and Bash. I used to be at this skill level with Visual Basic .NET and VBScript, but I haven't used either in years.

I'm reasonably comfortable messing about in Java, SQL, Haskell, X86 Assembly, and FORTRAN.

So, only counting actual programming languages, I "know" 14.

Collapse
 
jessekphillips profile image
Jesse Phillips

My odd ball measure for "know" : I am aware of and possibly looking forward to language changes in the next release.

D, C#, C++

Since C++ is more of a product of following D, it could be crossed off.

Otherwise I've had the pleasure of working with likely 10 or more languages such as fril.

Collapse
 
voins profile image
Alexey Voinov

Stopped counting around 1998 :)

I can start writing code in any language on the first day. Some important details might be missing, but they will come in about two weeks. The last time I did it was this August with Objective-C. :)

Collapse
 
fjones profile image
FJones

In order of familiarity*frequency of use:

PHP
JS in various flavours
C++
SQL in various flavours
Golang
Python
Java
C
Bash
C#
Ruby
Perl
Good ol' Haskell
VB

Probably still missing a few. I very much echo the others listing "one size fits all" - so long as you're familiar with the basic paradigms. Between OOP, FP, event-driven, the Go channel concurrency, and different type systems, I've probably covered most short of assembly, PASCAL, and some research languages.

Collapse
 
djangotricks profile image
Aidas Bendoraitis

Let's see what I can remember:

Language Confidence
Python * * * * *
JavaScript * * * * *
Visual Basic * * * * *
BASIC * * * * *
Turbo Pascal * * * * *
PHP * * * *
SQL * * * *
ActionScript * * * *
VBScript * * * *
Delphi * * *
bash * * *
Prolog * * *
XSLS * * *
Maple * * *
C# * *
C++ * *
C * *
Java * *
Assembly *
Collapse
 
bradtaniguchi profile image
Brad

Right now I know 1.5 language very well.

TypeScript and thus I know enough of JavaScript to be happy.

I used to use Java and Python, and even a little Go, but I don't even look at those languages anymore so I'm sure I've forgotten them.

Collapse
 
kmwill23 profile image
Kevin

I think I've dabbled in every one of them over the years 😋. Not really, but I've dug deep enough into so many that it's just not a thing anymore.

I'll throw out a few I didn't see below though!

IBM 360 Assembly
Rexx
Ada

Collapse
 
neutrino2211 profile image
Mainasara Al-amin Tsowa

Firstly by "know" I mean: Have the ability to write basic programs in said language with little to no extra knowledge needed e.g writing a "Hello World" program in Java with knowledge garnered from C#.

With that said, I know seven languages but only ever use two or three at a time depending on the project. The only reason I "know" that many, is because I learnt Java first and its syntax is pretty similar to other languages except Perl, Rust and Ruby to name a few.

Collapse
 
paul314159 profile image
Paul314159 • Edited

I've been around the block a few times...
I've listed the languages I've used in active development, and left out the languages that I just dabbled with.

I'll attempt alpha-order.

ADA
BASIC (at least 10+ varieties)
C
COBOL
C++
C#
Fortran
Forth
GMAP (probably should be in assembler list below)
Java
JavaScript
Kotlin
Lisp
LUA
Modula-2
Objective-C
Pascal
PHP
PL/6
Swift
SQL (Not sure I'd call this a real language though.)
Python
Verilog
Visual Basic, J++
VHDL

Assembler:
1802, 8080, Z80, 6502, 6800, 6805, 6850, 65816, 8048, 8051, 8080, x86, Z8, Z16, Atmel AVR

Wrote compilers for BASIC, C.
Developed my own proprietary interpreted language.

I have to agree that having a very deep understanding of a couple languages really do give you a leg-up on new languages that come along.

I would also add that it's very beneficial to dabble with your own compiler, and/or scripting language as you really get how it all works after that.

Just adding a postscript: I didn't consider things like HTML, CSS as 'languages'. Perhaps some do but I chose not to list those types of things.

Collapse
 
thewasif profile image
Muhammad Wasif

Currently, I know only Javascript but I'm planning for Rust or Python. 🤔

Collapse
 
guledali profile image
guledali

How did you land on Rust?

Collapse
 
thewasif profile image
Muhammad Wasif

Actually I want to get into machine learning and IoT. So, Rust seems better option for IoT

Collapse
 
quirktart profile image
Floofer Doofer 🏳️‍🌈

I know about java, JavaScript, python, go, HTML, css, c++, c#, and c

I am currently learning java

Collapse
 
larsoncarter profile image
Larson Carter

Wail...

Swift, Java, C++, Shell, and then a few others but I'm most confident in those listed here.

 
metalmikester profile image
Michel Renaud

It's been on my list for years, but I never really got to it. :(

Collapse
 
geoffreyokeke profile image
Chukwudebere Okeke

Now I'm having a second thought about calling myself a programmer 😊

Collapse
 
vaibhavyadav1998 profile image
Vaibhav Yadav
  • JavaScript
  • Python
  • Ruby
  • C
  • Go
Collapse
 
brownio profile image
Antonio Djigo

I know that I know nothing mate

Collapse
 
leonlafa profile image
Leon Lafayette

Well, I know Assembly language and C, it just takes me a while to shake of the rust.

I use JavaScript on the daily.

Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli • Edited

All of them.

Isn't the theory that you can translate from one Turing complete language to another?

No?

I might have to revise my answer.

Collapse
 
czriad001 profile image
czriad001

HTML only, which language used to build this website? Anyone know? Mobileprice24.net

Thanks in advance.

Collapse
 
guitarplayer82 profile image
guitarplayer82

I took c# and python last spring semester but mainly use python now. I have played with c++ and JavaScript as well.

Collapse
 
mjakebarrington profile image
Jake Barrington

Writing: C, C++, JavaScript, Python, x86_64 assembly
Reading: Most languages.

Once you know any language reading most other languages is a breeze.

Collapse
 
avalander profile image
Avalander

I dunno, no matter how many languages I learn, I still don't get Erlang :/

Collapse
 
sebastiangperez profile image
Sebastiangperez

Pascal
php
javascript
html
css
.net (some)
java (some)

Collapse
 
guledali profile image
guledali

.net isn't C#

Collapse
 
xitize profile image
Kshitiz mishra

c,c++,java,Kotlin, JavaScript , python, mysql

Collapse
 
polyterative profile image
Vladyslav Yakovenko • Edited

Typescript, Kotlin, C#, Java, SQL

Collapse
 
fultonbrowne profile image
Fulton Browne

I know the JVM (java, kotlin, groovy, scala), .net (C#, VB), and python very well. I know JS, html, css, node, and vue pretty well, and I kinda understand rust, cpp, swift, and D

Collapse
 
wlun001 profile image
Wei Lun

I have tried 17, but only fluent on a few

Collapse
 
yechielk profile image
Yechiel Kalmenson

I guess I'll define "know" as "wrote working code in":

  • Ruby
  • JavaScript
  • PHP
  • Python
  • Go
  • C++
  • SQL
  • HTML
  • CSS
Collapse
 
picocreator profile image
Eugene Cheah

Does self-invented language count?

If so, time to start getting the number rolling ...

Collapse
 
nagarajendra profile image
Rajendra🙏🏼👇🏽

Java & java script but can read, debug and make small changes in python

Collapse
 
odoenet profile image
Rene Rubalcava

I've written stuff in lots of them, but I'm just winging it

Collapse
 
biros profile image
Boris Jamot ✊ /

C
C++
OCaml
Smalltalk
Python
Java
Bash
Javascript
PHP
Golang
Scheme
HTML
CSS
ASP
JSP
Haskell (pre-hype)
Assembly
Pascal

I've been coding at least one line of code in all above language.

Collapse
 
felixmm profile image
Felix M. Martinez

That I can sit down and start coding right away? One. That I can Google my way into something that runs? Probably another 3

Collapse
 
gamorales profile image
Guillermo Alfonso Morales

Python, Javascript, PHP, Java, c#, Kotlin, PIC Basic, Assembly for pics, CCS, Arduino C, SQL.

Collapse
 
oouchikh profile image
Zidor200

Php/Js/python/c#/pascal

Collapse
 
gguurr profile image
gguurr

To many

Collapse
 
galoiswannabe profile image
galoisWannaBe

Especially languages of the same paradigm!

Collapse
 
anuraghazra profile image
Anurag Hazra

This many, LOL!

It's nothing
github.com/anuraghazra/Nothing

Collapse
 
moopet profile image
Ben Sinclair

ALL OF THEM.

Or at least, some of them + my 7th coffee of the day #yolo.

Collapse
 
antelove19 profile image
Falah Al Fitri

know? I know nothing haha

Collapse
 
attkinsonjakob profile image
Jakob Attkinson

Are html and (s)css considered programming languages?

Collapse
 
tarasnovak profile image
dataPixy 🧚‍♂️ • Edited

know, or used, or currently using? ...

also, define language. Is Vega a language, or just a json dialect? etc.

Is SVG a language, or just a specialized vocabulary of XML? ...

Collapse
 
swarupkm profile image
Swarup Kumar Mahapatra

I know English . Alexa does whatever I say.
Hence, can English be called a programming language? 🤔

Collapse
 
ayonbit profile image
Ayon Bit

C,php,html,css,bootstrap

Collapse
 
codebondco profile image
codebond

c
c++
c#
.net
java
go
python
assembly
perl
ruby
python
php
xxx

Collapse
 
alexanderop profile image
Alexander Opalic

42

Collapse
 
johansundell profile image
Johan Sundell

Better questions would be if you can forget any languages what would they be ;)
Mine would be JavaScript and basic ;)

Collapse
 
jonathanspeek profile image
Jonathan Speek

Hmmm, I've used several - but I'd definitely need a solid refresher on syntax for a few of em:

CSS
HTML
Java
JavaScript
Python
Ruby
SQL
TypeScript

Collapse
 
luisgmoreno profile image
Luigui Moreno

Webpack

Collapse
 
chillyvanilly77 profile image
Chilly_Vanilly

C++ and Java have to be my strong-suite.
Then there is Python, Scala, JS, and I am still learning/fortifying my Rust skills.

Collapse
 
burdettelamar profile image
Burdette Lamar

Counting Fortran?

Collapse
 
droidmakk profile image
Afroze Kabeer Khan. M

I Started with Javascript for web ( HTML, CSS ) and Node.
Typescript for enhanced coding in Javascript 😁
Python for machine learning and deployment scripts.

Collapse
 
zoltanhalasz profile image
Zoltan Halasz

Csharp, javascript, SQL, VBA. In the distant past pascal/Delphi, php.

Collapse
 
compilersjay profile image
J Pratt

I don't really know how many I can use well. I know that I struggle to use Kotlin, PHP and more than the simplest of shell scripts.

Collapse
 
dendihandian profile image
Dendi Handian

I wish only javascript

Collapse
 
gdotdesign profile image
Szikszai Gusztáv

These are the ones I'm using daily: