|
There are dozens of popular languages used in the industry and academic. You need to be familiar with at least two programming languages to be successful even if your future career is unrelated to programming. We believe knowledge of computer programming in C/C++ is one of the most fundamental skills for today's students. You should learn C first, then pick up a language that is best suited for your need easily. Some other higher-level languages may sound easier to learn but you will be limited with less versatile in the long run if you don't know C.
|
|
|
|
|
Oddly enough, none of the people I've recommended it to have tried to pick it up. But its still easier than MDX.
|
|
|
|
|
I don't consider SQL as programming language (just query language)
|
|
|
|
|
Mostafa A. Ali wrote: I don't consider SQL as programming language A stored proc with parameters, declares, sets, iterators and branching looks a lot like programming IMHO.
"Go forth into the source" - Neal Morse
|
|
|
|
|
Python. Most definitely Python.
Now, the reason I say this is because this is the best language for KIDS to learn. And kids should be the ones learning to program. And its best for kids because it is the simplest, most intuitive entry point into the fundamentals of programming. Most of the other mainline languages are filled with so much muck and scaffolding that a teacher finds himself saying, "OK, just ignore all that boilerplate stuff for now, I'll explain that later" -- so students get the impression that half of programming is mysterious magic. That should not be. Fifty years ago it was the job of every responsible dad to teach his kids how to fix the car -- to remove the mystery and explain the simple mechanics of the machine. (That's much harder to do now, with all the magic in today's cars.) Today our job is to demystify the underhood of the computer (again, hard to do with iDevices that are glued shut!). Python is the best pedagogical device for doing so. It may not be the best foundational language for a career in Computer Science, but that path represents just a fraction of all the people who are -- or should be -- learning to program.
|
|
|
|
|
It should be on the list. But otoh I'm not surprised that most of the answers here are C#, C and C++. Microsoft-centric site and many do not stray far from the commonly-used MS languages, i.e., commonly-used in the MS ecosystem.
Kevin
|
|
|
|
|
Gee, Microsoft-centric? Where's F#?
My up-vote is for Python as a learning language. A handy tool to have around later, when you get a job programming in some other language.
|
|
|
|
|
PascoBill wrote: Gee, Microsoft-centric? Where's F#?
Not commonly used. In my experience many MS devs haven't even heard of it! They don't delve much beyond C#, JavaScript and SQL.
Of course, a lot of this is because that's what clients are using and they can't just use what they like. But many devs are fairly conservative anyway.
Kevin
|
|
|
|
|
Yes i agree Python is the most important and easy to learn it should be top on the list
|
|
|
|
|
Newbies often have this feeling that "magic happens". Not so with assembly.
They also tend to focus on syntax, usually in a bad way, treating it as some specific magic incantation that they have to recite just right.
Assembly barely has any syntax, and it certainly has no magic. Makes the newbies focus on what actually matters - decomposing your problem into small parts.
|
|
|
|
|
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson
Our heads are round so our thoughts can change direction - Francis Picabia
|
|
|
|
|
examples of assembly language??
|
|
|
|
|
IA32 assembler. Official books[^] (don't worry they're free and legal. If publishing a 3603 pages book is legal.)
Geek code v 3.12 {
GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- r++>+++ y+++*
Weapons extension: ma- k++ F+2 X
}
|
|
|
|
|
Ok, quick example
mov eax, 1
add eax, 5
imul eax, eax
Simple so far. See a real tutorial if you're actually interested. And don't let the size of the manual intimidate you, assembly is very incremental, you don't need to know much just to get started.
|
|
|
|
|
|
A second hand Commodore Amiga (for BASIC and [possibly, later on] some assembler) and an Arduino (for C# and a way of introducing hardware)
How do you know so much about swallows? Well, you have to know these things when you're a king, you know.
modified 31-Aug-21 21:01pm.
|
|
|
|
|
Brent Jenkins wrote: A second hand Commodore Amiga (for BASIC
That's why I bought a used MicroVAX 3100 -- the interactive mode of VAX BASIC. Just like when I learned BASIC on a PDP-11.
|
|
|
|
|
As a general programming language I would probably suggest C++, C# or even Java. I'd avoid C itself as a first language as the others to some extent protect the programmer from much of the low level coding considerations. I would however suggest that C should be learnt early but only once the basics are mastered.
If they are looking to work in AI then Prolog would be the logical choice
If the want it for systems admin work then Powershell in a Windows environment, bourne shell for *NIX, or the relevant control language for mainframe work.
I'd also suggest in the early stages coding it up on paper first as this should help to instill some rigour in their coding. The batch processing that I learned using where we punched the card deck submitted it and got the printout back 2-3 days later really helps ensure that you get the code to run correctly much earlier and so need to understand the language much better.
|
|
|
|
|
I he just wants a glimpse of programming, Java or C# - modern, high level. If he wants to understand computers then C, which is basically a glorified assembler, in which I mean close to the underlying hardware without the more annoying aspects of assembly language.
|
|
|
|
|
I was dithering between C# and C++, but decided on C++.
The C++ language may be used at various levels - from "C with classes" up to the latest and greatest(?) additions, and your code pays nolittle penalty for the existence of unused language features.
While the C++ library contains all the required automatic resource management classes, it also has a clean syntax for raw allocations. These are necessary when interfacing with legacy (C, assembly language, etc.) code.
Lastly, C++ provides a full implementation of templates, rather than the "generics" provided by C#.
I grant you that C# is a very good language for most purposes, but when low-level or numeric programming is required, C++ has tools that are not present (and cannot be written) in C#.
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.
--Winston Churchill
|
|
|
|
|
A small thing - and you're pretty much there in what you say.
C# hides too much from the programmer whilst making itself easy. From a syntactical point of view, there's no difference between a namespace, class, function, or pointer.
What in C++ would look like
System::Window::SomeClass gcnew ^managedMemory or perhaps one may need *unmanagedMemory;
in C# would end up as
System.Windows.SomeClass managedMemory
no need for ' -> ' (vs. ' . ') when everything's a pointer to managed memory.
You get my point. Both work - but in a sense, the C# developer might not even know what it is they're doing. On the other hand, for them, it can be argued it doesn't matter.*
(*C# lovers - no need to flame this - it's just an example and I really don't mean to condemn).
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "As far as we know, our computer has never had an undetected error." - Weisert | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Python is not only an ultimate toolbelt for jack of all trades but you can be extremely productive on a lot of platforms. The language syntax is super clean and the most important things (basic data structures and operations: list, dictionary, set, tuples) are beautifully integrated into the language. Even if someone wants to specialize in other areas (asm, C, F#, ...) python can be learned in a few days or weeks and it will come in handy as a "tool" language coupled with anything else. It is usually installed on popular linux distros by default.
I agree that sometimes "it depends". Sometimes people are motivated to learn programming to achieve a goal and in some cases that goal may define the language. (It is still worth spending at least a few days or weeks learning python as a companion language as a tool or intro language.)
I think if you have to have a clue about indirection and allocation in most languages (e.g. arrays/objects in python and other object oriented langs), this is not a reason to go low level and less productive (like C).
Update:
I agree with a post below that programming is about learning a few basic patterns and algorithms (basic data structures and related operations, paradigms, ...) and the available libraries for the language. I think python is very strong in this regard: basic data structures and operations are integrated into the language, extremely good standard library (with the best interfaces I've seen across languages), crossplatform. At the same time it makes you very productive in no time even if you are a beginner.
modified 14-Jul-15 3:26am.
|
|
|
|
|
pasztorpisti wrote: At the same time it makes you very productive in no time even if you are a beginner.
There is nothing good in it. Not even a tiny bit.
Geek code v 3.12 {
GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- r++>+++ y+++*
Weapons extension: ma- k++ F+2 X
}
|
|
|
|
|
This is also something that depends on the domain. If you bend the meaning of the words...
|
|
|
|
|
I disagree. Python is a great didactic language, for a number of reasons:
- it is available on just about any platform
- it requires very little tooling to get up and running
- it has elements of both functional and object-oriented programming
- it comes with a REPL, which makes it easy to get started doing small exercises
- it has a massive and active community, so it's easy to get questions answered
- it has minimal ceremony, which makes it quite readable (especially for the kind of simple cases that a beginner will be exposed to)
- there is no need to fuss about with a compiler
On that last point, I grant that learning and understanding how to work with a compiler is a necessary part of an education in programming, but it is IMO a more advanced topic than the basic I/O, control flow, etc. that are most useful to start out with when learning programming. It can also be frustrating, as a beginner, to have to fight through compiler errors before you can see your program do something (even if that something is a runtime error--a distinction without much of a difference to the more experienced programmer, but it can make a significant difference to the beginner).
I would never suggest that Python is the only language to teach with, or even that it is the best one. But to say that there's nothing good in it is just absurd!
|
|
|
|