|
| Computing.Net: Over 1,000,000 posts about all things technology related! Over 90% answered within 24 hours! Click here to sign up now, it's free! |
Which language to start?
|
Original Message
|
Name: swimfast64
Date: June 1, 2005 at 19:03:49 Pacific
Subject: Which language to start?OS: win XP home sp2CPU/Ram: amd64 2800 1 gig 400mhz d |
Comment: Hi, I'm heading off to college next year and I'd like to get some basic programming experience under my belt just on my own over the summer. While not required by my school going in, I figure it can't hurt to get a leg up. I'll be majoring in engineering, so it will definitely be required later on. My question is which language should I start with? I am pretty solid with hardware and with windows (i make simple batch files, etc), don't have any experience with any other OS. I've been told that visual basic is good to start, but then again that java is the way of the future. Thanks a lot, Ed p.s. I used to mess around with html back in the day, nothing fancy or complicated.
Report Offensive Message For Removal
|
|
Response Number 2
|
Name: Wolfbone
Date: June 2, 2005 at 04:08:43 Pacific
|
Reply: (edit)With the recent rise in popularity of languages such as Python, which derives much of it's power from it's Lispy features, and of Lisp itself, Java is clearly not the only future (if it has a future;-) and it has a poor reputation with engineers and scientists anyway. Visual Basic is simply not a suitable programming environment/language at all - either for engineers or for learning about programming, but especially not for engineers. As an engineer, you will probably not be able to avoid Fortran (Fortran is to science and engineering as COBOL is to business) but I wouldn't advise concentrating on learning it anymore than I'd advise astronomers to concentrate on learning RSI's IDL (a student friend recently learnt both in a couple of months in order to complete his final year project). What is important in programming - especially serious programming in engineering and science - is the conceptual content: computer algebra, data structures, algorithms, numerical techniques etc. and a general knowledge of the tools available. You should find working through the first two chapters of the classic SICP enlightening and you may find browsing through some of the books available here useful too (have a look especially at the "Numerical Recipes" and "Algorithm Design" books). There's a very good DSP book there somewhere too. I would also advise equipping yourself with a GNU/Linux system together with at least some of: scilab, (cvs-)emacs, (i)maxima, guile (scheme), lush, latex, preview-latex, auctex, gnuplot, pari-gp, gmp, fftw, gsl. gcc has a Fortran compiler but F90 is only implemented in the latest versions - I think - but Intel has it's free (but closed) IFC compiler if you need it. There is a wealth of high quality free (FLOSS) software suitable for science and engineering students and it's mostly all free - in both senses of the word.
Report Offensive Follow Up For Removal
|
|
Response Number 3
|
Name: StuartS
Date: June 2, 2005 at 05:24:09 Pacific
|
Reply: (edit)Wolfbone You dismiss Visual Basic then go on to say the FORTRAN is good for business and scientific applications along with COBOL for business. BASIC was derived from FORTRAN and COBOL, so it cant be all that bad. Visual Basic may not be very good for scientific or engineering application, but there is a lot of programming that goes on that has nothing to do with either. Visual Basic has largely replaced COBOL as the business language and in business programming where time is of the essence, Visual Basic is and ideal tool. Stuart
Report Offensive Follow Up For Removal
|
|
Response Number 4
|
Name: Wolfbone
Date: June 2, 2005 at 06:56:47 Pacific
|
Reply: (edit)"...then go on to say the FORTRAN is good for business and scientific applications along with COBOL for business." No, that is not what I said and I have to wonder why you are making this response to my comment at all: Recently, you inexplicably and ironically criticised me for confusing a 15 year old questioner by asking you questions (and using "big words") - after you'd already suggested a book on "general programming principles"! (Like SICP perhaps). You did not answer my questions then, and now you are making irrelevant observations about Visual Basic and business programming. What's the point Stuart?
Report Offensive Follow Up For Removal
|
|
Response Number 5
|
Name: SN
Date: June 2, 2005 at 07:53:26 Pacific
|
Reply: (edit)swim- You asked a simple question and have been given some very strange advice so far...I completed my BSE in computer systems engineering about a year ago at Arizona State. Most of the programming I did in school was in Java, with the exception of some C in an Operating Systems class, a fair amount of assembly in hardware courses and some Lisp in an Artificial intelligence course. If you really want a 'leg up' when you get into school, find out which language they teach in the intro to programming courses at the school you're going to attend, and start studying that. This is almost invariably C++ or Java. If you're brave go ahead and dive into data structures and algorithms, but be aware that in many curriculums, these topics aren't covered until your sophomore year, and they aren't covered in depth until you're a junior. Depending on what sort of career you see yourself getting into, I tend to think it's unlikely you'll use many of the tools Wolfbone suggested. If you see yourself in a science related career, by all means look into the technologies he mentioned. But go to monster.com and check out programming jobs in your area...How many jobs can you find for ASM, COBOL, FORTRAN, Python, PHP, Perl, or Lisp programmers? Compare that to the number of jobs available for C, C++, Java, VB, VB.NET and C# programmers. Mechanix2Go's suggestion of starting out with ASM definitely has its advantages...You would learn what's going on 'behind the scenes' before learning the more abstract stuff. But ASM is complex and there are alot of architectural details that will distract a beginning programmer from learning the important concepts. Java may or may not be the way of the future...It has to get faster, be more efficient, and have better development tools to make me love it, but undoubtably those things are forthcoming. If I had to recommend a language without getting any additional information on your interests, I would suggest Java. Not because I think it's the best, but because it would have been the most helpful to me when I was in your position. Good luck, -SN
Report Offensive Follow Up For Removal
|
|
Response Number 6
|
Name: StuartS
Date: June 2, 2005 at 08:40:24 Pacific
|
Reply: (edit)The point is Wolfbone that you dismissed Visual Basic out of hand because it is not the best for scientific applications. As it is derived from FORTRAN which is a scientific programming language, it has to have something going for it. As a tools for a particular job, Visual Basic is as good as any other programming language. Just because it has BASIC in its title it doesn't its the same as the BASIC of old. Its come a long way since then. Whether it is good for beginners is subjective. You can learn bad habits with any programming language. Stuart
Report Offensive Follow Up For Removal
|
|
Response Number 7
|
Name: Wolfbone
Date: June 2, 2005 at 10:10:48 Pacific
|
Reply: (edit)SN: I'm sorry you think my advice is strange. I 'majored' in physics, which is possibly a course closer in content to Ed's unspecified engineering course than your computer systems engineering course. From day one we were using matlab and CAS's, hence the scilab and maxima suggestion. From my further experience in the world of physics, mathematics and computing, I have developed the opinion that the MIT approach is the right one and that Lisp is a superior tool both for teaching and for practical work. I know that the curricula of many courses suggest otherwise but not all of them do: http://www.schemers.com/schools.html and there is no reason why someone willing to educate himself in his spare time should restrict himself to the limitations of the course he is taking or be bound by it's deficiencies. "If you really want a 'leg up' when you get into school, find out which language they teach in the intro to programming courses at the school you're going to attend, and start studying that." That is reasonable advice but in the foreword and preface to the 1st edition of SICP can be found some of the reasons that I share the opinion of MIT and many others that learning programming in C++ or Java is not best practice, and as I did in fact have to use Visual Basic as an undergraduate, it is not from lack of experience of the alternatives. "Depending on what sort of career you see yourself getting into, I tend to think it's unlikely you'll use many of the tools Wolfbone suggested. If you see yourself in a science related career..." Well yes - that is what I would tend to think someone majoring in engineering would be looking at ;-)
Report Offensive Follow Up For Removal
|
|
Response Number 8
|
Name: SN
Date: June 2, 2005 at 11:27:56 Pacific
|
Reply: (edit)I 'majored' in physics, which is possibly a course closer in content to Ed's unspecified engineering course than your computer systems engineering course. I guessed that a person going into an engineering course that requires courses dedicated to programming would most likely be majoring in something similar to what I did. None of my friends that majored in Mechanical, Bio, Chemical, or Aerospace engineering had required programming courses in their curriculum. "Well yes - that is what I would tend to think someone majoring in engineering would be looking at ;-)" I majored in engineering (the E in BSE) and, with most of my classmates, went into business rather than science. The tools you mentioned are of very little use in most business environments, and most programmers (ie software engineers) work with businesses, so I continue thinking your advice is off the beaten path. "I have developed the opinion that the MIT approach is the right one and that Lisp is a superior tool both for teaching and for practical work." I'm not sure that MIT would make such a statement. They use Lisp in their introductory courses, and their software engineering lab uses Java. Computer science at MIT. To make a sweeping generalization like "Lisp is the superior tool for practical work" is not weird...it's insane. There is no silver bullet technology that is the best tool for everything. You can't possibly believe that Lisp is the right tool for Game development, for example. Or for any kind of user-interface intensive application. When I last read the manual on common Lisp, they were very clear that Lisp is not best suited for everything, but it is very nicely suited for many things. "http://www.schemers.com/schools.html" Just to clarify, that list is a list of schools that use Lisp somewhere in their curriculums, not schools that use it to teach how to program. Most of them teach it as a side note in "Introduction to programming languages" courses, and use it in any AI courses. "and there is no reason why someone willing to educate himself in his spare time should restrict himself to the limitations of the course he is taking or be bound by it's deficiencies." I agree. But the OP didn't ask which language was the best to start out with. He asked which one would give him an advantage in his upcoming coursework. Being an expert in any of the technologies you mentioned would have helped me very little in my coursework. Obviously, if your guess was correct and the OP is going into a more scientific side of engineering, I will give your advice a little more credence. In the absense of additional data, however, we're both just going on our own arbitrary interpretations of the original question. -SN
Report Offensive Follow Up For Removal
|
|
Response Number 9
|
Name: Wolfbone
Date: June 2, 2005 at 13:40:59 Pacific
|
Reply: (edit)"I'm not sure that MIT would make such a statement. They use Lisp in their introductory courses, and their software engineering lab uses Java." "The course is required of all MIT undergraduates majoring in either Electrical Engineering or Computer Science, and is recommended for other majors where computation pays a major role." From http://mitpress.mit.edu/sicp/course.html where it also makes the statement: "6.001 differs from typical introductory computer science subjects in using Scheme (a block-structured dialect of Lisp) rather than Pascal as its programming vehicle. The subject's developers feel strongly that Pascal is hopelessly constraining, and that important ideas (such as functional programming and object-oriented programming) can be addressed within Pascal only awkwardly, if at all. In addition, they consider top-down hierarchical design, so often emphasized as a central theme in computer programming subjects, to be a minor and relatively simplistic strategy in the programmer's arsenal for attacking complex problems." This is also emphasised in the preface and foreword, as I said before, and the same approach is taken at Caltech: http://www.cs.caltech.edu/courses/cs1/lectures/day01/day01.pdf "To make a sweeping generalization like "Lisp is the superior tool for practical work" is not weird...it's insane." Well you not only misquote me but also remove what I said from it's original educational context: "...opinion that the MIT approach is the right one and that Lisp is a superior tool both for teaching and for practical work. I know that the curricula of many courses suggest otherwise..." enabling you to set up a strawman argument which you knock down with: "There is no silver bullet technology that is the best tool for everything. You can't possibly believe that Lisp is the right tool for Game development, for example. Or for any kind of user-interface intensive application." and even so, if I had made the argument that I did not in fact make, I'd have hoped I could've done so without being accused of insanity... http://www.franz.com/success/customer_apps/animation_graphics/naughtydog.lhtml ...although the weirdness bit might've still been applicable, especially as I have myself made the point about appropriateness of choice and diversity in tools somewhere else in this forum previously.
Report Offensive Follow Up For Removal
|
|
Response Number 10
|
|
Reply: (edit)I just wanted to say, I have a good deal of knowledge about many of todays popular programming languages, and I would start with C++. Its a extremly boring language, and is also very frustrating, but c++ can be used to build almost anything and its concepts will carry over into almost all other lanuages (object oriented languages not the spegetti code you did with batch) Which simply means that you will learn to write functions that will be used and reused, you will also learn if, then, else statements, loop statements and more. Its a hard language to conquer but will by far be the most benificial to learn, atleast in my opinion. Personally, I think visual basic is nice for beginners, however, if you want to write programs that actual do advanced things or use the concepts you learn from VB and apply them to other languages, VB can get very confusing. Basically, programming is a simple matter of syntax, you will take the basic principles of general programming and apply them to tons of languages, and will slowly learn the syntax of each individual language. There are books that show the principles of programming like the basic statements (if statements, loop statements, basic functions, etc..) These books are good at explaining these basic concepts and will aid you as building blocks to more advanced coding. Good luck!
Report Offensive Follow Up For Removal
|
|
Response Number 11
|
Name: SN
Date: June 2, 2005 at 14:56:08 Pacific
|
Reply: (edit)"Well you not only misquote me but also remove what I said from it's original educational context:" I obviously misunderstood your meaning...My apologies. I think when you use the word 'superior' as a substitute for 'good', you open the door to alot of ambiguity. This is particularly true when you use it in a discussion comparing various technologies and don't qualify it with a context or application in which it is superior. "and even so, if I had made the argument that I did not in fact make, I'd have hoped I could've done so without being accused of insanity..." Nope. Anybody who makes the argument that you did not in fact make is clinically insane and should be institutionalized before they harm themselves or others. The naughty dog article was very interesting, but I'm not sure it qualifies as proof that somebody who thinks Lisp is the superior tool for every application is not insane. It sounded to me like Lisp was used to create a language and tools to help develop the game, not an end-to-end solution for writing and running the final product. After all, the caltech powerpoint you linked to says quite plainly, "Scheme is not a 'practical' language", then goes on to explain why they use it for teaching. Even I wouldn't go as far as saying that it's not a practical language, but as a tool for typical programmers, its use is more limited than its more popular competitors. -SN
Report Offensive Follow Up For Removal
|
|
Response Number 12
|
Name: swimfast64
Date: June 2, 2005 at 21:28:10 Pacific
|
Reply: (edit)Hey guys, I had gotten a few responses last time i checked but didn't expect this many, thank you so much. The discussion is pretty fascinating, if distant. I guess I have a follow up question, which should i prioritize: Learn about programming Learn how to program The distinction as i see it, and as i gleaned from the responses above, is that there are languages which will be more useful, and languages which will be good on an educational level. A bit like choosing to study latin in high school. I chose spanish, by the way. So, depending upon which item you believe should be prioritized, which language should i start with? Thanks everyone, Ed
Report Offensive Follow Up For Removal
|
|
Response Number 13
|
Name: Guy
Date: June 5, 2005 at 14:27:13 Pacific
|
Reply: (edit)The best thing you can do is write "Hello World" programs in as many languages as you can get your hands on. I am an old man, started an Engineering degree in '66, findished in '71, and even then they made us take a FORTRAN course. That course is what made me work in software development for 30+ years. For languages try: --Windows .BAT, .VBS, .JS scripts --Java (it's free) --C/C++ (install Linux if you cannot pay for MS implemntation) --COBOL (Yes kids, it is still there, and the old guys are retiring, it will be very lucrative in the future) --Scripting languages: PERL, PHP, Python, Ruby, awk, Unix shells, REXX, yada, yada ..... --The modern MS languages if you can afford them: C#, ASP.NET, .... --Academics: LISP, Smalltalk, ... --Gonvernment Work: ADA --Anything else you can come up with Depending on your curriculum choice it may be absolutely necessary that you understand at least one platform's assembler language. (That's kind of where I started real work). I give you this "hello world" advice because I think it meets both of your stated requirements. Luck, Guy
Report Offensive Follow Up For Removal
|
|
Response Number 14
|
Name: basicdos
Date: June 14, 2005 at 20:11:32 Pacific
|
Reply: (edit)Swim fast Assembly (ASM) is the next step up from comunication with the computer rather then typing in ones and zeros. This language is very worth understanding but it is not very glamorous It is what driver programs and operating systems are written in ASM. It is not easy to accomplish things with this language(tedious) but it is very beneficial to understand it, a good book on ASM will teach the concepts of how input is transfered thru the cpu to the different memory locations and how to retreive it. you will learn about the different structures of memory the cpu and peripheral devices on a programming and hardware level. Programs created in ASM can be used by C, vis basic and basic programs and i would suspect, any other language. from my experience I can recommend "Assembly language step by step" dy jeff duntemann barnes and noble dot com This is a begginer book It reads like a text book and a how too book. On the other hand...
If you want an overview of the general concepts of programming and want to start doing some creative things quickly simple screen drawings, sounds beeps and interactive questions and answers including math I reccomend "Beginning Programming for dummies" barnes and noble dot com this book covers some C and alot of basic programming, which is transferable to visual basic and visual C. it might include java now. this book reads like a joke book but it teaches you alot and assumes you know nothing about programming at all. It is a very easy read. Good luck
Report Offensive Follow Up For Removal
|
|
Response Number 15
|
Name: Malkom
Date: June 22, 2005 at 04:05:17 Pacific
|
Reply: (edit)As a beginner programmer you could try HyperNext which is aimed at novices. Its a visually based software development system having a simple interface with just one window and toolbar. Its language has English-like statements and does not require variables to have their data type declared. Its very easy to get started in and has many examples. It also supports RBscript, a subset of REALbasic, an object orientated BASIC. By the way, HyperNext is cross-platform and runs on Windows, Macintosh OS X and OS 9, and builds applications and stacks for all three platforms. It can be downloaded from http://www.tigabyte.com I hope you find this interesting Malcolm
Report Offensive Follow Up For Removal
|

Post Locked
This post is quite old and has been locked from receiving new replies. Please create a new posting instead.
Go to Programming Forum Home
|
|
|