Talk:Computer Programming/Archive4
C++ and Authors page
You should check...
http://en.wikibooks.org/wiki/Special:Allpages/P
http://en.wikibooks.org/w/index.php?title=Special:Whatlinkshere&target=Computer_programming/Authors
and move/rename the authors page to a more logical "location...
also check C++ for the missing C++ info on the (general book) Computer Programming info... --Panic 04:04, 31 July 2005 (UTC)
Draft text
There is a commonly-held belief by programmers that once you have learned a programming language, you have essentially learned them all. This true to an extent: if you are comfortable with the fundamental ideas used by both languages, then minor syntactic differences (curly braces, semicolons, whitespace, keywords) are typically very easy to overcome. However, using a language goes beyond just knowing its syntax. To be really productive in a programming language, you will eventually need to learn its libraries (what functionality people have implemented around the core language), its idioms (frequently occurring ways of using the language) and often auxiliary tools related to that language (c.f. SLIME for Lisp).
Furthermore, some languages fall into different paradigms. The best known paradigms are imperative and object-oriented programming. Most of the popular programming languages fall under these. However, the functional and logic programming paradigms are also very useful and tend to be preferred by academic computer science programmes. These ways of programming are very different from what you see in popular languages, and they take a certain amount of getting used to if your background is only in imperative and object-oriented languages.
So on the one hand, you should not get hung up on learning any one particular language, because switching can be easy. On the other hand, you should be aware that becoming really proficient in a language takes time, and be ready for an abrupt shift when learning a different family of languages. The ideal, well-rounded, programmer should be versed in imperative and object-oriented programming, as well as functional and logic programming. The same programmer would probably do well to learn a bit of very low level (assembly language) programming as well.
Comments? Would anybody object to me putting something like this into the text? -- Kowey 14:05, 19 June 2006 (UTC)
- Not me. --Panic 16:55, 24 October 2006 (UTC)
- Thanks for the comment. I had already gone ahead and made the changes I wanted. -- Kowey 18:21, 24 October 2006 (UTC)
sudo languages
where would a link to a sudo-programming language such as a gamemaker go or Qbasic wikibook go? should these both be under programming languages regardless of the fact that they are simplified learning tools? --Diploid 17:23, 9 August 2005 (UTC)
Is sudo a new way of spelling pseudo? Anyway Qbasic is a Turing complete language (at least I have never seen any evidence to the contrary and I have seen significant programs written in it) so why isn't it accorded the same status as any other? Don't know about gamemaker. User:kwhitefoot
Every wikibook should have a link on at least one bookshelf (Wikibooks:All bookshelves). I see that Programming:QBasic and Programming:Game Maker are both already on the Wikibooks:Programming languages bookshelf. Some languages are listed on other bookshelves such as: Wikibooks:Domain-specific languages bookshelf Wikibooks:Computer and video games bookshelf .
Computer Programming is a wikibook that discusses things shared by many programming languages. As a programming language wikibook grows, we expect it to bud off pages discussing how that particular language implements those things. Then we'll try to link from Computer Programming to those examples. --DavidCary 20:36, 16 January 2006 (UTC)
The Programming Language descriptions are misleading
The person who entered the language descriptions clearly had a particular background in languages and their descriptions of languages outside that background are downright misleading. The description in particular for Perl comes very close to 'negative advocacy'.
I would suggest a more accurate description for Perl of:
- Perl
- Perl has been described as the Duct tape of the Internet and is available for many platforms (Unix, Linux, Macintosh, VMS, MS-Windows, and other platforms). It is a high level 'scripting' language with a largely C-style syntax (although some people complain that its syntax is 'noisy'), Object Oriented Programming support, and powerful string manipulation built-ins. It is capable of handling both quick 'one-off' and large managed team projects. It is notable for the CPAN library which provides thousands of user contributed libraries to the Perl programming community free of charge. User:snowhare
- There was more then one author - each text was written by someone who - hopefully - was skilled in the language
- This module should not contain a short wikipedia article. It's all about learning a programming language - how difficult is it to learn the language - what will you gain for your effort. Any the text should focus only on that aspect. Take the Ada article as an example.
- You are always free to improve the text. --Krischik T 15:44, 27 October 2005 (UTC)
other modules not listed
So is Programming:highlevel part of this wikibook or does it need to be renamed to put it in some other wikibook? --DavidCary 03:19, 8 November 2005 (UTC)
online lectures!
This may be of interest to wikibookians (and future wikiversitians): the weblog lambda the ultimate has spotted a few online video lectures lately. These could be a big help for some of the computer science wikibooks!
- Knuth lectures - license unknown
- The Structure and Interpretation of Computer Programs - cc-by-sa (we can use this!)
What do you think? -- Kowey 22:57, 14 November 2005 (UTC)
Programming Systems
I was wondering if the line about Java becoming the defacto standard was correct. From what I've come across .NET is also vying for that title. I have no evidence though. Does anyone know? --Nathan 22:35, 6 December 2005 (UTC)
I also am skeptical of the claim that Java is rapidly becoming a de-facto industry standard language for 'server side' applications development., especially since Java was originally designed to run on small embedded systems. ('client side', right?) It would be nice to have some good references.
Java seems to be the de-facto standard for cell phones -- see Wikipedia:Java Card, Wikipedia:Java 2 Platform, Micro Edition, Wikipedia:MIDlet.
The first reference I came across is the list of all Wiki engines. (Wiki engines are 'server side', right?). Perhaps you could get an idea of how popular ("standard") a particular language is from how many wiki engines in that language are listed. I'm not sure if the Programming Language Popularity list is relevant.
--DavidCary 20:36, 16 January 2006 (UTC)
Vanity
A lot of the entries on this page are vanity entries from some programming language advocate. Key-Concept entries with not a single page to back them up. Or just a copy of a similar language in the hope that some links will fit. Often done by users with no other contribution beside the one on this page. Already I went thrue them to delete non fitting texts mercilessly. And I guess I have to do so again.
- Articles on Computer Programming#Programming_Languages are not to be small Wikipedia entries but must answer the questions of "Why learn?" and "What will I learn".
- Articles on Computer Programming#Key_concepts must be backed by links. If the table becomes to wide the language with the lowest count of true links goes first - Even it it is C++.
Good examples are Ada (I wrote that myself) and Objective-C. Bad examples are PHP and Perl which are missing Computer Programming#Paradigms list and Visual Basic .NET which is far to Wikipedia like.
Editors
'A good editor is lightweight, has only essential tools and should support syntax highlighting for your language.'
This statement is very subjective. I suspect that it is leaning towards general purpose editors. What is 'essential' - debatable. ( I think the vb.net editor is great.) maybe replace the para by e.g.
'Some language systems have a built-in editor, whilst others need a separate editor. Preference is often a personal choice' ??
getting started
What do I need to do before I can type and compile the first "hello, world" program, starting from
- a fresh new Mac
- a freshly installed Windows system see http://sc.tri-bit.com/Win32_New_User_Resources
- a freshly installed Debian system
?
I think it would be nifty to have a "click here, type this" reference page. Perhaps it could serve as an example of "test-first programming" by first testing if a hello-world program can run. If it can, great -- everything is already set up, and we can skip to the next chapter.
Is there any other book that would be more appropriate for this "set up" instructions? I don't want to put it in the wikibook for any one particular language, because
- Many programmers like to use 2 different languages to make a single application ( http://c2.com/cgi/wiki?AlternateHardAndSoftLayers ). It would be nice to comment on ways to make that easy.
- it seems that the set-up for most languages is very similar -- repeating those instructions in the wikibook for each programming language seems redundant.
--DavidCary 16:32, 21 January 2006 (UTC)
- Some Books already have such pages Ada Programming/Installing however a cross language overview might be useful. The best way to go about it might be transclusion - so repeatative work won't be needed and the language books can create pages which only describe there own installation procedure. See Computer Programming/Control and Ada Programming/Control on how tranclusion and cross book chapters work. If you start the work I will certanly add "Ada/SuSE Linux" — Ahh "SuSE Linux" is not in your list? But expect it – any such list will attract "vanity"/"me too" entries and either you create a scalable layout which can support any amount of programming languages/operating system or you have to sive out "vanity"/"me too" entries all the time. Actually you will always have to sive out "vanity"/"me too" entries – it's just a matter on how often.
- --Krischik T 10:16, 22 January 2006 (UTC)
Contradictory statement?
I came across this closer to the end of the page:
Many people think they must choose a specific programming language in order to become a programmer, believing that they can only do that language. They ask themselves, "should I be a C programmer or a Java programmer?" That's completely the wrong question. The right question is "How can I become a good programmer?" The question about the programming language is actually largely irrelevant; the reason for this is quite simple: each and every programming language is based on the same fundamental concepts. Once one understands these fundamental building blocks of programming, learning a new programming language requires no more than a few hours.
Having read that I proceeded to the first chapter of the wikibook which is Data Structures and was greeted by a seemingly contradictory statement in the first paragraph. It read:
To understand the material in this book you should be comfortable enough in a programming language to be able to work with and write your own variables, arithmetic expressions, if-else conditions, loops, subroutines (also known as functions), pointers (also known as references or object handles), structures (also known as records or classes), simple input and output, and simple recursion.
I came here with no experience in computer programming. I came here to seek a primer on the basics of computer programming.
68.155.251.88 02:11, 17 March 2006 (UTC)
Hen and Egg
It's Hen and Egg problem. In order to learn a programming language you need to know about data structures and in order to understand data structure you need a to know about programming.
The solutions is - like with the real hen and egg - both come at the same time. You need to learn two thing at the same time
- One or more Programming languages
- The theoretical concepts of programming.
Many beginners make the mistake and learn ony the fist part. But because no programming language covers all aspect of programming (See Multi-paradigm_programming_language) one can not learn all aspects of programming that way and therefore you can't become a truly great programmer. A truly great programmer can look over the fence of one language and see the grander picture.
It is not a coincidence that the top notch Oz programming language was developed by a university. But even Os is missing some paradigms (generic of example). Sadly or Oz Programming is far from a usable state (However for the #2 Ada programming language we have pretty good book: Ada Programming).
In any case: Here at Wikibooks we have both: Books about programming languages and books about the theory of programming. Some of which are cross linked. Read Computer Programming#Programming_Languages carefully, think what you want to archive and choose a language to learn. Read the theory books in parallel and try to apply the algorithms and data structures to the language of your choice.
And the tip from the Pro: Read a bit about other languages and see how they do things different from the language you have chosen. I have 15y+ experience and I still do that to keep my mind fit.
Sprawl
This wikibook is starting to have that highly unpleasant design-by-committee feel. It would be good if we thought a bit more about what we're trying to accomplish with this and do some heavy pruning. The programming languages section, for example, is getting silly, with everybody trying to sell their favourite language to the hapless newbie. I'm sure I'm guilty of it too (what with me trying to encourage people to learn about lesser-known stuff like functional programming). I don't know. Am I the only one with this feeling of us sprawling out too much? Is there anything we can do to steer this book in a healthier direction? -- Kowey 14:13, 19 June 2006 (UTC)