|
-
September 28th, 2007, 02:09 PM
#1
Philosophical Programming
I was thinking about something today, is there ever a point where in programming that a man learns all he can learn? C++ and C# certainly have boundaries that can be reached. But I'm not talking about the limitations of the languages themselves versus other languages which can do more/less. I'm talking about learning all the language has to teach you. There comes a point eventually in the study of computer science that you come to realize that you cannot learn anymore of a certain language, that you have indeed reached "the end" of the language.
When going from something as simple as learning what a datatype is, to learning the most advanced techniques the language has to offer, has one really learned it all? Is there indeed an end to all that you can learn of a certain language? Much like learning German, or Spanish, or Chinese, the languages have boundaries of what words indeed exist and are recognized as "words", once you know all of these words, you have indeed reached the end of the language.
Though in the same sense, once you have reached the proverbial "end", there is a new beginning, a creation of new words to describe new things. And it works this way in programming as well, when the language has been mastered, a newer version is produced that has never before seen things.
My point is this:
A language has boundaries, where if you meet those boundaries, you have learned everything you can possibly know about the language and you can absorb no more, there is no more to absorb. Have any of you met these boundaries in the world of computer science?
R.I.P. 3.5" Floppy Drives
"I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones." - Albert Einstein
-
September 28th, 2007, 04:37 PM
#2
Re: Philosophical Programming
 Originally Posted by RaleTheBlade
Much like learning German, or Spanish, or Chinese, the languages have boundaries of what words indeed exist and are recognized as "words", once you know all of these words, you have indeed reached the end of the language.
Learning a word isn't a simple thing... Every word can be studied deeply... And interactions of words can be studied. Actually, a man can learn for a life, a language, its history and the mechanisms of its evolution. Linguistics are a large field... Even when studiying a single language.
For computer programming languages, this is different. The language is simple, unambiguous, and its history is short.
Even if it's possible to deeply and completely learn a language. i.e. perfectly mastering the specification and the basic programming techniques specific to this language. It's just the first step... Once a language is learnt, it can be spoken.
For that, there's no limit. You can learn & create thousands of librairies, concrete and abstract technologies. Learn & create new algorithms, invent new concepts. The algorithmic domain itself is very wide. Very high mathematical concepts can be applied to and developed for this domain.
If we're only studying what the programming language X brings, in itself, the specific thing that only this programming language, and no other, brings, then, there's a limit, yes.
Imperative programming languages are so similar, that, at a high level, they're all the same. They're all turing universal, period (with additional limitations in memory capacities).
Usually, there's at least one distinctive thing - a philosophy - that makes it different from all others. Once you've deeply learnt that philosophy (after having learnt the specs and knowing them by heart), then, you probably gained all the knowledge that the language could give.
That's why, in my opinion, it's good to learn many PL. Every one has a piece of wisdom that you've to pick.
However, even if a specific version of a specific language has boundaries, a specific language doesn't necessarily have boundaries... Bjarne Stroustrup develops new technologies for his C++ programming language. For example, he recently studied template concepts.
So, it's very hard to really met the boundaries of a PL.
"inherit to be reused by code that uses the base class, not to reuse base class code", Sutter and Alexandrescu, C++ Coding Standards.
Club of lovers of the C++ typecasts cute syntax: Only recorded member.
Out of memory happens! Handle it properly!
Say no to g_new()!
-
September 30th, 2007, 11:32 AM
#3
Re: Philosophical Programming
I like some of what superkoko had to say.
Personally I haven't been programming nearly enough years yet but what I have begun to sense is where the boundaries may lie, hence I have chosen C++ as my language of choice, I think it sits in the right place for me to see what is and isn't possible with programming.
If I got to the end of what C++ could teach me and thus what I could do with C++ I would probably have to go study the real world some more and look for problems that a programming language can help solve in it, there is bound to be something, and then I would have something to solve in a programming language again.
If that makes sense at all.
-
September 30th, 2007, 09:55 PM
#4
Re: Philosophical Programming
Learning a language is only the start. In order to be useful a programmer must combine that with OS interaction and learning the OS api's is another journey. Finding more ways to interact, code, and test efficiently seem to be never ending.
Then there is staying abreast with new technologies - I don't believe there is any end to learning new things, if not with the language itself, then with the utilization of the language.
-
October 1st, 2007, 07:25 AM
#5
Re: Philosophical Programming
Judging by the titles of most programming books in the bookstore, I think the limit is about 21 days to learn a new language.
-
October 1st, 2007, 01:33 PM
#6
Re: Philosophical Programming
Every language is a communication platform. It has no other purpose than to share ideas. Boundaries of the language is at your ability to say whatever you wish to say. So learning a language can done very quickly as well as it never ends. You can learn all words and the whole grammar, but never the whole speech build on them. The question is: what is the language? Just the words and the grammar, or everything you are able to say with it? If it is the second case, then for computer science the boundaries of any language are subset of are possible Turing's machines. Than - practicaly - there is no point where you know everything.
- Make it run.
- Make it right.
- Make it fast.
Don't hesitate to rate my post. 
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|