About programming languages

wong93

Honorable
Nov 2, 2012
5
0
10,510
1) Is C language the most basic if I wanna start programming??
2) Are all other language related to C? so let's say if I wanna start learning another language but I don't have knowledge on C, will i not understand??
3) Also, is mobile language the same?? I'm interested in spending my time as android developer in the future

thanks!

PS: It'll be good if you tell me which site should I start researching on,thanks!
 

Ijack

Distinguished
1. It's not the most basic, but it is pretty low level.

2. No. Many languages are similar to C, but not all. Don't worry; once you learn to program in one language it's fairly easy to pick up another.

3. For Android development you will need Java. For the iPhone it's Objective-C (and a Mac!).
 

wong93

Honorable
Nov 2, 2012
5
0
10,510


thanks,so should I master C first before starting java??
 

Ijack

Distinguished
Personally, that is the route that I would take. C is relatively easy to learn and provides a good foundation for other languages. But I know that others would differ from that view and recommend that you start with C++ or Java.

If you want a relatively easy language to learn, and would like to be able to turn out Windows programs fairly quickly, consider C#. Because of the .net framework it is very easy to produce fairly sophisticated programs with C#. You can download free Microsoft Visual Studio Express editions for C/C++ or C#; it is an excellent development environment.
 

wong93

Honorable
Nov 2, 2012
5
0
10,510


So I learn C then C++ and then Java? oh ya btw if I'm not mistaken there're 2 types of java?? java and java server i think? which is the one for android/?
 

gamerk316

Distinguished
Jul 8, 2008
325
0
19,060


There are plenty which are more basic, some of the more notable ones being FORTRAN, ALGOL68, and Pascal.

C is one of the harder languages to learn, due to some of its...unique pitfalls. I generally recommend learning to program using a more basic (Read: Less error prone) language, then moving to C once the concepts of programming are understood.

2) Are all other language related to C? so let's say if I wanna start learning another language but I don't have knowledge on C, will i not understand??

There are two different things to learn: Programming, and the programs syntax. If you learn the first, the second is trivial.

There are two major "lines" of programming languages:

FORTRAN -> ALGOL68 -> C -> C++ / Objective-C / D
FORTRAN -> Pascal -> Ada

And a few overlaps:

Ada + C + Smalltalk -> Java
C++ + Java -> C#

And that's not even counting the scripting languages (Python / Ruby / Haskell and the like)


The key thing to remember: Once you learn the basics of programming, the rest is just syntax.


3) Also, is mobile language the same?? I'm interested in spending my time as android developer in the future

Language is typically the same across platforms, aside from OS specific extensions. That being said, there may be mobile versions with a more specific feature set more optimized to make use of the resources mobile platforms offer.
 

gamerk316

Distinguished
Jul 8, 2008
325
0
19,060
When I teach programming, I always start with either BASIC or ALGOL68, in order to teach the basic concepts (up to subfunctions and control loops). I then move on to C (memory managment, and more advanced concepts like pointers and referencing), then C++ (Classes, Templates, and threading). Then I generally move to C# to teach Object-Oriented programming and other advanced features (Generics, for example).

By skipping to a more advanced language, I find people simply do not learn to program correctly when they have to use a different language for a job, because you taught the language, not programming. Ask a Java dev how Windows memory management or the storage allocater works, and you get a blank stare back. So the first time said Java dev writes a device driver (likely in C), he can't figure out why he's constantly getting BAD_POOL_HEADER BSOD's (because he overwrote critical system memory).

In short: Learn programming, not a language.
 

wong93

Honorable
Nov 2, 2012
5
0
10,510
thanks guys for the replies, but do we still use FORTRAN, ALGOL68, and Pascal etc nowadays??

So after I learn C then I'll be easier to understand other languages easily??
Also, what kind of jobs will I be doing if I learn C and Java?? Do I just make apps in android?? or overall android stuffs
 

randomizer

Distinguished
Most business and consumer applications will be written in C or some higher level language. FORTRAN etc. are mostly used for specialised tasks. Nobody writes weather applications in FORTRAN. Java is used for many things, but its traditional domain is enterprise software. It used to have a strong web presence in the form of Java applets, but nowadays it usually runs purely on the server side (thankfully).
 

Hawkeye22

Distinguished
Moderator


I'm required to write a lot of programs in Delphi which is basicly an object oriented Pascal. Some languages are just better for writing certain types of applications. Use the best tool for the job.
 

gamerk316

Distinguished
Jul 8, 2008
325
0
19,060


Yeah, Pascal still lives through Delphi, and theres a LOT of legacy FORTRAN/Algol68 code lying around.

My main issues with starting new users out with C programming:

1: int main(int)

Before you teach a single line of code, you are introducing functions and parameter passing. Not a hard concept, but learning basic algorithms and program structure should come first. It is NOT acceptable in my mind to say "don't worry, we'll get to it later". [Could be worse though; Java has 'public static void main(string[] args)', which introduces static functions, void functions, and arrays!]

2: Header file hell

C has expanded a lot since it was introduced, mainly though header files which contain extensions to the base C language. Some are depreciated, some obsolete, some best never used. I generally see people new to C simply add specific headers to EVERY project file as a result of never knowing which ones they need [which is a very bad practice].

3: C debugging

C is NOT fun to debug. Seriously, no automatic bounds checking leads to halarity when you assign an 8 character string into a character array, forgetting the '/0' character counts. Woops, array overflow. Based on years of experience, I see people spending more time learning to debug the language then actually doing productive work.

4: C/C++ mismatch

Most C compilers support both C/C++. And because C++ was designed to be 99% comparable with C, you get a LOT of mix-matching between the two. I've seen pure C++ apps using 'printf(x)' statements instead of 'cout << x'. Again, this is due to the distinction between the two never being properly defined. [Could be worse: I've seen 'malloc(x)' paired with 'delete(x)'...]

5: Pointers/Addressing/Memory Management

C/C++ exposes a LOT of advanced features, like pointers, addressing, and memory management, and I've found in almost all cases these concepts are taught FAR too early on, leading to programmers who don't properly understand them.


Again, I'm not saying become an expert in the Algol68 syntax, I'm saying to use a basic programming language to learn the basics, then move up the evolutionary chain. Going from one programming language to another should be TRIVIAL to a programmer; the logic is exactly the same, regardless of language, the only thing that changes is how that logic is represented.
 

Tanmay12

Honorable
May 23, 2013
1
0
10,510
It is basic language for all other high level languages if you want to learn any language like java, c sharp you must know the C language because they use all C syntax.