Does it really matter which programming language you start with?

Does it really matter which programming language you start with?

Other urls found in this thread:

en.wikipedia.org/wiki/Design_Patterns
twitter.com/NSFWRedditGif

Well of course. Languages are classified as "beginner friendly" for a reason. As a complete beginner you wouldn't want to start with C++ or Assembly for example.

I mainly see three types of people recommend three different ways, though:
>start with C and learn about how computers really work
>start with a high level language like Python, Ruby or JS because they're a good introduction to programming concepts
>start with Lisp/Haskell because it's magic
So, who's right?

start with something because it's easy to pick up and progress with
so python basically

nothing really matters. I'd suggest starting with c, a lot of languages are similar to it

Well, out of these 3 ways you mentioned, which one is the most appealing to you? In my opinion, "introduction to programming concepts" sounds the best.
Python is most often recommended for a good reason: it's easy to learn. It has a fuckload of resources and the community is so large. Once you're comfortable with Python you can learn something else.

Start with algorithms and lots of gusto and youth.

I got told by a compsci professor once that the reason they start people with FP is to demoralize the know it all shits who come in knowing visual basic or rudimentary java/html and think that makes them coding gods

If you start with an OOP language you will probably learn bad habits and thus when you move down to other languages your code will be steaming shit.

Start with a lower level language and work your way up.

>If you start with an OOP language you will probably learn bad habits
Such as?
>your code will be steaming shit
Is it impossible to just learn good habits with higher level languages?

all three of them

It's not impossible, but you won't.

>you won't.
Why? Please explain.

What said
Maybe start with python a month before adding C and Scheme, but if you have time I think you should cover all three

>which one is the most appealing to you?

Pretty much this. It doesn't matter if you start with the "best" language if you stop learning to program after 4 weeks because you aren't motivated anymore

I've dabbled in a few different languages but I don't really know any.
I know a bit of Python, some JavaScript, HTML, CSS (not programming, I know), some Ruby (and Rails)
Should I just keep on learning Ruby and JS for now or switch to C or Scheme? I'm going to study them eventually, but is scripting and web a bad way to start?

Ada is a really good first programming language
im glad its in the op

>periodic table of x

fucking reddit

What are the "bad habits" people often speak of?

Excessive (mis)use of """design patterns""" without understanding their purpose or how to design programs any other way (Java; Cargo cult programming).
Being unable to do anything but glue libraries together and unable to produce any actual work on their own (Python, Javascript).
Writing software without any regards for performance.

Aren't design patterns good to solve common problems?
>Writing software without any regards for performance
How is that a problem only encountered with high level languages?
Isn't it more about being disciplined enough to not have useless functions all over the place and not using control flow for nothing?

>Aren't design patterns good to solve common problems?
When I say """design patterns""", I'm specifically talking about the en.wikipedia.org/wiki/Design_Patterns kind.
They are stupidly over-engineered, over-complicated, boilerplate-heavy shit which are really just trying to overcome shortcomings in Java. Honestly, they showcase the worst of OOP as a whole, and how stupid OOP actually is.

>C
Novice language: teaches you the basics of computers, hardens you with explicit memory management and great verbosity and constraints

>Python
Expert language: you use it most of your life because you realize programming is a tool to do more interesting tasks. It allows you to deploy quickly while retaining C performance if needed (numpy, tensorflow, ctyhon, etc).

>Lisp
Enlightenment language: you detach yourself from the "coding as a tool" paradigm and immerge yourself in world of pure reasoning and no practical application whatsoever.

So in order, one should learn C > scripting language > functional language?

Yep.
Maybe also pick up Java between C and Python and develop a simple Android app, so you learn how to keep an OOP project organized.

It really depends on how good you want to become. If it's just for shits and giggles then you can skip to python directly, if you just want to build then stick with Android apps.
The path I wrote above is only if you want to git gud

So what happens if I learn a scripting language before C? Am I doomed to be a shitty programmer forever?

>>Python
>Expert language
Nobody in their right mind would use memesnek for anything non-trivial.

What's the best resource to learn C? K&R?

>Python
What about Perl, Ruby, JS?

Tell that to 95% of machine learning, big data and analytics codebases out there. As I said, most heavy stuff runs in C++ anyway so why wouldn't you use it?

Who, hipster, lol

>hipster
How is that valid criticism though?
Everytime I ask Sup Forums what's wrong with Ruby, I get the hipster/SJW answer.

If you can read it for free, sure. Don't make the mistake of buying a copy.

Because nobody else is dumb enough to use it maybe?

I already own a copy.
It is sufficient though? It's a pretty small book.

