| | |||||||
| Technology & Technical Skills Computer skills, hardware, software, internet topics, gadgets, programming |
|
Welcome to the Personal Development for Smart People Forums, the place for lively, intelligent discussion of all personal growth issues -- physical, mental, financial, social, emotional, spiritual, and more. You're currently viewing as a guest, which gives you limited read-only access. By joining our free community, you'll be able to post your own messages, access many members-only features, see the new messages posted since your last visit, and of course remove this header message. Registration is fast, simple, and free, so please join today. If you arrived here from a search engine, you may want to explore the main site first, which includes hundreds of deep and insightful articles on a variety of personal development topics. |
| | Thread Tools | Display Modes |
| |||
|
In an attempt to find a more productive replacement for mindlessly surfing the Internet, I'm thinking of learning some other programming languages. I've already had a fair amount of experience with Visual Basic, HTML, and CSS (though what I know of CSS isn't that much, I'll admit). I'm interested in tackling something beyond Basic. What programming language do you think I should tackle next, and are there any free resources I can take advantage of? (Preferably for offline use, see above statement of course :V) Any help would be appreciated.
|
| |||
|
I suggest C#, it's a very interesting language to work with and with .NET and whatnot you have tons of good, well made libraries of functionality ready for you. If you want to have a harder time, you could try C++ it is still very powerful. But you should be prepared for hell if you choose that route. It's quirky...
__________________ "We're here for a good time, we're not here for a long time." - Colin Mcrae “It is no measure of health to be well adjusted to a profoundly sick society.” - Jiddu Krishnamurti |
| |||
|
Eh - language of all languages at a human readable level (NOT machine code IOW) would be Assembler. My suggestion would be to start off learning to program in a scripted environment rather than a compiled one - quicker to see results and scripting languages are usually built to be more human readable than their compiled brethren. Suggestions from personal experience: Python (my favorite) PHP Lua If you are serious about learning a compiled language first, I am assuming you are in it to learn the nitty gritty, in which case you should start bottom up: Assembler (many different specs depending on your architecture) C/C++ Java Fortran etc... If you are interested in a language that will be in demand near future, think about learning the mother of all concurrent languages: Erlang. Your journey is a long one - I suggest getting a mix of both practical and theoretical programming in. Build a website w/ Python then crack open a compsci textbook that uses Python, you'll get experience and knowledge from both that are essential IMHO. You can learn to program for free very easily. My del.icio.us bookmark account has an enormous number of bookmarks for free education, texts, online textbooks, tutorials, etc... in the programming and compsci arena as well as education on a whole: ixmatus's Bookmarks on Delicious Libraries are excellent resources as well - especially for used textbooks. Don't knock older books, some excellent material in there - it may also be thought of as a good exercise to bridge the gap between knowledge in older books with newer developments - keeps you keen on what you are learning. |
| |||
|
Aside from readability, interpreted languages do not need to be compiled. I say interpreted, because, not all scripting languages are interpreted - very few are compiled. This means that interpreted languages are: quicker time to develop but slower at execution. It is generally accepted that interpreted languages are excellent for prototyping larger applications, or 'gluing' compiled parts of a larger application together. Many programs will be written in an interpreted language and then their heavier algorithms will be refactored into a C module (Python for example) that will run much faster. |
| |||
|
Ah ha. I see. Anyway, as for me, I'm not sure if I'm interested in the nitty gritty just yet. I think, if I were to go that route, I'd build up to it-visual down to the bare bones. How difficult would you say Python would be to get ahold of? That C# also looks interesting, too-what's your advice on it?
|
| |||
|
I'm surprised noone has mentioned Haskell yet! That is by far the most interesting and fun language I know of. A very good tutorial is at Haskell - Wikibooks, collection of open-content textbooks |
| |||
|
@ ixmatus, How well do python and elrang work in concert? I am learning python now, don't know anything about erlang. |
| |||
|
@Matt: Python is easy, powerful, and fun. That should be first on your list; then make C# next. I personally don't care for C# all that much - but, if it floats your boat then go after it! @povman: I didn't mention Haskell primarily because it's concepts are difficult to grasp - much more difficult as a beginner; whereas Python will introduce concepts very easily and accessibly, even some basic functional programming concepts. I do agree, Haskell is a beautiful language. @Dan: I'm so happy you asked - Python and Erlang are (IMHO) a match made in heaven. Erlang for concurrency and distribution and Python for it's expressiveness and huge set of libraries. There are a number of projects that use the Erlang 'ports' system to bridge data types between the two languages - also, the Disco project is one that uses Python and Erlang as a distributed processing system. Write your algorithms in Python, refactor heavy algorithms in C as a Python module and use Erlang solely for its concurrency. You essentially get Erlang acting as a master node making calls to a Python script and passing the results from the script's computation to any other scripts being juggled by the Erlang parent. Wicked combo. Great for heavy computation and small messages. I have also toyed with the idea of using Erlang & Python in a distributed web-application. Erlang comes with a 'built in' distributed database called Mnesia. There is also the Scalaris project which takes Mnesia to a whole new level... |
| |||
|
I'm just a dabbler rather than an expert in any of the following. The languages that have been most useful to me so far are PHP, MySQL, JavaScript, HTML, and CSS. Using all those, I was able to partially complete my own blog software practically from scratch, which was really hard but very satisfying once it started working properly. I also used those to make my own database software to organize my music collection, generate music playlists, etc. I develop PHP/MySQL stuff using XAMPP as an offline web development environment. XAMPP runs an Apache web server on your own computer, even if you're stuck using Windows. It has worked quite well for me, my custom blog software worked without any major changes when I uploaded my blog software to my actual website. Perl has been useful to me too, especially for short scripts to process files full of text. I also was able to use Perl to make a little script to help a relative easily generate invoices, formatted nicely with HTML/CSS. (Though it might actually be much better for me to make a PHP/MySQL version of that same program, since then, my relative could have all his billing data stored in a nice convenient database.) I don't really know of any good downloadable documentation for any of the above, I usually just end up searching the web anytime I don't know how to do something with them. A relative of mine has sometimes told me I should learn the J programming language, since he thinks if I got really good at it that I could probably get a high-paying job in a financial industry or something. I still have done hardly anything with J at all yet, but I think it might be fun and probably useful even for other things besides getting a high-paying job. I think once you download J there's extensive documentation included, tutorials, etc., which you don't have to be online to use. The same relative also has kept telling me about how good Python is, but I've never worked with Python at all yet, partly because I don't know if I could get it to work with my web host or XAMPP, and I also am just comfortable with PHP. Especially if you happen to like text adventure games, Inform might be fun. I haven't worked with Inform 7 yet (which is one of the most unusual languages I've ever seen), but Inform 6 (which is more like a standard C-like programming language) was useful and fun for me, even for things that weren't text adventure games. Many years ago it was the best programming language I had available to me on my family's primitive Macintosh Performa 405 that was so pathetic that Perl could barely even fit on its hard drive. Lots of downloadable documentation: Inform 7 Inform 6 The language of Second Life, LSL (Linden Scripting Language), is also fun and potentially very useful, since the scripts can interact with things outside of Second Life, such as websites. However, I don't think OpenSim (which makes it so you can have your own private Second Life server hosted on your own computer) is capable of handling all LSL scripts correctly yet, so, you won't be able to develop and test many scripts without being online and logged into Second Life. Downloadable documentation on LSL is here: LSL Wiki Mirror 7-7-7 : HomePage And probably more up-to-date info is here: LSL Portal - Second Life Wiki Best wishes, Apollia
__________________ Astroblahhh.Com |
| |||
|
Or you can follow the current mobile hype and learn Apple Objective C, or Google Android.
__________________ http://www.Gtdagenda.com - use Gtdagenda to manage your Projects and get things done. Now works with Twitter. |
| |||
|
Whoa, mama, the jargon is fast and furious in here, but at least I'm getting a lot of great ideas. @ixmatus: You sound really passionate about Python and I think it's starting to spread to me, too. Now I know it's definitely worth a look. I just hope I can find some offline documentation for it. @Apollia: Web development has also piqued my interest, though I'm not sure whether to focus on that or more local software development. As for Inform, well, I never was very good at Zork, so I dunno about that one :V |
| |||
|
MattW, Are you interested in programming languages so that you can write your own software? What is it you are wanting to accomplish with learning programming? Depending on what you are trying to do (write software, make better webpage, write mini scripts to do something quick... etc) it will vary what languages are good to start with. If you want a fully fledged language, you can go with Java, C++, or something like that. You can develop fully functional applications with that. But that's very complicated. If you want to make better web pages, php, javascript, html, css is good for that. It's quick, relatively easy to learn, and a good way to start. If you want to write little mini scripts to do some sort of relatively small quick task, you can look into python or shell scripting, even perl. So it depends on what you want to do. So what is it? |
| |||
|
MattW: So you are turning toward doing software development for a career or a hobby? Cuz that depends too. Sorry, I know "it depends" is kind of a crappy answer. But I've been in this industry for a long time, and you become a successful software developer by doing. If you are wanting to turn toward a career in software development, I would start with taking some basic college classes on programming (coding). Classes that teach OO, such as C++ or Java is a good way to start. To jump start a career in software development, I would recommend finding an open source software application that you find useful, but want to improve some how, and start contributing. Of course, you'd have to learn the lang it was written in, so you could start with that language. The technical aspects of software development is actually things you can learn by reading. What makes you a really great developer is not really languages and technical aspects, but the ability to see solutions and deliver solutions to business problems using software (or automation via code, etc). And that, you can only learn by loving what you do and doing it. Some great blogs/writers to start looking into are Jeff Atwood, Kathy Sierra, and Joel Spolsky. They write about the art of software, the aim of it, and the craft of practicing it. Their earlier writings will be more useful. I hope that helps. Good luck to you. |
| |||
|
@ns123: Hmmmm. Taking classes isn't really a viable option. I'm already going for a computer degree at a business college, and they don't really have much programming courses beyond your simple introductory material, otherwise I'd be all over that. Plus money's already kinda tight on this end (IE I kinda don't have a job at the moment :V). At this point, I like what I've done so far, but I think I should explore the field more deeply before making it a commitment as a career.
|
| |||
| Quote:
My music organization database is a local application which I never intended to use on an actual online web server - though it could fairly easily be adapted for such use, since those languages are generally used mainly for web development. Somewhat frighteningly, PHP (used as part of XAMPP) is capable of reading and manipulating files anywhere on your hard drive(s). However, this feature made it possible for me to create some database software (not intended to run on an online web server; and also not finished yet, but it will be available as a free download from my website whenever it's finally done) with some very useful search capabilities to help me organize and locate files on my computer. It's a bit like Google Desktop, with missing features, and some extra features Google Desktop doesn't have, and the advantage that it's open source and thus modifiable by me or anyone else who wants to modify it. I also like that I don't have to worry about Google Desktop's security/privacy issues - instead, I'll have my own security/privacy issues to worry about, and no one to blame but myself if something goes horribly wrong. Perl is another language that can be used both on web servers and for offline stuff, though so far I've found it easier to just stick to PHP alone or Perl alone instead of trying to figure out how to make them work together, especially since I also don't yet know how to make Perl do anything with a MySQL database. Quote:
Inform definitely isn't as useful as the other languages I and others have mentioned (except in the realm of writing text adventure games) - for instance, unless it has been tremendously enhanced since the last time I used it, I don't think it can access files on your computer other than saved game states. Good luck with everything. Best wishes, Apollia
__________________ Astroblahhh.Com Last edited by Apollia; 11-10-2008 at 09:45 PM. |
| |||
|
@Apollia: Hmmm, I didn't realize PHP was that versatile. I have to say that it makes this decision a bit more confusing. Maybe the best thing to do here is to pick a language that sounds good and get immersed in it for a bit and see where it goes.
|
| |||
|
@Matt: PHP does have a CLI - however, I recommend staying very far away from it. I would only ever recommend PHP as a web development language for the simple fact that literally everyone supports it, the community is big, and the barrier to entry is very low. I love Python - I am a big supporter of it, especially for those looking to enter into computer programming. Python has an excellent blend of being relatively easy to grasp and rigid enough that noobs don't go spray painting the internets with the grace of PHP. I know I sound like a PHP hater - I really am not, it just happens to be the language I grew up on, and I understand its shortcomings to a greater extent. Learn Python! @ns123: Python is a fully fledged language. Any Turing complete language is 'fully fledged'. The difference between compiled and interpreted is a very blurry line - especially when one can write low level modules to handle anything that needs the speed of a compiled language. College course aren't a bad idea, however, there are hundreds of free college courses being published every week online by top universities - no need to pay for it. I never took any classes - I learned through books, reading other people's code, and working on projects to practice and develop my skills. |
| |||
| Quote:
I didn't mean "the language that's closest to the metal of all languages". There are a lot of languages written in C, and there are a lot of them based on C syntax too. That explains my statement "the language of all languages". I think C is a good language to gain a better understanding of how other languages work internally. If you want to learn a scripting language I would suggest Ruby instead of Python, but that's only an opinion based advice. Python has the , 'one way to do it philosophy', ruby has a 'write it how you want' philosophy . IMO Ruby is more flexible than Python.
__________________ Niki Last edited by Niki; 11-11-2008 at 12:55 PM. |
| |||
|
@Niki: Understood - I thought you meant language of all languages in the sense of lowest level... I said assembler because it is the lowest you can get without hitting actual machine code. Granted there are many different Assembly languages for all the different architectures and then there is also 'high level' assembler... In the mainstream languages, yes, C syntax is the most widespread. I would revise your above statement to say this: "C is the language of all imperative languages." because it technically is, as far as I know the vast majority of imperative languages base their syntax off of C. I will also concede the fact that many functional languages use C to implement their VM or interpreter. Which would mean that knowing C would give you the ability to understand the language's implementation (this is true of Python's C implementation). Ruby vs. Python As you've said, the distinction is one of opinion and taste than it is objective. I prefer Python for it's minimal way of doing things - IOW, there usually is 'one way of doing' something. I prefer it because there is less reinventing of the wheel and a focus on engineering the language for the 'Pythonic way'. For me, decidability is key, it also makes the language and resultant code very coherent and easy to understand across developers. One of PHP's major downfalls is it's flexibility - it's so flexible that it has little structure. I haven't actually used Ruby, period, so I have no grounds for criticizing it - I am only doing so based on your statements with an analogy using PHP (which I am experienced with). |
| |||
|
You have already been given many great suggestions, but I wanted to add that if you're interested in online college courses, be sure to check this out: Free Online MIT Course Materials | Electrical Engineering and Computer Science | MIT OpenCourseWare Many people have wisely suggested Python. May I recommend this link to you now: MIT OpenCourseWare | Electrical Engineering and Computer Science | 6.189 A Gentle Introduction to Programming Using Python, January (IAP) 2008 | Home |
| |||
|
I think I'm going to have to flip a coin or something on this one. @Daffy: You, sir, are a king. Thanks for the great links! And they look downloadable, too-well, the assignments, at least. If I could find some PDFs explaining this stuff, I'd be set. Last edited by Matt Willard; 11-11-2008 at 11:06 PM. |
| |||
|
@Matt: Best wishes, programming will empower you in many ways - you will look back at your 'average user' days and wonder how you ever got along. You learn a lot about the fundamentals of computers and software that the average user will never learn that is immensely useful. There is also quite a bit of satisfaction to be gained from writing a script or set of scripts that automate something people end up doing by hand usually. Need to process an email and stick certain data into a database? Instead of manually copy/pasting that data from the email into an Access database, you could write a Python script that would grab the email for you off the server and process it based on it's sender address - automatically parse the text document extracting the data and inserting it into a SQLite, XML, CSV, MySQL database automatically for you... Then there is writing software - which is fun on many levels... :-) |
| |||
|
So um... what do you want to do with the language? I work with VB.NET and Java professionally and Ruby, PHP, JavaScript, and the aforementioned languages regularly on the side. They all have areas where they excel. The language you pick depends a lot on what you want to do with it. First of all, assuming you are a typical computer user and not interested in becoming a professional programmer, I see no reason to ever learn C. (That doesn't say anything about C# though.) I AM a professional programmer and I still don't know C. If you want to program for the web, PHP is really the standard and a very good choice. If you want to write typical computer programs (with a form and all), you probably want to go with a Microsoft language because the Microsoft Development Environment is by FAR the easiest tool for making forms/GUIs. I just wrapped up a fairly simple Java program at work and the code to make the form/GUI is something like 1500 lines. I use VB.NET, but C# is also a fine choice. Learning it will probably be more useful down the road as you learn other languages. If you want to write small programs to accomplish simple tasks and don't care if they run from the command line, pick a modern scripting language like Python or Ruby. Ruby is my choice, but both are fine. Python is more popular. However, if you're just writing programs to meet your own needs, it doesn't matter which one you pick. I use Ruby frequently to do everything from generate passwords to use online to deal with large text files to move files around on my computer. Java is somewhere in between. If your GUIs are going to be fairly simple, Java is fine for writing them, it just takes some getting used to. I haven't really found any tool for making GUIs that I really like, so I write them myself in Java. It's work, but there are actually some good features with Java GUIs. The language is somewhat simpler than the C languages (at least in my opinion) but not as simple as Basic. It also runs faster than Python and Ruby... at least generally. Java also has the benefit of being compatible with almost any type of computer. Also, of all languages, I think Java has the best documentation. The Sun website and the Java API can teach you how to do almost anything you could ever want to do with Java. Sun has numerous example programs and plenty of tutorials, and it's all well-organized in one place. It's not a bad thing at all to pick up a little bit of a bunch of languages. I don't think I could even remember all the languages I've written at least SOMETHING in. I know I at least need to add C, C++, VB6, VBA, ASP, Perl, AutoHotkey, and Python to the languages I've mentioned already. Really though, programming languages are tools. Like any tool, they have tasks which suit them. Picking a tool is not as important as picking a task. You will learn much more by actually writing a program you're interested in than by going through a tutorial anyway. If you have any questions or want me to say more about anything I've said, just ask. Last edited by dbstraight; 11-17-2008 at 04:45 AM. |
| |||
|
@dbstraight: Wow, I'm surprised that something as simple as VB.NET is being used professionally. Yes, I'm interested in typical computer programs, and not so much in scripts and the like. (Still divided about web design, I'll have to think about it.) In any case, I wanted to see if there were any good hands-on tutorials out there-my Visual Basic.NET class was quite enjoyable for me, with a lot of hands-on lab assignments, and I want to learn other languages in that kind of format. Still, I understand what you're saying-learning something by doing it is often a superior method to learning something. In any case, VB.NET was great for me, so I'd definitely like to learn the others that Microsoft has to offer.
|
| |||
| Quote:
|
| Bookmarks |
« Previous Thread
|
Next Thread »
| Thread Tools | |
| Display Modes | |
| |
| | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Computer Programming? | CroMagna | Personal Effectiveness | 13 | 10-17-2008 09:12 PM |
| Good Vegetarian Recipe/Diet Resources? | Matthew Haupt | Health & Fitness | 15 | 06-17-2008 10:36 PM |
| A Month Of Programming | dinc | Technology & Technical Skills | 34 | 06-02-2008 10:09 PM |
| Good advertisement resources? | Refrusloi | Business & Financial | 2 | 08-06-2007 09:06 AM |
| Can anybody recommend a good program for studying abroad in China? | tomn8er | Fun & Recreation | 1 | 06-05-2007 11:36 PM |
All times are GMT. The time now is 07:35 AM.






