|
I think almost everyone started with C and I agree that C does require developers to learn essentials like memory management etc. I also believe that going the other way around is a more logical learning path with a less steep learning curve.
I should've mentioned that I would definitely put C as a 2nd or 3rd option.
|
|
|
|
|
One side effect of learning C first is it can poison you in terms of learning C++ properly
C++ is deceptive. It's easy to think of it as extensions to C but the way you code with it is entirely different. It's not C with objects.
That's why between C and C++ I'd recommend someone start with C++ and a copy of Accelerated C++ by Barbara Moo and Andrew Koenig. Best $20 you'll ever spend.
Once you've learned coding C++ with the STL, *then* learn C
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
for what reason he/she wants to learn coding. Who wants to code for embedded system or hardware should learn C, for the web is Javascript best and for mobile it is depending in which "universe" the voyage goes
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
KarstenK wrote: Javascript best
Two words that do not often appear together in the same sentence.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Javascript has become significantly better with ECMAScript 6! And there are some powerful libraries like NodeJS.
And when programming websites javascript is a must have.
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
I have to agree with this. Two years ago, I despised javascript. Now I am starting to appreciate what it can do. Of course, I have to turn a blind eye on the uglies.
|
|
|
|
|
It's everywhere, it's not going anywhere, it's the basis and it teaches what the fluff you are doing. It's easy to fall into the glittery traps of the dozens new languages and frameworks out in the market daily when you can't see that it's all have been done before and that most ideas simply suck.
GCS d--(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 main concern about C being everyone's potential first is that already way more people think they can code C than actually can.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
My concern with Python, Java and C# is that it convinces people that they know how to write software (not only code, software) while they barely know what thery are doing.
And when their byproduct end up in production against all common sense it will become a PITA to the few competent people out there.
The other languages mentioned are basically useless trinkets, I will not even dwell on them as they omae wa mou shindeiru.
GCS d--(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
|
|
|
|
|
that's just a problem with software development.
contrary to popular belief, we're not engineers, really.
thank the gods we do not build skyscrapers and bridges.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
codewitch honey crisis wrote: we're not engineers, really.
I have not heard this in many years, but it is so true. We are NOT engineers by any stretch of the imagination.
We have the idea of a Software Architect, and that is more fitting to the role, than Engineer, IMHO. 99.9% of us are just plain old boring software developers; programmers if you want to go old school.
|
|
|
|
|
I was a software architect. don't believe the hype. LOL
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I am a software architect, and I don't believe the hype. However, companies like business titles and that is the title I have.
|
|
|
|
|
haha right?
they do love their titles. After Microsoft, I worked for an outfit called Sogeti, and they were basically a software architecture and consulting group.
So there were no "devs" on staff, but a lot of people who used to be devs.
It was a weird environment. I eventually bailed because I didn't like being flown to places to "consult" (read, try to rescue mismanaged projects well after they've deathmarched) and basically being used as a corporate axe because the people that screwed up didn't want to be the ones to do the firing.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I'm a software engineer and I won't ever say I am a "programmer" ever again. There must be structure and some sort of formality to what's built and too many "programmers" lack any of it.
codewitch honey crisis wrote: thank the gods we do not build skyscrapers and bridges.
GCS d--(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
|
|
|
|
|
You are not an engineer, even if you identify yourself as an engineer.
6 Different Types of Engineering Jobs[^]
also, the definition of engineer does not include "software".
If you design software, than you are a software architect at best, like me. You can have the Software Engineer title, as most companies do that, but don't kid yourself for one second that you are an actual engineer.
Just saying.
|
|
|
|
|
Software does not live in a limbo, it interacts and control physical objects that have safety concerns and timings to be respected; it interacts with other software and software infrastructure. All of that is way beyond the common Software Architect because it needs any knowledge of the problem dominion, may it be mathematical, mechanical, electrical or chemical.
Of course web, UI and desktop applications developers do not need any of it but they are only a small part of the software related industry. ISO 26262 is *not* for programmers, the various aeronautical and aerospatial normatives on software developement are not for for programmers, even the processes that are to be followed are not addressed to programmers. It's engineering plain and simple - having rigorous, predictable and highly testable models way before putting them into instruction sequence is the true core of software engineering.
GCS d--(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
|
|
|
|
|
If it helps you sleep at night...
|
|
|
|
|
Slacker007 wrote: also, the definition of engineer does not include "software".
There are many, many more types of engineers. I studied computer engineering in college. A 5 year graduation program which is a mix of software, electric and physics.
But there are many more... Environmental, Hydraulics, Materials, Production, etc...
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
|
|
|
|
|
Interesting.
So the guy that designs the hardware for a flight simulator is an engineer, but the guy that designs the software that makes it work is not.
1. An Architect focus on aesthetics, including appearance and function.
2. An Engineer oversees the implementation of the architect's plans.
3. A Programmer is someone who can write code. How well depends on experience.
So which of the above are you?
In my experience, most people implementing the code fall into category 3. To ensure quality, they should be overseen by someone who falls into category 2. As for category 1; many people that fall into category 2, also fall into category 1.
You be the judge.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence." - Edsger Dijkstra
"I have never been lost, but I will admit to being confused for several weeks. " - Daniel Boone
|
|
|
|
|
Coding is something of a black art.
And any engineer would scoff at our lack of rigor.
Compared to the hardware guys, our QA is stodgy, at best.
TDD improves this some. And I say that as someone who doesn't do TDD unless forced.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
There are very very few situations in which software must be engineered. Flight control systems, medical monitoring systems, etc.
I laugh whenever someone calls himself a Software Engineer.
|
|
|
|
|
Manifacturing, automotive... I work only on these kinds of software and I don't laugh when I get free ranging coders with no respect for structure.
Besides, software must be maintained. Leave it in the hands of "those who code" and it becomes impossible in the long run, with constant costs for substitution or worse, legacy maintaining.
Coders are slowly dying in the industry, software engineers are much more requested. Being capable of analyzing, detailing and following a process is conductive to realeasing workable software on time and with profit. Software engineering is made of measures, models, previsions, traceability and documentation.
Algorithm developement is not, but it's sadly a niche activity.
GCS d--(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
|
|
|
|
|
I agree with that, generally, but at least C# gives you the capability to create solid code.
As much as python is great, languages like that, and like BASIC whose grammars are Broken As Designed teach bad habits.
Now, C and C++ are so flexible it's easy to code with bad habits. Very easy.
C# is a nice happy medium. It's flexible enough to be powerful, and to support "real" coding.
It's simple enough to make it easy to have good practices.
I think C# does a better job of fostering good dev habits than C
I think with C you better already have a handle on your habits. And it takes time to get them right.
An example is putting constants before vars in comparisons like
if(0==i) ;// do stuff there
instead of if(i==0)
This kind of thing is important in C to avoid accidental assignment
in C# it's not as big a deal.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
codewitch honey crisis wrote: An example is putting constants before vars in comparisons like
if(0==i) ;// do stuff there
instead of if(i==0)
True, but when you use warning level 4, like I always do, the compiler catches that for you. It didn't always do that though, that's for certain. Not until the concept of lvalues and rvalues came.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|