Starting Programming Language

    Hello Tek Syndicate team, what language would you recommend to learn first? Preferably something that will introduce me to good programming habits and structure, that is relatively simple to learn, and has rules that will apply to most other languages. Along with whatever language to think would be a wise choice, please list a good book or way to learn it as well as a good IDE for it.

C++

Programming in and of itself is a large specialty. There are obviously many languages you could start with.

C++ is definitely a good start; it forces you to learn the finer aspects of computer programming, like pointers and such. I'm not sure of any good books on C++, but for the class that I'm in, I'm using Tony Gaddis' Starting out with C++ 7th Edition.

Java is a flexible language if you are thinking cross platform without having to recode portions of the program. Netbeans and Eclipse are good IDE's.

If you're a .NET fan, C# is another option as well, and pairs well with Visual Studio, the IDE for .NET.


As with any language, the only way to get better is to write simple programs, read up on a reference website for the language, and take a look at the source code of software written in that language. Explore and poke around a bit, see how things work.

I said this in another post:


I recommend you to start with C++.

C++ is a difficult language. There are others that are easier to learn. I would never argue about that.

But C++ is easily one of the most powerful languages around. It can be highly efficient, and highly elegant, at once. Of course, nothing keeps you from making a fine big mess of everything, either.

If I recommend C++ as a first programming language? Actually, I don't know any better. Others might protect you from making mistakes, and make initial success (e.g. your first GUI application) easier. But if you build on a foundation of C++, you will always be on a secure footing. You might never have to chose another language at all, actually. But if you want / have to, you will find it ridiculously easy.An experienced C++ coder can do e.g. Java at full speed in a matter of weeks. The other way round? Much, much more difficult.

Once you know C++, all other languages are easy by comparison. At least until you venture into other paradigms like Lisp, Haskell, or Prolog

 

Try this website:

http://www.programminghelp.org/

Try this tutorial

http://www.youtube.com/watch?v=xfgcEjCd9as 

Books i recommend:

The C++ Programming Language 4th Edition by Bjarne Stroustrup (creator of C++) *good book but not well organized*Kirch-Prinz, Ulla, Prinz, Peter A Complete Guide to Programming in C++  Best C++ book for noobs, it will teach you from scratch how to do shit and etc.*Expensive* 

 

I agree with everything you said, but in the long run if you will learn more than one language C++ is the best language. If you learn C++ as your first language, Java, C#, C and another languages will be way more fast and easy to learn.

Also depends what you want to do of course.

 

Although I agree with the idea that C++ is an incredibly powerful, and effective language, i think we're ignoring the "is relatively simple to learn" part. For a beginner language, to teach you the fundamentals of how programming works, i would recommend looking into Python, or Visual Basic. These languages may not return as much value as marketable skills, but they will provide you with a more human readable language, that will teach you the basics of machine logic, and program structure. From there you could move into Java, and C++. 
Don't get me wrong, if you have the commitment, and dedication to learn C++ right from the get go, go for it, it will pay you back a hundred fold down the road, but it can be a harder language to learn if you don't have any experience with programming. 

I learned C++ like 8 years ago and it was my first language. I don't know how old you are, but back there we hadn't half of the ways we do have now to learn it or other languages.
You can learn it in 6 months if you commit yourself to it.
I said learn it not master it, nobody can master C++. 

I am going to go another route with this programming question.

I strongly do recommend JavaScript to start. It will give you some basic concepts, ideas, and how programing works. After that, I suggest either PHP or go into actual programming. For that department, I can not suggest all that much, because I am a web developer myself.

So, here is basicly how I did my learning process:

HTML -> CSS -> JavaScript -> PHP -> ColdFusion -> Perl -> PHP 5 (OOP Methods)

And now, I am trying to get some Python done.

If you're goal is to get into web development, I completely agree! However, consider the forgiving nature and puzzling confusion given during debugging as well with Javascript; Javascript - The Good Parts demonstrates this well.

If he doesn't learn C++ he will be a n00b for life.

Amazon, Bloomberg, Google, Facebook all critical parts of these systems are written in C++.
Many other programming languages and technologies depend critically on c++'s performance and reliability in their implementation.

Examples include the most used Java Virtual Machines - Oracle's Hotspot, JavaScript interpreters - Google's v8, browsers - Firefox, Chrome, Safari and application framework  - microsoft's . net.
I could keep going but you got my point, you are not a real programmer if you don't know c++.

