I've got too much spare time, and I want to use it to do something productive. So I want to learn coding.
C++, Java, Python, go, etc.
Which is the easiest to start with?
And are there any good websites for a newbie?
I'm not a dev myself, just tried some times but, if you want to be "old school", start C.
If you want to be newschool "and cool", do stuff quickly and easily probably Python. Python is cool since there is a LOT of module, a big community and you can do web with it.
Some will say Python sucks, some say it rocks.
Advice: don't listen anyone, just try some language and find the one you like.
But C looks great since you'll start from something closer to your machine.
It depends of what you want to do, how much time you want to learn a language and what you prefer.
Personally I'm a huge proponent of Go-Lang. But in general you will find that it's more suitable to fit what your project is to the language you use. You wouldn't really want Go for a full gui app, nor would you use python for game hacking.
What do you want to do?
As for just to learn basic concepts and the fundamentals I'd recommend C# as it's very current and marketable as well as being usable in ASP.net for web development easily while being transferable to most C based languages.
Python is a pretty good choice. It's flexible (you can program in different ways) and easy to learn.
The 2/3 thing sucks, though. Learn 2 if you want to use a lot of other people's code in your projects, learn 3 if you'd like object orientation to be closer to actual object orientation.
Really though, almost any language is good. You'll probably learn several if you keep at it, and none of them are as important as being able to figure out how to program (ie fucking DESIGNING that shit so it works, not just knowing what all the keywords do).
Avoid Lua, if only because it pretty much forces you to start counting at 1 instead of 0, and you'll be terminally fucked for logic if you fall into that trap.
In my experience the best progression is the following
1. Learn memory management and all standard programming features like functions, variables etc.
2. Move on to object orientated programming
with that in mind, start with C and get good at that shit, then later move on to C++,C#, Java or any other OOP language and be ready to have your mind fucked by OOP
the easiest is python and java. they are simple as fuck, but they get you into making mistakes, mistakes that don't matter in that specific language but do to others.
I learnt C++, it was a brainfuck at the start, but when I got used to it...it was easier, then I learned Java, and tbh i didn't really need to learn java.. i already knew java due to the fact it was OOP.. that shit was so easy it was stupid. I also was better than most of the Java devs in my company because I learned fundemental techniques from C++ whereas they had not had any background knowledge at all.
But it depends what you plan on doing with your language.
C++ is know the be one of the hardest langage.
If you wan to start with Java you should be able to do some cool stuff very quckily.
But for me it's better to tearn with C, it's not the easiest langage but he will give you a better understanding of how the computer work.
I love C, but why the fuck would you do this to someone? Are you going to stick them with K&R so they have to figure out the differences between K&R and ansi C before they can even determine that GCC is using c99?
Ruby is so comfy. So lovely to use, so fucking slow. Marijuana goes nice with Ruby.
C/C++ is the harder part, you have to deal with many things on your own that other langues do for you in the background.
Mostly people start today with Java, C# or more recently with Python. I never worked with Python and I heard it has some concepts you find nowhere else. Indentions instead of breakets.
I would suggest Java or C# - and you don't have to start with object oriention stuff, get the basics down (loops, conditions) and then go further and start at some point with objects and the concepts behind this (inheritance, diamond-problem and so on).
It will take you some weeks to work it all out.
Thinking about doing starting with java because I want to make mobile apps. Also want to branch out though. Would that be a good language to start with? I've got a book but it didn't take me very fat. Can't find anything past the hello world stage.
Nobody likes Java. I'm just trying to point out it's just a shit start. It was the python 10 years ago. Everyone was learning QBasic or Pascal and then Java. Now we have Java being a popular language and everyone knowing it and using it for everything, even in places where it is poorly suited.
>disclamer:i dont like java
Why is java even a thing in 2016 ?
It's literally bloated garbage.
Android could be 10x better if native linux apps were in place, instead of that shitty crap.
memory management - there is none with C/C++
pointers can be tricky too. That's all I remember from my C/C++ experiences.
BTW, nobody seems to explained this: C is the older version with no objects. C++ is newer and the biggest difference: it allows to use objects.
Well, I'm a first year student in software engineering and they taught us python first 2-4 weeks. After that we moved on to Java.
Java is very easy to start with. After 4 months I already know how to write simple text-based games, like chess, tic-tac-toe. I would recommend Java or C++ (I don't have any experience from C++ yet, but I've heard that it's more or less like writing in Java)
Yes. Degrees don't mean much.
>learn how to code
>write shitty programs
>learn how to program
>write better code
>put code on display for people to read and use
>you now have a programming CV that includes proof that you can actually program.
all high level languages recommended today (even for system level programming) don't let you make many basic mistakes with memory management. this is a widely agreed upon sacrifice for potentially minor loss of optimization.
(see discussions about how we can prevent fiascos like heartbleed in openssl.)
I cant reply anymore, but I'm gonna save this thread.
This is now a porn thread for shits n giggles
Have a good day!
>I've heard that it's more or less like writing in Java
Whoever told you that has never wrote or even went near to C++. Just look at a C++ vs Java code comparison. C++ is much more confusing.
Java became quicker over the years. Nowadays you can use it in productive systems.
BTW: Nobody mentions SQL here... I think today are so many databases in use, there should be some SQL knowledge as well. It's often required besides another language.
Imagine walking into an interview speaking ebonics.
That's what it's like for a self-taught programmer to try to get a job in a professional environment.
I would highly recommend looking at how other people code (on GitHub or whatever) and try to match their style.
it's bytecode, needs a VM, layers on layers of interpretation to get simple stuff done. So much unefficient. Yeah I dev on python for android too, it's way much cooler and simpler, too bad jewgle killed it instead of bringing it to the next level.
> productive systems
at the price of performance. But what is the big gain with using java over other languages actually ?
The most important thing in the beginning is that you don't lose interest. So don't pick up a language that is overly hard and makes you lose that interest before you even get started.
Wouldn't start with C++. Start with Java, later on OP can worry about what the virtual machine is doing after getting to grips with basics of Object Oriented coding.
Regardless of whether you do choose Java or not, don't make the mistake of trying to learn multiple languages at a time, very difficult to do this outside of a structured learning environment (i.e. college). Pick one and commit to it. Once you learn your first then the others become easier.
No it shouldn't. Learning the syntax is 50% of using C++. Knowing what syntax and how to use it is the other 50%. For example, using pointers properly and passing by reference or value. These are all things you have to worry about in C++, but not in Java.
java has fared just fine for Android. in fact, most projects that do exactly what you said using Linux binaries are incredibly problematic - that's the Android NDK. that's where you get thousands of users posting "doesn't work on galaxy s??? device"
the alternative is a tightly controlled platform with some bullshit like objC or swift
pic related, it's swift
the gain would be it's free.
many companies want to save their money instead of buying expensive VisualStudio licences
and I think the performance is okay. When you are working at some project with fast output then it might be too slow.
I work with C# and PL/SQL (Oracle) since some years and the company I'm working for is in the logistics. We move boxes from point A to point B. Depending on the customer this has be to done quick or extremely quick. But we have 90% of the logic in the PL/SQL code, near the data, so we can be extremely quick.
For a normal desktop solution Java is just fine.
So what i'm getting from this thread is that I should start with Java, python, or c# . I should focus on learning one of these extremely well then moving onto another one and once i have mastered move into C++/C as these two are much harder.
>correct me If im wrong, it's 3am
Any sites that are good for this?\
>not Op by the way.
java is not inefficient. the jvm running your bytecode is more efficient than your by-hand c optimizations, as long as you made the right type choices.
the jvm is even able to adaptively reoptimize based on at-runtime behavior.
stop spreading this misinformation, it's real old.
Yep, sounds pretty good, anon. Don't be afraid to branch out and try some other languages before you master one, though. You might find one that clicks with you and turns you into a programming demon. Once you've learned a few, learning a new one is super easy.
could i learn this at anything listed here >>669242927?
alright then! I'll mess around and see what clicks the easiest between the three.
Thanks you guys,, i spend all my time at home anyway might as well learn something useful while i'm at it.
Also, it is important to keep your goal in mind. Leaning languages isn't the goal. Solving performs is the true goal. You lean the languages to know which one to use for a specific problem and how
>most projects that do exactly what you said using Linux binaries are incredibly problematic
you can cross compile a lot of linux cli tools for arm, and they work just fine with minor changes. The fact that something doesn't work on galaxy S doesn't mean much, as it works for almost everything else.
that it needs a VM to run, it's not native code, nor iterpreted like perl or py. again... blooooaaated
>the gain would be it's free
>implying compiling C/cpp is not free
Performance is acceptable, but it could be way better given the hardware out there.
Look into SL4A. Main project is killed on google, it just moved.
>as long as you made the right type choice
Good luck having kids making the right choices while developing their apps. System apps might be even optimized somehow, but it's all the rest that fucks up with your phone.
>stop spreading this misinformation
It's just my opinion, not the utter truth. If you guys can make 1337 java code, good for you.
>that it needs a VM to run, it's not native code, nor iterpreted like perl or py. again... blooooaaated
You are just digging yourself in deeper here, man.
>Good luck having kids making the right choices while developing their apps
So you're blaming java innefiency because the devs don't know how to write efficient code?
By that logic every language is inefficient
Not that guy but he's kinda right. The reason php is hated is because it allows for people to make bunch if trivial mistakes. While in languages like Ruby it would be difficult to make
That guy really has no idea what happens when he compiles his code, he seems to think it's magic or something.
hardware compatibility is just not as simple as "you can cross compile for arm targets." there's a whole category of problems you must not be aware of when there are independent implementations of OS-wrapped resources.
like all driver problems, ever.
>interpreters inherently better than VMs ... blooooaaated
your understanding of VM vs interpreter must be wrong. I can think of projects that run better in the JVM than even pypy without JIT... pypy being fucking amazing, and a more bloated interpreter.
>good luck with type choices
I said type choices because it's the *easy* part. the comparison is still valid as long as the "kids" make the same type and algorithmic mistakes in java and C.
>just my opinion bro
you're trying to discuss objective, real things that can be measured. you're literally wrong. has nothing to do with your 1337 code
Anybody can make a bunch of trivial mistakes in ANY language hand have shitty, inefficient code.
Personally, I despise PHP because it is ugly and I find it to be a pain in the arse to use. It works, and I'll use it for the shit I have to, but I don't like it. I complain a lot about it, but it's really not PHP's fault, it's just my taste.
Duck typing makes it easier to have your code up and running faster, yeah. Have fun finding those bugs when most of your code seems to work fine. With static typing you won't even get out the gate until you fix that shit, but your code can still stink to high hell.
>but it's really not PHP's fault
But it is. Even the creator himself said he doesn't know where it went wrong. Someone somewhere a long the line fucked up. It's good for down and dirty coding tho I'll grant you that
Learning database is useful too when you are coding, so yeah. You can start with SQLite, as it's easier and more portable, and will get you started. Useful for single-user like a personal db or an app.
SQL is piss easy, you can learn it in an hour or two. If you start getting into webdev, you'll pick it up some afternoon.
It's pretty useless on it's own, don't bother with it until you need to have a database for something.
but please, learn C instead of C++.
you'll understand how all machines work in general, and later, C++ will be a natural conclusion to tools you'll feel missing in C.
it will be much easier on you, and you'll understand where the barrier is between machine and language. people who start with C++ struggle with that
I'd consider what types of projects you want to make and then pick a first language based on that. Some suggestions would be:
> C# / Unity - game development
> Python - STEM
> Java - android
> Swift - iOS
job security = nobody can work with the code you made
there are very old systems (sun or someshit) which are very expansive to repair/develope further because there are no people around who still can read that shit
I just think C is a terrible place to drop noobs.
I went from BASIC to 6502 asm to COBOL to turbo fucking Pascal before I touched anything in the C family.
The most important thing in my education was computer camp, where basic microcomputer architecture got explained.
This right here is the shit I started with. Fuck I'm old.
It's not JS, it's UnityScript
it's offers no advantages over C# as far as I know and it's unpopular among developers. JS is probably my main language at the moment but I code C# in unity because it feels like a better fit. I suspect the unity team only added UnityScript because they didn't want microsoft to bully them if they were locked in to C#
why do you guys get the easiest shit to start with
It's BASIC fo sho.
And I thought I was the only one.
Hey, don't go calling me grandpa now. I'm only 48.
OP let me tell you this: Everyone in this thread who says "Program language 'x' is waaaay better than all the others." Isn't a reasonable programmer and is not worth listening to. (s)He is a judgemental fool who limits him/herself in several ways.
Choosing your (first) language of choice depends on several things.
1. What is it you want to build? Web applications? Desktop applications? Games? Scripts/mods? Some languages fit your needs better than others.
2. Who in your direct environment (family & close friends) code aswell? Who can you ask for help? Try choosing a language in which you can get some help from people nearby.
3. What kind of experience do you have? Some languages like C++ are so called low-level programming languages which are a little harder to get into if you don't have any prior experience or if you have a hard time figuring out abstract concepts.
4. What tooling do you need / can you afford? Try Visual Studio, C-Lion, Netbeans or PHP Storm.
What i'm trying to say is: There is a language out there for everyone. Explore as many as you can, try them all and find out what fits your needs!
I've been a software engineer for 3 years now. I've learned programming in the following order:
The absolute basics:
- HTML & CSS (It's not actual programming, rather markup language) But it's a good place to start
- PHP (Not object orientated, so you can learn the basics of actual programming)
- JAVA (Object orientated) I've learned JAVA to find out the basics of OO-programming and make desktop applications. It's a slow running language but it's a good place to start programming actual applications
- C# (My personal favorite) I've been programming C# to develop numerous applications which vary from simple tools to complete management systems
- ASP.NET (Web and C# combined. Object Orientated by nature. PHP can be done OO aswell, but i prefer C#)
- C++ (Currently studying C++). C++ Is a very low-level programming language which has very little help.
I think there are two paths - "get stuff done" and "senior engineer".
"senior engineer" needs to know what a machine does and why so problems and optimizations that span the full stack from CSS to opcode can be spotted.
I bet we agree not to start anyone (even "senior engineer") with assembly... but a second-year C programmer could intuitively understand what the machine is doing at the assembly level. C resembles the underlying model well, while BASIC, COBOL, Pascal obviously do not.
Also there are many websites which can help you to begin coding. Some of these websites depend on the language you've chosen
Here are a few which i've used in the past:
- And many more!
i would recommend basic as a start.. well it's just basic.
upgrading to C will get you into the machine close programming
going into java or stuff will be maybe more suited for todays programming environments
It doesn't matter how and where you start. It matters that you start in a place where you feel comfortable. If OP doesn't know anything about any kind of computer language, it might be a good idea for him to begin with a markup language rather than an actual programming language. Slow and steady wins the race.
Many universities, including mine, start with markup languages after which they climb into programming languages.
>job security = nobody can work with the code you made
Kek. This is one thing that always amuses me: it's never in a dev's interest to actually turn in good work. Or even finish the job at all.
You wouldn't believe the money my organisation has thrown away on contractors, who either couldn't code or had no intention of completing the project. And guess who has to untangle the spaghetti afterwards ...
>You wouldn't believe the money my organisation has thrown away on contractors, who either couldn't code or had no intention of completing the project. And guess who has to untangle the spaghetti afterwards
This is my life. At least I get some say in the hiring.
And then there are great guys that go above and beyond. Best team I worked with, though, was from another corp.
I've been a dev for 20 years and have met 1 (one) female programmer. I've met other women in sysadmin and DBA jobs, but almost no actual developers.
>my anecdote parries your anecdote
well i knew a guy from a small logistics company, who worked on a digital catalog system.
He did a good job and delivered a stable system, which got him and the three guys who did it before by hand fired.
zozzle away friends
Ive been learning for close to a year now, been learning python to the point where I can make whatever program I require, about a month ago I learnt the syntax of java in about 4 hours. Java is good because it leads into a lot of other programming languages (C, C#, C++, Js) that become useful in a career situation. In my opinion start with python as it is very easy to understand and move onto java once you FULLY understand all the main aspects of coding. Personally going on to university this year, and I'm looking forward to it :)
One of my teachers who had taught me Java, Database technology, Scrum and some other courses also was a really attractive woman. When me and some of the guys would hit the bar after a day of school some of the guys would share stories how they wanted to bang this teacher. She's a really nice and smart women. Yet because she is a woman in a mainly (autistic or prejudged) male world, she didn't get all the respect she deserves.
Although i agree with you that the programming world is dominated by men, nowadays all kinds of big corperations stimulate women to program.
My old class used to have 25 guys (me included) and 4 girls.
i miss u baabe :(
golang is pretty bad.
go is used for headless server applications. and rarely, because it's new. and hard to adopt.
it doesn't replace server code. and it's definitely not easy.
properly algorithms in python, java, maybe even php, won't be worse than golang
go will *increase* your workload by a lot. it will make sense if your go application will run countless times (>1bn/day) saving cloud costs. but then again, if you understand why it's fast in go, you can implement the algorithm in your current environment. remember, golang doesn't magically change your IO or throughput.
golang is only different because its default structures are for concurrency. these are the same structures that exist in other languages, but just aren't default. it helps to avoid architecture problems with medium-advanced cloud application developers.
the fad will pass.
My 14 yr old daughter started with HTML & CSS, then C; Now she is working on Ruby (which she loves, but it is taking a bit of time to learn).
She's studying it all for free on the interactive site:
Well it wasn't.
I admit it sounds like one, but that's because I think it's a good site and has helped my daughter a lot, so I thought I would contribute to the discussion, faggot.
learn python, then java or c#, and then move on to C++ and assembler.
python will allow you to quickly write programs while getting into minimal details, thus letting you fuck up and learn from your fuck ups faster
java and c# are a little more in depth and could actually land you a job, C# is nicer in my opinion on account of it being less horrendously verbose but pretty much restricts you to windows dev. the major advantages of java and c# is they gently introduce you to the basics of memory management, pointers, static variables, etc. c# also has some nice shit built into it like linq.
c++ is the long term goal, when youre confident in your ability to write and maintain large c#/java programs using the best practices of the language in question start learning this. MS C++ is a good way to start if you dont feel like learning a ton of shit at the same time (makefiles, headers, more advanced memory management, vim or emacs, etc). its gonna take you a while to get here, but once youre here and youve gotten confident enough to actually contribute a fair bit to the development of larger c++ projects on github and the like you stand a good chance of landing a job with this.
you need to know assembler because to be a good c++ programmer you need to be able to pull your programs appart at the asm level and see what exactly is going on. for this youll need to read intels x86 manual as you go along, just dont be a retard and actually try writing more than small bits of code in asm, theres a reason c is called portable assembler.
I used to hit huge road blocks while programming on Windows. Once I switched to Linux code kept pouring out of me. I guess it has to do with technical environment, where you have to tweak the OS which gets you in the mood. Like you would learn in a library, for example, instead of a construction site
As a web developer I find linux (Ubuntu) to be a very productive environment, if I'm doing iPhone stuff I need to use a mac which is very similar. I only really use windows to play games, but if I was developing for windows or xbox I'd use windows. My suggestion would be to install ubuntu on a spare computer/laptop and see how you like it. It takes a while to learn the new system and get used to doing a lot of things on the command line but once you do you'll find it's much more pleasant than clicking on everything all the time.