|
I think Pascal was created to teach programming.
Some principles and structures can be learned, starting with Pascal.
The beginner will have strong concepts and criteria to build programs :
Structured programming, modular programming, strong type variables, data structures and so on.
All those concepts and rules was adopted on serious programming languages we use today.
|
|
|
|
|
I had a year of Pascal programming when I first started college back in 1988, and thoroughly enjoyed the language. The language was used to teach all the Data Structures course, where I learned all the concepts I still apply today.
I never used Pascal after that year of learning it, but I will always remember it for being a great language that I learned many concepts with.
Happy programming!
|
|
|
|
|
AmauriRodrigues wrote: I think Pascal was created to teach programming.
That it was
AmauriRodrigues wrote: Some principles and structures can be learned, starting with Pascal.
As they can with more or less any language.
AmauriRodrigues wrote: Structured programming, modular programming, strong type variables, data structures and so on.
That being said, it depends completely on the student. I was helping out a friend finish of his project in Delphi which we had to hand in at the end of last term and I wouldn't have said his code was that well structured, and he was one of the best ones...
-----------------------------------
My opinion is probably slightly biased but I don't like Pascal that much after the new stuff, especially as it's being taught in Imperial which is supposed to be a pioneering university (the EEE deparment which I belong to gets something like £55,000,000 in research grants alone each year). My main gripes with Pascal that as a teaching tool why does it get people to declare stuff twice, yes there are valid points (I can think of 2 good ones at the moment) to this method but to introduce people, it's just an additional thing to remember. The other major gripe is mainly with the IDE we have to use (Delphi 5) which I've got to say is far worse than the VB6 one ever was.
Things ought to change, especially considering Microsoft DreamSpark. Yes I know it's a clever marketing ploy to get students hooked on their IDEs but there is nothing in the world that I've come across to touch VS2008 so far, apart from the concept IDE imagined here. And now with them creating and opening up VSX to the public you can have specialised environments based on VS2008 without too much effort.
Now if only I had the time to read up on compiler generation etc to replace that god-awful PIC develoment environment... (Even worse than the Delphi 5 IDE), to be honest I prefer coding in Notepad and the command-line.
|
|
|
|
|
My point is : Student must learn good pratices, using a language that forces the use of that pratices.
Of course, an excellent language (any one) with a weak teacher or a weak book results in a weak learning.
But some languages does not teach, just allows a student to write some sentences and see some result. Those languages encourages to write spaghetti-style programs.
Besides a good language and a good teacher, must have to learn logic.
The best IDE for the beginner is notepad and command line compilers. No GUI, no debugger, no syntax hilight.
Delphi is a well combination of a good language (Object Pascal) + good IDE + full-featured library + database access, but Delphi is not intended to teach nor to learn. Delphi is for build applications.
If the student learns and knows how to use good programming principles, any language can be learned.
Niklaus Wirth has contributed a lot for us, mere programmers, creating Pascal, Modula and so on.
I suggest to any student to read his book: "Algorithms + Data Structures = Programs"
|
|
|
|
|
There have been a lot of various answers to this survey which I find interesting. They seem to range from "learn how cpu's work first" to "get the guy coding." (As primarily a business person who codes software for the purpose of RESULTS, I tend towards the latter.)
However, it just occurred to me that this is probably the wrong question. Due to the growth of human knowledge, it has been a very long time since anyone was able to claim to even have a decent survey of all we know. Perhaps it has now gotten to the point where we can't even achieve that in anything but a highly specialized field and application. So saying, "x is the way to go because of y" is probably not a very good way to look at it, especially when y is something like "it's important to have an understanding..." We can recurse that statement "it's important to have an understanding..." as far as we like, as evidenced by the varying degrees of 'fundamental-ness' we see advocated by people making that statement. So 'learn C b/c it's important to have an understanding of y fundamentals...', no 'learn assembler...' no 'learn about cpu architecture...' no wait, 'we should learn about circuits...' The issue of learning logic, btw, should probably be separated from the issue of which language to learn.
When I was younger I was concerned with knowledge...how can I have as full and complete a knowledge as possible? That is not necessarily a bad question to have.
But I'm older now and I am now concerned with results...what tools do I need to get job 'x' done?
|
|
|
|
|
Yes you've put it very well. And I agree entirely with your last statements about knowledge and results. When you've been doing this for a few decades and make a living at it results are all important. When I was starting out I couldn't learn enough esoterica.
But I still maintain that if the question is how to start out programming as a complete raw beginner who has zero programming knowledge but just want's to dabble in it then the most forgiving platform possible is the way to go because they are just kindling an interest not trying to get a job at the beginning.
Some of the people insisting on C just come across as elitists with no empathy or practicality, utterly ridiculous.
As a results oriented person who also makes business software in .net I would be perfectly happy hiring someone to program for me who had only c# experience and no knowledge of C or how a CPU works etc. I'm not running an university, I'm running a business and if they are a crackerjack c# developer that understands the importance of results then that's all good. What I do *NOT* want is some C guy who insists on wasting hours in optimizing stuff that doesn't need it or arguing about how some minor unimportant part of the app should be coded unecessarily etc which is the impression I get from the ivory tower types here sometimes.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|
Well, esoterica has it's place, but it's definitely overblown a lot of times (I'm a reformed academic myself). If it's something you're interested in then that's great and all, but those kinds of debates and knowledge usually don't put much bread on the table *for most people*. I agree with your general sentiment though, and for the guy who's just starting out and wants to get some stuff done (which should be most cases), then either Java, C#, or VB is probably the way to go. Unless of course your aim is to build an operating system and that's where you want to start (some people just like to dive in head-first).
What strikes me over and over when I visit this site is that a lot of people don't seem to understand that generally speaking the software we write is the servant (of the business need) not the master. Sure there's a place for research and exploration, but again, that doesn't put much bread on the table. My impression is that if a lot of people would give up their idealized view of how life ought to be and deal with how it is, they'd be a lot happier. I think this applies in many areas.
But hey, maybe I'm wrong
|
|
|
|
|
bwilhite wrote: What strikes me over and over when I visit this site is that a lot of people don't seem to understand that generally speaking the software we write is the servant (of the business need) not the master.
Well there are all kinds of people here which is a good thing of course, but I frequently find myself on the same side of the fence as you and astounded at some of the attitudes I see, I have to keep reminding myself not everyone here is in business to make money with software, many are students or hobbyists or in a very niche industry and just like us they sometimes forget their way of life is not the only one.
I agree entirely though that when you are in business it burns away a lot of the chaff to get to what is important about software development.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|
John C wrote: I'm not running an university, I'm running a business and if they are a crackerjack c# developer that understands the importance of results then that's all good. What I do *NOT* want is some C guy who insists on wasting hours in optimizing stuff that doesn't need it or arguing about how some minor unimportant part of the app should be coded unecessarily etc which is the impression I get from the ivory tower types here sometimes.
In the past year, i've had to deal with two different consultants. One whose background was C# and C++, and the other whose background was embedded C. And yes, i've had to lean hard on the latter one to avoid unnecessary, premature optimization. That still beats dealing with the former, who happily replaced carefully optimized datastructures with DOM + XPath, killing performance in a way that took months of work to undo and whose fast-and-loose attitude towards coding resulted in numerous crashes that we're still in the process of tracking down and fixing. There's nothing wrong with a high-level abstraction... so long as you understand what's being abstracted.
(just wanted to contrast your stereotype with another one... )
Citizen 20.1.01 'The question is,' said Humpty Dumpty, 'which is to be master - that's all.'
|
|
|
|
|
Shog9 wrote: That still beats dealing with the former, who happily replaced carefully optimized datastructures with DOM + XPath, killing performance in a way that took months of work to undo
Bad programmers are bad programmers in both cases. It's still a point of fact that many of the most vociferous defenders of unmanaged coding seem more interested in the technical aspects than in the final product.
It gives the general impression to a frequent visitor to this site that .net is the language of industry and C and C++ are the languages of academia.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|
John C wrote: Bad programmers are bad programmers in both cases.
Be that as it may, it holds for your comparison as well.
John C wrote: It gives the general impression to a frequent visitor to this site that .net is the language of industry and C and C++ are the languages of academia.
Eh... I'm not sure how. "Industry" covers a whole lot of territory, and i'm sure you realize that a fair bit of it isn't involved with either side of that particular debate. Heck, even looking at a different platform (*nix, mobile, or an embedded OS for instance) changes the landscape significantly.
Frankly, when it comes to a "first language", i'm a bit uncomfortable with any language that will actually be widely useful after the initial learning period - there's all too much temptation to focus on such a language as "The One True Way" and ignore any alternatives. If, after a few projects, the advantages of an alternate language or platform are plainly apparent, then i think there's a better chance of seeing well-rounded programmers after a couple of years.
Citizen 20.1.01 'The question is,' said Humpty Dumpty, 'which is to be master - that's all.'
|
|
|
|
|
Shog9 wrote: Frankly, when it comes to a "first language", i'm a bit uncomfortable with any language that will actually be widely useful after the initial learning period - there's all too much temptation to focus on such a language as "The One True Way"
I couldn't agree more. Pascal is probably a good choice since it's not widely used in production.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|
Shog9 wrote: In the past year, i've had to deal with two different consultants. [...] the former, who happily replaced carefully optimized datastructures with DOM + XPath, killing performance in a way that took months of work to undo and whose fast-and-loose attitude towards coding resulted in numerous crashes that we're still in the process of tracking down and fixing. There's nothing wrong with a high-level abstraction... so long as you understand what's being abstracted.
Perhaps your issue is not the language used, but the person hired. A fast-and-loose coder is not the typical fruition of learning C#, but a result of that specific person's attitude towards work performance. The stereotype you suggest is really a red herring argument of the foulest order, but I still feel your pain
Having little exposure to programming, but much to IT, I found both Basic 5/6 and x.NET languages extremely easy to learn. It also helps that I'm developing an IS for my college job (to get that so desired documented [ ] experience before I graduate).
Regardless, I'm of the mind that learning a language is best if placed in the results-oriented framework. Get it done and done well, or don't get paid. That seems to put a nicely sized rocket up people's behinds, and a few more neuronal connections take place in the process.
The language learned is a matter of semantics, really having little to do with, indeed, any being better than the other. All of them are pretty fat these days, so my advice to those reading this: Go with what you feel most comfortable, whatever will give you more options as a career, or whatever your work (coding project or occupation) requires. Learn, however, as much as you can about as many launguges as you can!
Life is like a dollar bill: It may not seem like much, but, if spent wisely, it can yield great rewards. - Ian Westerfield
|
|
|
|
|
John C wrote: When I was starting out I couldn't learn enough esoterica.
In my experience this is a typical, and healthy, response of an enquiring mind.
John C wrote: But I still maintain that if the question is how to start out programming as a complete raw beginner who has zero programming knowledge but just want's to dabble in it then the most forgiving platform possible is the way to go because they are just kindling an interest not trying to get a job at the beginning.
You said it better in your earlier post - the combination of the first language and first project should ignite that spark that 'this is fun' and 'I can really do stuff with this'. I started with a basic interpreter - it was great fun! Unfortunately too many courses take the view that there is a correct way and it has to be done this way from the start. In my experience this often stifles creativity.
John C wrote: As a results oriented person who also makes business software in .net I would be perfectly happy hiring someone to program for me who had only c# experience and no knowledge of C or how a CPU works etc. I'm not running an university, I'm running a business and if they are a crackerjack c# developer that understands the importance of results then that's all good. What I do *NOT* want is some C guy who insists on wasting hours in optimizing stuff that doesn't need it or arguing about how some minor unimportant part of the app should be coded unecessarily etc which is the impression I get from the ivory tower types here sometimes.
Think of how much you have learnt on the job, and how much the 'esoterica' you learnt is used to put what you do in context (for example giving you an appreciation for what is going on under the hood of .NET). If you hire a new graduate, s/he may be full of esoterica and also have to learn a similar amount on the job. If the university was to simply train C# programmers, how are they going to cope in 10 years time when more esoteric concepts emerge and .NET looks like the stoneage? The esoterica that they learnt may not be relevant, but they hoopefully it will have given the confidence to attack and learn new paradigms, not just the popular one at the time they left uni.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
I think C# is the most simple language (after English )
--------------------------------
visit: http://pmartike.deviantart.com/
|
|
|
|
|
English may seem simple to us natives, but to others, it is filled with completely illogical connections and twisted morphemes. The military classifies our own language as a level 5 (the hardest to learn and also the only language in this classification).
I have to agree with you - for the most part – that C# is pretty easy to get. I started with Basic 5 then went to 6 and .NET. Learning new syntax was the most difficult part of my transition from Basic to C#. A “basic” example would be opening a child form from a parent. Seems simple enough as a concept, but when being used to simply calling the child form using something like “newForm()” in Basic to actually having to create a new instance of the form and then calling that instance in C# is pretty crazy. I get why it happens this way, but still awkward.
Life is like a dollar bill: It may not seem like much, but, if spent wisely, it can yield great rewards! - Ian Westerfield
|
|
|
|
|
|
The correct address is http://lexico.mobi
Lexico vs C# to beginners is at
http://lexico.mobi[^]
|
|
|
|
|
C language is the best language for keeping all concepts, powerfull language. After that he can able to learn any language.
Truth Can'nt be changed
|
|
|
|
|
I think C would be a terrible first language for most... anyway, this is the path I took:
3rd Grade: Logo
4th - 8th: Basic
9th Grade: Turbo Basic & Pascal
10th - 11th: Pascal
12th: Stuck on Pascal (ran out of classes in HS)
Then in college (I skipped the intro classes which were in Pascal because I took AP stuff in high school):
Freshman: x86 Assembly, Scheme, C, Ada (yeah, I know)
Once I got to college, we were expected to be able to pick up the languages on our own for the most part, and each language was just used to teach other concepts. C, C++ and C# are what currently pay the bills.
Faith is a fine invention
For gentlemen who see;
But microscopes are prudent
In an emergency!
-Emily Dickinson
|
|
|
|
|
Hi all
i start my progrmming carear from c langauge.
|
|
|
|
|
I don't think C would be TERRIBLE for the first language. Seems to me it would pay off in longer term.
I just don't get how would beginner start with assembler.
dArK cHAriSmA
|
|
|
|
|
For me it was VB -> C# -> Java (Then I gave up with Java because it was useless and I prefered C#) -> Back to C# -> C++/C
Now I hate VB, don't use C++ very often and mostly use C#
And somewhere along the line I also learned Python because the prize money in a competition I could have entered was 6x more if I used Python.
---
The sum of the intelligence of the world is constant. The total number of people is always increasing.
|
|
|
|
|
12-16 yrs => Visual Basic 6
15-17 yrs => Visual Basic .NET
16-now => C#, HTML, ASP, ASP.NET
17-now => C, Python, Java, JavaScript, VBScript
And the lists go on...
|
|
|
|
|
The most important factor for a completely raw beginner in learning how to program initially is having fun. To have fun you need to be dabbling in an environment that is very forgiving. C is *not* the way to go if you want to get into programming and have no prior knowledge or experience.
That's like saying if you want to learn how to drive you should first start with learning how to assemble a car engine.
Suggesting C and assembly etc seems like some sort of malicious boys club mentality where those that are in try to keep out those who want to get in after them.
We're not talking about learning to program for serious career reasons, we're talking about those initial first steps when someone thinks it might be interesting and wants to dabble in it. Same way most of us started I'd guess.
Sure, my first programming language was assembly but this is the 21st century.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|