|
Very good bullet points.
The reason for me to recommend this language is not only because it is simply awesome and yet easy to learn, but because it is very useful in practice so learning it isn't wasted time even if the student has intentions to jump on something else. Learning python is a very good investment even if "python" sounds silly and may make someone think that it's only a toy language with some toy libraries. Python is very mature, serious and widely used even if it isn't so hyped. With python knowledge it is possible to get a well paid job (for example in web/backend development, scientific computing) and it is often listed as an advantage or strict requirement for many non-pure-python job listings (including the best payed C++ jobs). Here are some bulletpoints for those who consider learning it:
- It is serious stuff with very good standard libs. Probably everyone heard about Google and Youtube, these make use of python. Here is a bigger list: https://en.wikipedia.org/wiki/List_of_Python_software[^]
- It is installed by default on most unix like distros. It is used as an embedded scripting language in a lot of programs that provide a scripting interface. (gdb, WireShark, Gimp, Paint Shop Pro, 3D editors and cad systems, WireShark, perforce, ...) A huge but quite incomplete list: https://wiki.python.org/moin/AppsWithPythonScripting[^]
- Every programmer should know at least one scripting language to do small silly tasks (automatization, code generation, text processing, network related testing, ...) - by learning python someone can get all these. In other popular general purpose languages these tasks are often not small and/or silly.
- Python also has it merits as a language and some nice surprises for those who don't know it. It has some language constructs that are simply awesome and missing or poorly implemented in other popular general purpose languages. (eg.: python decorators, metaclasses, ...)
- Very huge productivity boost in some domains. It is only a few lines of code to write some socket based client-server app with custom server side code including async IO or multithreaded-blocking and serialization. You will see that many other things are similarly simple in python thanks to the language and the superb standard libs.
|
|
|
|
|
Languages are only for second year students...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
C - it puts you in charge.
Understanding indirection is so basic to C and programming. It's not hidden away.
And data allocation sizes really meaning something.
Some may criticize, but allocating and deallocatting memory as your own personal responsibility is a lesson not only in programming, but in life.
How Sweet It Is!
"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 |
|
|
|
|
|
Only after having extensively sweared against the screen (and then against the mirror once you got hold of the problem) you can begin to appreciate *some* automatic mechanism for the trivial tasks. Never abuse them though or doom is assured.
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
}
|
|
|
|
|
My first comment is not meant as an insult or anything like that - it's just I am sensitive to rhetoric (actually appreciate a good job): your statements about "you've seen . . . ", "some people . . . ", etc. are all true. They also really don't mean much in that that particular phraseology is applicable to almost anything and find exceptions to subjective rules is essentially always successful. Damn - my director can make VB6 work very much as though it were really a programming language!
My start in programming was Fortran - and that's a fairly high level language. Pre-Fortran-77, too. Learning C - via Microsoft QuickC - was an eye-opening experience. Admittedly VAX Macro-Assembler came in between them. Pick either one: they profoundly changed the way I coded.
At first, with C, it was really Fortran coding using C's language components. Then, one day (literally), it changed. It doesn't matter what I've had to go to (or back to) since then. The change was permanent - an appreciation of what I was really doing. Appreciation meant attention, as appropriate, to run more efficiently, ward off future problems, or plan ahead by avoiding coding into corners.
Arguably, the hated feature of those new to C (from those higher level languages) is understanding indirection, embracing it, and then exploiting it. Many modern languages don't allow the unbridled freedom (and responsibility!). When 640K was the memory limit, it was wonderful to be able to set a pointer to unused video RAM and gain back precious storage. Not to necessary these days, but the lessons are still there. It's certainly memorabilia to some of us. For some of us, we've had the pleasure of doing; but for the remainder there still is available the pleasure of knowing.
Like Yoda taught young Skywalker: Embrace the Force.
"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 |
|
|
|
|
|
Then they can use it right away and perhaps get some small jobs faster.
|
|
|
|
|
Seems like an excellent reason NOT to pick Javascript.
Soren Madsen
"When you don't know what you're doing it's best to do it quickly" - Jase #DuckDynasty
|
|
|
|
|
This is a hard question to answer without knowing the age/maturity of the person you are talking about. For kids who are younger and just starting out I might recommend something like Scratch or Python.
As they progress further and maybe are playing games Minecraft then the next progression is Java.
For those that are interested more in web development then I would have them start with Javascript.
I think the better advice though is that once that first language is taught/learned that you explain to younger developers that the learning process never stops and that they should look to expand their knowledge and skills.
|
|
|
|
|
I learned programming in VB.NET, a language that's pretty horrible according to many people (at least on CP).
Yet I turned out fine.
I'm now doing C#, which I'm doing fine too.
Recently did some JavaScript and guess what? I did quite alright!
Just know your loops, arrays, scope, variables, access modifiers, basic memory management, data structures, OOP concepts, some Functional concepts...
You'll be alright in most languages.
The difficulty lies in the frameworks and the subtle differences between languages (like optional vs. mandatory break; in switch statements in JavaScript and C#).
And the only way to get better at those is by learning more languages.
Still, as far as a first one goes I'd say C#.
It's nice, clean, rich, has C syntax (which makes a transition to many other languages easier)...
|
|
|
|
|
Sander Rossel wrote: Still, as far as a first one goes I'd say C#.
It's nice, clean, rich, has C syntax (which makes a transition to many other languages easier)...
I actually think having so many new languages adopt a C-style syntax is a poor decision but understandable. It's also potentially very dangerous as, e.g., C# and C++ are very different but no doubt devs going from C# to C++ must make a ton of mistakes. (Not done that myself as I went the other way.)
Kevin
|
|
|
|
|
Make them suffer like we did in the 70's ...
|
|
|
|
|
You made me interested in the subject and check more on the web - for a naturally curios as I am this is already great. But you also, indirectly, inspired me for my next D&D campaign - and this is absolutely fantastic!
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, I also remember the happy days of FORTRAN on punch cards - the upgrade from FORTRAN IV to Fortran-77 was wonderful.
However, although I used to be a D&D DM and player myself - I can't see the connection apart from I once wrote a NPC character generator in FORTRAN.
- I would love to change the world, but they won’t give me the source code.
|
|
|
|
|
10 A good Fortran programmer can write Fortran in any language.
20 Continue
PS - There was an upgrade after Watfor and Watfiv? What is this Fortran 77 of which you speak? In 77, I was programming on DEC systems in Macro 10.
|
|
|
|
|
Quote: What is this Fortran 77 of which you speak? Sorry, I misspelled it. It should, of course, be "FORTRAN 77". FORTRAN didn't become Fortran until Fortran 90.
- I would love to change the world, but they won’t give me the source code.
|
|
|
|
|
Always happy to be a source of inspiration.
But please be more specific about the plans for your campaign ... how will punch cards figure into D&D?
Your comments brought back memories of playing D&D in the 70's (this was pre-version 1 of AD&D). Those were fun days.
|
|
|
|
|
I put a single reply - writing form cellphone is awful! I just figured out that punch cards are OLD technology, and since I'm planning a "magepunk" world technologically a bit more advanced than the usual D&D stuff I thought that introducing punched cards and analyzing machines can provide some adventuring hooks (finding sabotages, retrieving stolen data in a specific time frame, forging fake data, and even some futuristic set up as agencies of Paladins tracking and creating dossiers by technomagical means...).
That is something I never though of because adding electronics or gunpowder in a fantasy world tends to make it way too similar to the real world and bends the adventure - I still want a classical fantasy setting!
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
}
|
|
|
|
|
In The Wizard's Bane and the Wizardry Compiled and other books in the series by Rick Cook, a key theme is that Magic is a form of programming, and the hero of the books learns to use magic much like a programmer uses code. You could use these books to suggest a 'magepunk' framework for you D&D game.
The early bird gets the worm, but the second mouse gets the cheese.
|
|
|
|
|
Thank you very much, I'll definetely delve into that book!
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
}
|
|
|
|
|
1234567
Feed.
Register.
Release.
Feed.
Register.
Release.
Feed.
Register.
Release.
"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 |
|
|
|
|
|
Nah; make them start by hard-wiring the "program" on a breadboard!
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
|
|
|
|
|
I would recommend learning assembly. But it is hard for a beginner to learn. To develop a program it is not necessary to understand how computer works as long as you can use the APIs properly that your favorite framework provides. But it is always good and a plus to know exactly how computer works. If you learn C you can quickly move down to assembly to understand what actually happens when your program is executed. Or you can move up to any high level language like C++, C# or Java. I will not recommend learning OOP for beginners, because OOP is programming methodology that you may or may not use. Learning logic is important for beginners and implementing them in terms of computer instruction is what makes them programmer.
|
|
|
|
|
It depends on why they want to program.
Steve
|
|
|
|
|
Come on folks, these are two completely different things. You can't just lump them together like you can VB / mental retardation.
Marc
|
|
|
|
|
The same could be set VB/VB.NET.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|