Knowing  C++ is required in order to be an excellent programmer (in our current times).

It's not the language itself, it's the environment.

Programs do not run in vacuum. Excellent programmer knows his/her environment. Our current programming environment (operating systems, compilers, networking, etc) is built on C/C++.

Excellent programmer writes efficient programs and debugs them in real life situations. He must know the environment -- and nowadays it requires knowing C++.

 

Amazon, Bloomberg, Google, Facebook all critical parts of these systems are written in C++.Many other programming languages and technologies depend critically on c++'s performance and reliability in their implementation.

Those companies which you named are not software, they are websites so they namely use PHP or Ruby for their projects... unless I am missing something else that they are doing?

Amazon also uses Fedora for their cloud services, which is written in Java, not C++. 

If you don't know what "variable", for, while, if, switch, "function" and "class" are then yes you should probably start with a very simple language to get your feet wet. I recommend ruby since it's as minimalistic as it gets, object oriented, and different enough from other language you won't get bad practices, such as confusing code that's valid in one language with code that's valid in another. That being said, you have 1 day to get a grip and shouldn't spend more then 1 week before moving to the language that's best suited for the task you wish to undertake with programming.

If you're familiar with those terms but new then don't for the love of god waste your time learning a different language with the aim of switching later to your target language. Practicing multiple languages is a skill in of itself, and while it's true the basics carry over (for, while, etc mentioned earlier) along with general low level patterns (backtracking, various OO design patterns) everything else does not! and worse still "good practices" in one language will occasionally carry over as "bad practices" in another. The most glaring example being going from a language that manages your memory for you (Java) to a language that doesn't manage your memory for you (C++). It is so easy to write code that looks like java code, works, and is a giant memory leak. Namespaces are another problem. Portability is yet another problem.

But what's worse of all, and that beginners don't understand, and that veterans gracefully ignore (because fuck it "we know everything, because we mastered one language") is that a large part of knowing how to use a language is knowing:


  •  the quirks
  • the tools
  • how to debug any problem
  • the libraries
  • the patterns in said libraries
  • the community (where, how, who)
  • and just a general sense of how you approach a program (be it to create or maintain one)
  • you might also encounter various languages or formats preferred by that language (eg. json vs xml vs yml, lua in game dev, etc)
 

 
 
You do not get ANY of it by learning ANOTHER language.
 
You get it only by learning the language you want to be proficient at. As much as various institutions would like you to believe "pattern X" and such are the most important, what's important is getting the job done and sometimes that means making patterns from zero and 90% of the other time it means having mastery over things in the list above.
 
So if you're confident you want to program "something" make sure you know what that something is and research what the best language to do it in is.
 
If you're not sure what you want to do, study C++
 
Those companies which you named are not software, they are websites so they namely use PHP or Ruby for their projects... unless I am missing something else that they are doing?Amazon also uses Fedora for their cloud services, which is written in Java, not C++. 

Facebook compiles their PHP to C++ more or less because it gives them a 50% boost. And their position, last I head anyway, is that they are on PHP not because they want to, but because they've entrenched themselves so deep they can't get out of it.

I never said they were softwares mate.

And read what I posted again, ALL CRITICAL PARTS.

 

That is where you separate boys from men.

 

Cheers 

+1

The only thing that I don't agree with you is about mastering a language, you will never be able to master C++. Even Bjarne said he doesn't know everything about c++, even being the creator of it.
The thing is, when you start to understand the special cases of c++ , pointers and STL/Templates you are set to do a lot of stuff. The most complicated feature of C++ is templates, because of their power and awkward syntax. It isn't hard to use pre-written ones, and it isn't hard to write a simple templated class or function, but C++ templates are a compiler-executed Turing-complete language.

 Also I believe that the hardest part about the languages is not knowing the features but knowing when to use them.

Take iterators in C# as an example:


IEnumerable<int> Ints() 

{ 

yield return 1; 

yield return 2; 

yield return 3; 


}


Well yeah that is a working example but is it an appropriate usage of the feature? I think not. The same really applies to the features of any language.

Going to say C++ as well. I started learning this language earlier this year and it was going very well until I started back school (with 22 credit hours) and working full time.

I agree, C++ is one of the best languages to start out with. It teaches good programming practices and is supposed to be highly versatile. I'm learning it right now as well, with the intention to move onto Java and XML to create android applications. Or something.

You can compile C++ for android.