Which programming languages should a competent programmer know?

Which programming languages should a competent programmer know?

Other urls found in this thread:

docs.sourcemage.org/
en.wikipedia.org/wiki/Project_Xanadu
twitter.com/NSFWRedditVideo

Assembly

/thread

The entire ISA for the microprocessor he is currently using and enough of the programming language of his compiler to make his own effective changes. If you don't meet these requirements, you might as well be a troglodyte fucking webdev.

ALL of them

C
C++
Lua

lisp, or even better: (((scheme)))

What's wrong with web development as long as you actually understand what you're using?

C++
Java
Javascript (+ HTML & CSS)
Python
+ a few others of your choice

yacc syntax

>Lua
Why?
>C++
>Java
Why both?

also forgot to add SQL to this list, whatever dialect you like as long as it isnt some retarded meme one

Good for scripting (LuaJIT) and for scientific computing using Torch7. It's a non-bloated alternative for Python.

Chai-Script is decent also.

C++ for performance, Java because it's everywhere and you can't escape it

He should not know "many" languages, mastering one is already out of reach of most programmers. Pity is the trend is to hop between languages, always picking what's the newest and most hip.

since it's 2017...

Javascript, PHP7+, Python, then C++

You could go the Java/C# route if you want to be laughed at.

>don't different tools in your toolbox

hmmm

>some retarded meme one
So basically anything but SQLite

Master Foo and the Recruiter

A technical recruiter, having discovered that that the ways of Unix hackers were strange to him, sought an audience with Master Foo to learn more about the Way. Master Foo met the recruiter in the HR offices of a large firm.

The recruiter said, “I have observed that Unix hackers scowl or become annoyed when I ask them how many years of experience they have in a new programming language. Why is this so?”

Master Foo stood, and began to pace across the office floor. The recruiter was puzzled, and asked “What are you doing?”

“I am learning to walk,” replied Master Foo.

“I saw you walk through that door” the recruiter exclaimed, “and you are not stumbling over your own feet. Obviously you already know how to walk.”

“Yes, but this floor is new to me.” replied Master Foo.

Upon hearing this, the recruiter was enlightened.

if you are offered a job at a company that uses anything other than PostgreSQL, MySQL or Oracle, run away as fast as you can because their shitty meme database is going to fuck up and crash the company into the ground

Sure, but how do you "learn to program" without a programming language?

SQLite is hands down the best for small/med projects, but yeah big time stuff you'll want to use those

RDBMS principles are the same across systems that implement it. It doesn't matter what you're using.

the principles are the same but the implementation absolutely is not

people who believe stuff that you just typed are the ones who bankrupt companies by losing gigabytes of data during a corrupted transaction

fuck off already white pig shit

C, C++, Java, something scriptish and something functional.

>something scriptish
Any of them?
bash is a given, I mean additionally

More or less.

>bash is a given
The guys at SMGL did some serious wizardry, pun intended. Look at their docs docs.sourcemage.org/

Unironically all of them. If you actually know how to program, you can learn any language easily. Just use whichever is best for the situation you're in.

Is there any advantage to learning Perl or Ruby over Python?

C++, Java or C# depending on the platform your focusing on.
Python or another scripting language.

At least some competency at algorithmic thinking.

Yes but how do you "learn to walk" without a floor?

What language should a person who has no intention of going to the industry and want to learn for hobbyist purposes learn? Like if I want to make a shitty website or a shitty android app or a shitty desktop app.

Lisp is the only programming language you should know.

Every programming language can be represented with Lisp (including Lisp itself), making it the most powerful programming language ever made.

Perl and Clojure, painless and fun.

Which dialect, though?

>shitty website
PHP, you can hack together some piece of shit in a few days.
>shitty android app
That uses Java doesn't it? Learn that.
> shitty desktop app.
Java again.

C
A Functional Programming Language
Lisp
Enough HTML/CSS/PHP to get by
and maybe a scripting language

>suspicious bulge

my dick is confused

The same can be said of any programming language nigger.

Thats just roast beef. dont mind it

Times New Roman

Wasn't there a book where you can make you own Lisp written in C? Is the most direct proof of that.