Again you provided no actual criticism of the language itself.

It's decent. It's outdated, but still covers like 95% of what you need to know.
However, it is not a book geared towards people new to programming. It flies through the fundamentals VERY quickly.

>people new to programming
I know the basics (control flow with conditions and loops, common variable types, what a function is). Is it not enough?

Ok, I will probably get trashed for this but is there somewhere a tutorial or something that teaches what the difference between all the types are? I know OOP and I could probably describe it to a person with no knowledge of programming, but I would seriously be hard-pressed to define the others.

You'll probably be fine.

Last question: approximately how long does it take to go through K&R assuming I take the time to understand it?

Yeah. It's not going to turn you into a wizard, but you'll know how to write C (which is not a huge language.)

As long as I can get a good understanding of actual programming with it then it's fine. I also own the dragon book, but I've heard it's very outdated.

I don't know. I imagine it varies hugely by person.
Probably somewhere in the order of a couple of weeks to several months.

Alright, thanks.

>it's very outdated.
It's just tediously long

just look up wikipedia or something
the easier ones are functional, imperative and statically/dependently -typed

I meant more like some dedicated site with maybe example code to match. The article on imperative programming doesn't seem very beginner-friendly to be honest.
But yeah now everything points to wikipedia anyway.

Not the guy you responded to; I'm currently doing a two-month long web development "boot camp" for my job but I want to learn real programming. Is it a bad idea to get into C while also working on back-end projects? We'll probably be using Django or Rails, I'm not sure yet.
I want to git gud.

You will also learn next to nothing of value - unless you call program flow control programming. Going from Python to C isn't going to make learning C any easier, nor will it reduce the amount of things you will have to learn. What it will do, is give you a lot of preconceptions that you'll have to overcome to move forward. All these threads about how [low level language of choice] is utter shit are probably being made by people who are forever stuck in the comfort of their pre made scripting libs.

Bump

Yes I started with visual basic and had to spend a year unlearning it so I could move to something else.

I still don't get pointers that well. Fuck

Not as long as you start with bash

uh uh, sweetie. like he said before, all of the "heavy lifting" in python is done in C, just wrapped in python classes & functions.

the only reason to write something from scratch in C or C++ or whatever is to jerk yourself off for being a "real" programmer

I don't know, you may be fine.
A two months boot camp will probably only teach you to copy-paste files and get a working website up quickly, no real programming would be involved.

So yeah, pick up C for a while and do some of pic related.

Wait, I was reading the challenges in the pic and they are definitely not entry-level if done in C.
Google some equivalent challenges and do those, you'll be able to do these after a month or two

>definitely not entry-level if done in C.
What language are you supposed to use to do them?
>after a month or two
A lot of the stuff listed on the pic looks like it would require more than a few month's practice though. Is it that easy to make a bootloader?

The choice should not be stopping you from getting started.

Something natively object-oriented and with a good graphical library, like Java or C++.
I'm talking about the green ones, obviously

...

Which is better, Java or C++?

Literally pick the poison with which you want to die.
With Java you can make Android apps, with C++ you can be more game oriented I guess.
Either is fine for the challenges above

can anyone explain the difference between all the types

i only know scripting and a few declarative ones.

Are there no differences in speed and efficiency? Is the syntax horrible with both?
I don't give a shit about Android apps so should I go with C++ by default?
Which one is the most useful for sec?

pls respond

>Haskel
literally kill yourself whoever made that

Same question has been asked already, apparently wikipedia is your friend. Still, I would love another more friendly/noob explanation

That's fucking gold. I wish that was done to me. I went in knowing C, Python and VB.NET/C# at a beginner level. Seeing Haskell would have fucked my brain up.

>JS
>object orientated
kek

JS is more multi-paradigm than fucking Python.

>lisp
>functional

Can you even read?

KEK, woops.
I don't know how I managed that. Fucking dyslexia m9

That's even worse.

>Are there no differences...?
There are, but you will literally never notice them unless you become really short in resources (we're talking embedded systems).

>Syntax
C++ is a little uglier and definitely more messier, you'll probably never master it fully.

>Don't give a shit about apps
You can still go with either

>Most useful for sec
For netsec Python, Perl, anything that can do complex stuff in few lines.
For things like local exploits and shit then I'd say C, but then things get really dark and you'll most certainly need to know assembly.
For web sec then you may probably want to look into JavaScript and PHP.
Don't get in over your head so soon tho, start easy and see where your interests go.

What's the difference between web sec and net sec?

Everything is the same. Learn algorithms and data structures and then just use whatever language you want to accomplish what you want.