What's the best programming language to start with? For someone who will probably aim to become a web app and mobile app developer.
There are 5 answers usually given... many more but these 5 seem to prevail
1) JS:
>JavaScript, especially if you wanna do web dev. You'll need it anyway and JS is ubiqituous nowadays... you can get up and running in a sec cause you already have a JS engine in your browser.
2) RUBY
>JS is a terrible idea. JS is a weird language and you should start with something more elegant without all the weirdness. Something like Ruby.
3) PYTHON
>Python is the way to go! Python has always ONE way to do it it will teach you order in your code and good practices ... it's also very general and used everywhere while Ruby's community tends to focus on Rails/web
4) C
>Forget all what the faggots above said. Learn C if you want to understand how computers work.
>>Forget all what the faggots above said. Learn C if you want to understand how computers work.
Jesus fucking christ.
Jayden Taylor
It's not even a fucking contest. Python is the only way to go.
Anthony King
Assembler, then build up from that.
Bentley Clark
1. (optional: C)
2. Java or C#
3. Python
4. JS
5. (optional: Ruby)
Here's why:
>JavaScript
JavaScript is not suited as first programmign language. It's has many quirks and allows you to do stuff that is not possible in other languages. If you know programming you can pick it up very fast (in a few days), but if you learn it as first language, you will do a lot of "shit code", i.e. callback-hell.
>Ruby
Uhm. I'm pretty biased here.
I love Ruby, but I wouldn't recommend it as first language. It's one of the most powerfull languages out there, but as a beginner you can't put it's power into perspective. It's like Python + Perl + Smalltalk + Lisp in one language.
>inb4 "muh homoiconicity"
>Python
Yeah, Python is not a bad start. It is way smaller than Ruby and beginner friendly. The only downside is Python will give you a lot of stuff for free where other programming langauges will make you work for.
> C, Java, C#
Yes, one of those. If you want to get good, start with one of those.
C will teach you the most about programming. It's a good start. But you won't get a Job with C so either cover only the basics or start with Java or C#.
C# is a "better" Java, but Java has more jobs. Generally both langauges are pretty similar, so it's up to you.
Evan Adams
Java for mobile, javascript for web. Avoid python and ruby.
Blake Clark
C. Desktop, Android, iOS, you got it all. Then JS because there isn't much choice for the web.
Parker Phillips
Thank you. The only worry I have with C# is that it is connected to Microsoft. I know it's just a language and as such it is not "controlled" by Microsoft. Nevertheless, I'm sure that if you go into that direction you're naturally going to gravitate towards Microsoft solutions.
I learned the basics of C in high school already... also Pascal.
So I'm thinking that perhaps it would be a good idea to start with Java or Python.
I'm currently in the middle of a JavaScript online course and it's really confusing so I thought I would postpone JS and learn something more standard first.
Why learn languages that were made by mere human minds , uninspired ?
Austin Nelson
No such thing as a best language, different use cases need different languages. No such thing as a best "first" language either, if you really want to be a good programmer your going to wind up learning a wide variety of languages with different paradigms. Just because you missed out on learning pointers because you picked Python as your first doesn't mean you will never be able to understand it. Conversely, just because you missed out on learning OOP because you picked C as your first, doesn't mean you will never be able to understand it. Your first language is only important if you're stupid enough to think you can get away with learning only one. For web JS is probably the best first since it's pretty much the only language you will use on the front end (not counting HTML and CSS) and nowadays it's starting to also be used for backend programming. It's highly ubiquitous and basically inevitable for web dev.
Mason Morgan
ruby's a shit first language. There's too many aliases for similar functionality, so you won't be able to grok the underlying ideas
Andrew Sanchez
Replace C with Go.
It's basically a modern rethinking of C, improved in every way.
Isaac Wright
I boiled it down to Java, Python and JavaScript now.
I wanna learn them all but I'm just deciding where to start.
Lucas Rogers
Python. JS is total shit, C is too complex for starters and Java is bloated verbose shit. No idea about Ruby, but it's infested with hipsters, nu-males and """"feminist"""" """"programmers""""
Levi Martinez
>but it's infested with hipsters, nu-males and """"feminist"""" """"programmers"""" Sup Forums is leaking I see
Henry Anderson
>C is too complex for starters C is one of the most straightforward languages.
Evan Murphy
Go with ruby or python
What you really want as a noob is simple and succinct syntax so you can write shit fast. Otherwise you will just get bored and quit.
I tried learning 4 times, first with C++, then C and then JS. Ruby finally did the trick.
Joshua Brown
Haskell
Camden Ramirez
>ALERTA! ALERTA! My safe space has been breached!
Matthew James
>Let's settle a complex topic once and for all x-DDDD There isn't any one best language to start with. What comes with learning programming isn't the language itself alone, but the concepts behind programming.
If you want to be a webshit, you learn JS and/or Ruby. If you want to do pretty much anything else, you can start with any of the popular ones like C, C#, Java, or Python. Hell, you can even start with Visual Basic and it won't matter so long as you learn the CONCEPTS of programming.
>xD I posted "suggestions" based on snippets of things I've read while le redpilling the other boards although I've never so much as touched even a scripting language before >>>/anywherebuthere/
Ian Lopez
PHP H PHP
Just of werkings (tm) and do not suck (snice 7)
Angel Clark
Simply cancerous. Programming skills are not connected to specific languages. You are just a babby who needs spoonfeeding like what ruby does
Julian Perry
As someone that started with C I recommend Javascript. It introduces you to some concepts that exists in most high level languages and allows a beginner to whet their appetite, Node will allow you to access the system if you want to say make a server app etc
Colton Hill
A few other languages worth mentioning:
Go: Very simple language, has the advantage of being statically typed and compiled while also having near-instant compile times. It has no advanced features that distract you from learning the basic imperative style, and a very simple type system which is perfect for beginners that don't know about basic types like float or int.
I'm not a huge fan of it for my own projects because the simplicity of the language means it lacks a lot of features, but it is very good for some tasks and the simplicity makes it very good for beginners. Furthermore, google adoption has made it popular enough to be a useful addition to a resume.
Haskell: Is equally easy/hard to learn for beginners or advanced programmers who have only used imperative languages. So you might as well play with it early since it gives you great habits in other programming languages.
Oliver Richardson
God you are a faggot
Chase Williams
The most powerful programming language is Lisp. If you don't know Lisp (or its variant, Scheme), you don't know what it means for a programming language to be powerful and elegant. Once you learn Lisp, you will see what is lacking in most other languages.
Unlike most languages today, which are focused on defining specialized data types, Lisp provides a few data types which are general. Instead of defining specific types, you build structures from these types. Thus, rather than offering a way to define a list-of-this type and a list-of-that type, Lisp has one type of lists which can hold any sort of data.
Where other languages allow you to define a function to search a list-of-this, and sometimes a way to define a generic list-search function that you can instantiate for list-of-this, Lisp makes it easy to write a function that will search any list — and provides a range of such functions.
In addition, functions and expressions in Lisp are represented as data in a way that makes it easy to operate on them.
When you start a Lisp system, it enters a read-eval-print loop. Most other languages have nothing comparable to `read', nothing comparable to `eval', and nothing comparable to `print'. What gaping deficiencies!
Lisp is no harder to understand than other languages. So if you have never learned to program, and you want to start, start with Lisp. If you learn to edit with Emacs, you can learn Lisp by writing editing commands for Emacs. You can use the Introduction to Programming in Emacs Lisp to learn with: it is free as in freedom, and you can order printed copies from the FSF.
You can learn Scheme (and a lot of deep ideas about programming) from Structure and Interpretation of Computer Programs by Abelson and Sussman. That book is now free/libre although the printed copies do not say so.
Please don't buy books (or anything) from Amazon!
Jacob Murphy
>The most powerful programming language is Lisp But that's bullshit
Eli Howard
Autism: the post.
Juan Phillips
>> Not recognizing the obvious verbatim RMS quote.
Daniel Allen
Don't be a stupid faggot.
James Cooper
>faggot What's wrong with homosexuality?
Aiden Sanders
that it makes my dick hard
Cameron Hughes
>C is complex Are you 7 years old? C is the easiest programming language among the most used ones.
Jacob Garcia
Its gay.
Isaac King
constanza
Julian Cruz
agree
Ethan Rivera
JS by way of HTML and CSS is the new self taught default start. There are simply more resources for learning front end online than anything else for obvious reasons and the overhead is so low.
For a traditional education Python has won over most university systems for square one programming class. But most quickly move on to Java. C and C++ are covered very early by EE and CompE students but rarely by CS in their first few semesters.
Other languages have their ups and downs but lack overall education saturation. C# has some decent resources through Microsoft which makes it a close trailing third if you want to work in .NET.
If I had to do my education over again through my PhD, I would like to have begun with Python and Web development. I had no glorious Internet in my college days or it was very limited. We leaned Scheme and C primarily and moving up from there was logically straight forward, but made transitioning from theory to building functional tools a steep climb.
Learning to program is about little victories. Python gives you access to simple things and allows you to do things that are easy and useful without a good deal of experience. That keeps you going where building up strait from C to a complex desktop program would be very daunting and disconcerting.
Bottom line, keep motivated and stay at it and if you have the intellect come study with us at MIT. :^)
Kevin Roberts
Until you have to debug it that is. Like how an off by one error when accessing arrays will often silently fail and very rarely give you a segfault.
Benjamin Clark
it'll instead read garbage, which is telling
Parker Rodriguez
>Learning to program is about little victories. Bullshit.
Programming is about total power and control. You don't have total power and control in Python and you don't learn to have it by getting a little bit at a time. The only way to teach it is to throw people in and see who sinks or swims.
Christian King
Honestly it doesn't matter too much. The biggest mistake I ever see beginning programmers make is fretting over choices like these. Just pick a language and start coding. Ultimately, unless you've chosen something incredibly obscure, you're going to have plenty of documentation and support to help you. The differences between the languages are meaningless to a beginner.
Parker Collins
>no_fun_allowed.gif
Samuel Ross
Whatever language you choose make sure to focus on the core language and forget about third party libraries, build systems and other distractions. Using an IDE is good because they take care of the building.
Anthony Anderson
>The biggest mistake I ever see beginning programmers make is fretting over choices like these. Just pick a language and start coding.
Yes, this. Too many people think too much. It's OK to learn C for one month and then say "fuck that shit, I'm never gonna code in C again". But it's stupid to keep on thinking without action.
>The differences between the languages are meaningless to a beginner.
No. There's a difference in what you focus on.. For excercise and amusement, let's make a simple "string reverse" in an ideomatic way!
C: #include #include
int main() { char s[100] = "OP is a faggot"; char temp; int i, j = 0;
i = 0; j = strlen(str) - 1; while (i < j) { temp = str[i]; str[i] = str[j]; str[j] = temp; i++; j--; } printf("%s", str); return (0); }
Java: class Main { public static void main(String... args) { String op = "OP is a faggot"; StringBuilder sb = new StringBuilder(op); sb.reverse(); System.out.println(sb); } }
C#: class Program { static void Main() { string input = "OP is a faggot"; string output = new string(input.ToCharArray().Reverse().ToArray()); Console.WriteLine(output); } }
Python: "OP is a faggot"[::-1]
Ruby "OP is a faggot".reverse
Now it depends on what you want to learn:
The C approach teaches you about how to make loops, how to assign values and so on. The Java approach is simpler, but requires some knowledge about the right Java class. The C# approach is even simpler and more beautiful. The Python approach is super short, but "hacky". The Ruby approach uses Ruby's superb String manipulation functions.
Each solution has pros and cons, depending on your goals. The "simpler" the processing, the less you will learn, but the more you can focus about the "bigger picture" instead of fighting details.
There's no silver bullet..
William Garcia
I forgot, this would be the JavaScript version: "OP is a faggot".split("").reverse().join("")
(On a sidenote, this solution also works in Ruby.. )
Brayden Jones
Every opinion about python being a beginner language became invalid after they introduce python 3.
Half of the libraries I use only support 2, even in 2016.
Carson Moore
True, it's a shame..
Zachary Wood
OP here. Based on my amateurish impressions of the code examples, I would say the C is clear and show you step by step what is to be done.
The Java is weird and looks overly verbose, strange.
The C# looks quite elegant.
Python example looks gay.
Ruby looks most beautiful but "magical".
Brody Robinson
So now it comes down to C, Java or JS
Josiah White
Can't you do something similar in newer versions of Java too?
Ryder Thomas
>undeclared `str` >return ((((0)))) > not using for(i=0, j=strlen(str)-1; i
Carter Sanchez
The keyword there was "learning," user. You don't just fall into absolute power and control, that comes later. And the way most people arrive at that destination is by maintaining a sense of accomplishment and direction.
In my day that meant rigid adherence to curriculum and theory because of the time and expense involved in development. That drove out a lot of traditional learners and selected for a very academic sort of individual.
From what I know after years of teaching since then, I believe the non-traditional and more common type of pupil can in-fact become as successful provided a more bifurcated approach to learning that emphasizes equal parts practical accomplishment and theory.
The university system as a whole is undergoing major changes beneath its impenetrably aged and stoic exterior. By the time I retire I fully expect to be lecturing entirely through a reactive learning virtual session and directing research into more intuitive ways of collating theoretical progress with application step perpetration.
To be as colloquial as possible, someone who does not have the intellectual zeal to study under our department at MIT would behoove himself to take accomplishment and self-satisfaction into account before heading off in the direction of self-study. The most recalcitrant habit of the common CS student or would-be autodidact is lacking the fortitude to continue when faced with null progress. When we, as educators, find a better basis for overcoming that, the future will be extremely bright.
Christopher Cook
>not initializing "i" inside the for loop.
Luis Jones
Pretty good judgement.
Just a few points: The C solutions has some tricks you might not expect, i.e. you need to end every string with '\0', to indicate the end.
(There are no actual "strings" in C you just read every character until you hit the '\0' symbol).
This is not relevant here, because the reversed string has the same length, but as you see, c is more tricky than you might think..
The python example is not "gay", it's actually quite powerfull..
"abcde"[1:5] lets you use an string like an array and gives you the substring "bcde".
Now you can also chose the step-width, "abcde"[1:5:2] gives you "bd".
Since you are a beginner, you can't grasp the abstraction level and power of such statements. But just compare C (where you don't even have strings) with python (where strings can be used like arrays).. You get the rough idea how much longer a programm in C would be than in Python.
But as others said before: You just have to start somewhere. If C feels the cutest for you, start with C. If you think Ruby is cool, start there. It's all up to you..
Jack Nelson
Tbh, C > C# ≈ Java > Python ≈ ruby Although I personally don't like C for everyday use, C++ is much better imo.
Noah Hall
...
Luke Jenkins
I know someone would smack me for the C code, of all those languages C is my weakest one..
But I just tried to give a simple example, neither the "perfect solution" nor the "ultimate shortcut hack"..
Mind sharing a "Turbo Pascal string reverse"?? :)
I already did use a short version..
But you could also wirte it like this:
class Main { public static void main(String... args) { StringBuilder sb = new StringBuilder("OP is a faggot").reverse(); System.out.println(sb); }}
Benjamin Roberts
Or even shorter:
class Main { public static void main(String... args) { System.out.println(new StringBuilder("OP is a faggot").reverse()); }}
Lincoln Stewart
Java should always be the first language anyone learns. I actually think that C# is a slightly better language but the added features of C# make it more difficult for a beginner whereas Java is about as vanilla as you can get for a programming language. The biggest mistake anyone can make is to think that scripting languages are simpler and easier to understand than a language like Java, theyre not. The OO in Java is about as standard as you can get while each scripting language is very lax in how objects relate to classes. Scripting languages are more dynamic and allow you to break encapsulation. Also the static typing of Java is better for a beginner and will start the beginner with good habits when it comes to types.
Liam Martinez
>Java should always be the first language anyone learns
Blake Martinez
I'm going to shill for C# >in b4 pajeet meme I farted around learning a little of everything for years as a NEET and C# was the one that clicked for me. Built a portfolio in about a year and change then got hired in '12. Currently working on Java backend, but C# for me was a nicer way of getting the ball rolling. The fact that MS will literally suck your dick to get you into the C#/ASP/NET stuff is also a nice bonus.
Grayson Evans
>The OO in Java is about as standard as you can get while each scripting language is very lax in how objects relate to classes.
Sorry, but that's just not true.
Ruby's object modell is way more strinct than Java's.
In Ruby, everything is an object. Even classes.
Java pretends to be all about OOP, but "int i" is NO object while "Integer i" is an object.
So why not using "Integer i" then? Because if we compare "Integer i = 2000" to "Integer j = 2000" they are differnt, but "int i = 2000" and "int j = 2000" are the same.
And let's not get start about the fact that "Integer i = 10" is the same as "Integer j = 10".. :^)
No, Java also has it quirks. But I do agree that it's pretty vanilla and a good starting point. If you know what to avoid (for example using Integers) it's pretty difficult to shot yourself in the foot..
>Also the static typing of Java is better for a beginner
Again a bad comparison.
In Ruby, this doesn't work: a = 12 puts a
..but this works:
a = 12 a = "now I'm a string!" a = 12 puts a.to_s
Just like in Java you have to cast objects, the difference is that in Java it's more explicit and you are more limited when it comes to strings:
int a = 10; double b = a; int c = (int) b;
Daniel Scott
>If you know what to avoid (for example using Integers)
Bad wording..
I mean you should always use the "int" type (the primitice data type for integers) and not the explicit "Integer" type..
Good: int i = 3; int j = 3;
Bad:
Integer i = new Integer(3); Integer j = new Integer(3);
It's more complicated than that (i.e. a Java dictionary which expects Integers as keys! ) but to make things clear.
Austin Reed
Start with Haskell.
Elijah Rivera
Should I even bother with Java if I want to get into Android app development or just learn C# directly since today we have xamarin etc ?
Luke Gutierrez
Scheme is simple and clean. What is important is learning how to think like a programmer.
Blake Phillips
Hey Sup Forums, I have two second edition K&Rs, one is teal and one is white, the teal one seems to be intended for India but I cannot find any difference between them. Is there one?
Easton James
>what is talent
Gabriel Evans
G factor is controlled for in so far as most people with a sufficiently low G score are going to be too inept with computers to bother even trying to learn to program.
Long story short, if your IQ is double-digit then you will neither aspire to nor attempt to become a software developer. More than likely you will rent-seek as a welfare recipient or take a blue collar job.
Dylan Foster
Explain the SJWs
Ayden Jackson
Why would you learn C# if you're strictly doing Android development.
Honestly learn web dev shit before you get into app development. A useful app is usually a full-stack project.
Levi Fisher
>rent-seeking I already explained it. They're in de facto welfare systems subsidized by private companies rather than public services.
Benjamin Rodriguez
Commodore 64 BASIC (or similar)
The argument that "unstructured" programming fucks with your mind is BS.
It tremendously helped that I started with a language which essentially was very much like Assembly (GOTO/GOSUB). It allowed me to pick up Assembly later quite easily and also understand how programs actually look like in memory, how they work and what happens under the hood in C. You can also pretty easily reason about higher level languages and with enough knowledge you can guess pretty accurately what happens when you do something in a high-level language.
The CPU only understands opcodes which has (most of the time) a one-to-one mapping to assembly instructions. That's all a computer can understand. Anything else is computer theory, math.
Actual, realized languages are the trade-off between assembly and theoretical math constructs.
This is how a computer works and how you can program it.
All those faggots, who got introduced to computers by learning a high-level language, don't know how to program a computer. They also don't know how a computer actually works.
Digital circuits are also mandatory if you want to get even deeper. (Hazards included.)
Dominic Baker
Quite a few entry programming tutorials, like Code.org and Kode with Klossy, teach Python or Ruby. I wonder why.
Dominic James
meh yeah aim to learn javascript and web if in the future you would enjoy sucking cock of your it manager and ready to be fucked in ass bullied in 9/5 job
if you wanna man the fuck up toughen up and be a solid hacker im gonna say this once and for all learn C no arguments no questions no doubts and this is not open to discussion
im not even saying C with classes, c++ fuck that false crap language
learn more about unix systems
and if you are none the above just wanna learn coding in general learn python
lastly do not fall in memes in fa/g/gots league i wish all you would take these serious i hope maybe one or two of you will
Jack Cook
I would say web application development is more difficult than native mobile application counterpart for the following reasons.
A typical end to end web developer needs to know HTML, CSS, JavaScript, SQL, and some backend server-side framework like Django, Ruby on Rails, J2EE, .Net. While the mobile developer needs to know primarily Objective-C or Java.
With those languages in hand the web developer will have to know lot of about the different behaviors across the many popular browsers like Firefox, IE, Chrome, and Safari including versions at least five years old.
The web developer will have to be able to write highly scalable code that handles many concurrently users. Performance bottlenecks can effect the responsiveness of the website because all of the clients are sharing the same infrastructure. For mobile applications much of the code runs on the phone and does not affect the performance of other users.
Julian Evans
What about Java?
Benjamin Hall
>A typical end to end web developer needs to know HTML, CSS, JavaScript, SQL, and some backend server-side framework like Django, Ruby on Rails, J2EE, .Net. While the mobile developer needs to know primarily Objective-C or Java. Literally all of those are memes
Nathan Ward
before to give you the real thing first i have to know whats in your mind that drives you to learn java?
Evan Nelson
i am a beginner and im using ruby. it seems pretty fun and easy so far.
Hunter Nelson
...
Nathan Thompson
3 subclasses have been added to your account
Elijah Hill
Disgusting and full of repetition
Lucas Cook
Because of employment opportunities and because it's the language used to make Android apps which is something that sounds fun to me. Moreover, I hope to learn a lot about OOP from Java and perhaps jump to C# later if I need to with ease.
Chase Hill
C#. Lets be honest if you want to just become a pajeet learning C/C++ seems not worth it. Java, while being similar, lost to C# and is only worth to learn if you know you will work with it due to its popularity. The rest is not really traditional enough to make a good first language and should only be learned after you know at least the basics of C/C++/Java/C#.
Hudson Morris
Java first, then C#. It's a pleasant, easy transition anyway.
Brayden Ortiz
I did the reverse and have not been unduly troubled in the transition. Java has more resources available due to its ubiquity, but C# has a smaller number of high quality resources due to Microsoft pimping it as hard as they can.
Microsoft essentially gives away the tools you need to succeed with C# in the hopes you'll go into their ecosystem, but diverging after you have a solid grasp on C# and foundational programming concepts is simple. Just don't get too fond of Visual Studio because Jetbrains has the Java game on lock.
Joshua Jackson
>Jetbrains has the Java game on lock. What do you mean by this? Is NetBeans not good?
Brody Price
IntelliJ is the gold standard imho and most of the industry people I work with agree. Netbeans and Eclipse are suitable for the job, but not nearly as polished.
Gavin Mitchell
kek
Caleb Rivera
>The Java is weird and looks overly verbose, strange. What the fuck?
I understand that as a general criticism, but not based on that example, what happens is crystal clear and the whole thing can easily be condensed into one line you sound retarded and unable to judge for yourself
Jaxson Ortiz
>Turbo Pascal string reverse Not him but here's a Free Pascal version :^)
Oliver Cox
Integer i = 3;
is also valid syntax, retardo
Angel Perez
those quirks are trivial and something you'll never have to worry or care about outside of /dpt/ fizzbuzz engineering