Lol, wut? The basic underlying concepts between most languages is the same. The best thing you can do is learn the concepts then all you really need to do is apply the specific syntax for the language you are using, the learning of which takes less time than you would think.

Being able to change up what language you use makes you far more marketable to employers, and it gives you far more job security.

You don't need to "MASTER" any language in this day and age. When you run into a unicorn case, you can just look up information on it online.

What kind of stupid question is this?
The programmer should only know the languages that he's working with.

...

Mathematics,algorithm, computer science

Anyone?

no

Perl maybe
Ruby is a meme language that Starbucks sheep use

>Ruby is a meme language that Starbucks sheep use
Elaborate

it was really only popular for Ruby on Rails (the top framework for webdev hipsters) but they all moved to node.js

The rails community is still huge though. I don't get why Sup Forums hates ruby so much

Pseudo

Everything else falls in place.

A competent programmer should be able to pick up any language in a day or two

the way we've architected the internet is inherently flawed

unless you're working backend on some new network or blockchain type application, in which you're now not really doing web dev you're doing systems engineering

TCP/IP was designed for a full trust environment, there is basically no security built into the protocols, and HTTP is a bastardization of what networked hypertext was supposed to be

en.wikipedia.org/wiki/Project_Xanadu

also if you stick with web dev you'll be learning from mostly other web developers, who at their best have a flawed understanding of systems engineering, and at their worst have copy and pasted their career from stackoverflow, and on average couldn't tell you how a computer works

Is it bad to start with web shit then branch off to actual in-depth programming?

SQL.

If you want to write any non-trivial application, you should know some SQL.

Learn whichever is necessary for your task. Programming is only a skill that gets you achieving your goal.

> A competent programmer should be able to pick up any language in a day or two

It isn't about learning syntax and copying code from stackoverflow. Learn a language implies that you know also the environment which surrounds that language: Tooling, tricks, best approaches, documentation and so on...

No, its fine. Once you understand basic control flow and data structures switching between languages is easy. Anybody who says otherwise is just inexperienced. If you're doing webdev and want to get into systems engineering, the problems you'll run into are going to be much more complex than language specific issues

yes

if you want instant validation, learn python to script things on your computer, but if you are patient enough to actually learn how computers work, learn some C, then study a higher level language like Lisp and Haskell, then learn assembly

if you would like to leave commodityarchitectureland, buy a beginner's FPGA and learn digital hardware design

if you would like to leave digitalville learn electronics and semiductors, and physics

web dev languages are a poor way to learn data structures

>If you're doing webdev and want to get into systems engineering, the problems you'll run into are going to be much more complex than language specific issues

certain language and platform communities are simply more intelligent and "engineery" than others, you won't learn much by hanging around ruby on rails devs or PHP monkeys

Which, to a competent programmer, are also easy to pick up. If a language says it tries to be as stateless as possible, then a competent programmer would know how to approach that. If a language/environment says it conforms to an MVC paradigm, then a competent programmer should know what that means and how to design with that in mind.

>It isn't about learning syntax and copying code from stackoverflow

being a competent programmer is always more than that

>web dev languages are a poor way to learn data structures
You're actually probably correct with this. You won't be using trees or graphs much in javascript, for instance. Still, for a total beginner, web isn't horrible. If you're having trouble with arrays and for loops, pointers and monads are going to be way too overwhelming

It doesn't matter what you start with as long as you have the drive to learn more anyway, so starting with web isn't necessarily bad even though it's probably not useful.

>Still, for a total beginner, web isn't horrible

it instills a flawed intuition of how frameworks should be designed, and like I said the internet is poorly architected and all the c00l k1dz are moving to alternate platforms which are for the most part system agnostic

don't waste your time learning horseshit lest ye plan on shoveling horseshit for a living

>it instills a flawed intuition of how frameworks should be designed
how so?
>moving to alternate platforms
such as?

Know C and ASM.
Be familiar with Python, C++, Java, Perl, Lisp, JS + HTML, CSS, SQL

then whatever you want/like/need

Haskell, Rust, and D

All of these, in complete detail:
Scala
Hasklel
C++
D
Perl6
/bread

VHDL

Some assembly, C, C++, java, javascript, php, sql, pl/sql, python, bash
And some libraires for GUI stuff, drawing, networking...
Bonus point : have made sys programming, managing process, threads, made pipes...

C++/Java/C#
Python
SQL
CSS
HTML
XML
JavaScript

(Java|C++|C#)
Javascript
C
(Python|Perl|Ruby)
SQL
A Lisp

Be familiar with all, master 2 or 3.

Are there any good resources for learning Java, GUI stuff and all? Head First Java is good and all, but it's Java 5, and I have no idea what I'm missing from the later versions.

Java 8 is a pretty big change but you can live without it if you're just learning programming now.

Python, nothing more.

A competent programmer can learn the basics of any language in an hour.

...

STOP WITH THIS GEMMA SHIT DUDE.

...

Binary my nigga

Holy shit you both are undergrad for sure: Lisp metaprogramming is so fucking powerful that you can implement any language as a DSL using just macros!

And of course you can make a Lisp compiler with C: you can also implement one with game of life automatas, because they are all turing complete... duh!

Here is a fact: if you don't know some Lisp you can't call yourself a programmer.

That's depend on how you define "competent" and "basics". I would like to see what you would learn in just one hour of Agda.

There's no limit.

What's the point? Less than a tenth of 1% of developers actually need that level of control.

>ruby and c#

Javascript - it's everywhere, doesn't hurt to knows some, see the latest standards, it's pretty decent if used properly but can easily backfire. always 'use strict'

Python/Lua - might pop up in applications such as redis or blender, you might need to deal with them

Bash/Powershell/Batch - you'll need some scripting knowledged in these to be able to automate repetitive tasks. Combine it with Python/PHP/Node.js in case you need something like communicating with web API

Git - not a programming language, but essential to know

C - countless languages have their roots in C, one way or the other so learning it will give you an edge, still relevant for writing OS/drivers or micro controller code or ultra-portable libraries

C++ - learn to use those templates, other than that relevant for developing complex desktop applications or stuff where performance matters, OS, Adobe stuff (photoshop, illustrator), game engines (note that these are not weekend projects)

C#/Java - you'll need one of these memory managed equipped with reflection compiled to byte-code languages. They seem to be well equipped for the needs of companies and businesses and for clients that change their requirements quite often.

Assembly - will make you appreciate all the effort that went into developing optimizing compilers. Assembly though is used for writing small parts of an OS such as a boot-loader, interrupt handler or writing virtualization software or writing your own compiler. I recommend NASM for sanity or using the inline assembly features of a C/C++ compiler

HTML/ES6/CSS - wanna make websites? choose this route! Use whichever language you're most comfortable with as a backend C# Node.js Java and Python are pretty cool. Avoid PHP and avoid jQuery. w3schools is decent at starting out but I recommend watching some proper courses that explain some stuff more in depth. Fun thing to do is trying to reverse engineer websites to see how they did certain stuff.

Perl is better.

this
and also Ada, C, C++, Lua

'Mastery' of one and only one language will impair you from taking on any realistic work. A good level of understanding in everything is ideal.

But in the case of new learners. Its better to focus on one language till you're confident in how it works, once you understand that. Every programming language feels like a syntax change.

What about specific features though?
Pretty sure switching from Java to Haskell won't just feel like a syntax change

C, Java and Python

Is it necessary to know several scripting languages though? Seems like a waste of time

a lisp and nothing else. i have started by learning racket and everytime i learn another programming language, it's like going backward on the plt scale.

>a lisp and nothing else
>how to be uneployable and unable to work on any sizeable project 101

i would kill myself if i had to program anymore for the industry, it's the worst thing a programmer could have to do. the best thing in programming is being a hobbyist or an indie. if you are a good lisper, you will find a job easily, trust me. at one moment, around 2003-2005, being an experienced lisper got you insta-hired at naughty dog (they are still heavily using lisp)

it's impossible to know C++

Patrician taste

>Career advice from over a decade ago

Thanks gramps.

Learn anything that will you get into the field of blockchains/crypto, AI, big data, or data science.