Programming for laypersons?
Author Message
Posted : Sun, 11 January 2009 04:07:39
Subject : Programming for laypersons?
Hey there. I am not fluent in any programming languages (beyond messing with some html), but researching linux as an OS has piqued my interest. I just have a couple of questions, then. First, what could a layperson do with programming knowledge that might be interesting or of use (or is it pretty much just worthwhile to invest time in as a professional programmer?). Second, where and what language would you recommend I start familiarizing myself with? Thanks!
Binary Snake
Posted : Sun, 11 January 2009 12:29:08
Subject : Programming for laypersons?
Hi, I suggest you start learning python, it's a very easy to learn general purpose programming language. You can start by reading docs at python.org, and try to solve some challenges at pythonchallenge.com
Polaris
Posted : Sun, 11 January 2009 16:38:56
Subject : Programming for laypersons?
The most widely used "Unix" language is Java in today's market, If you know Java you can pretty much get a job anywhere. I would download something like Eclipse and Glass Fish and start by creating webpages in JSP and maybe some Webservices since you are familiar with HTML, but not really programming in general, it might be a good place to start. Java is pretty High level, meaning it is abstract enough to not have to worry about the nuances of how the computer works. Its should be one of the easiest languages, if you get your environment set up correctly first anyway. The Eclipse Development Environment will speed you along with the "intellisense" like options that will show you what you can do with an object. Try and figure out what you want to do first, and then look up different ways of doing it, then start figuring out how to get it to work.
proopnarine
Posted : Sun, 11 January 2009 20:37:52
Subject : Programming for laypersons?
I think that you first have to decide what you'd like to program for. If it's web pages, then you want to look at high-level scripting or interpreted languages, such as Python or Perl. Other options are javascript and Java (which, btw is not the most widely used language for Linux; that honour falls to C, with C++ a close second). The nice thing about all these interpreted languages is that will usually run on multiple platforms (Linux, Windows, etc.) without modification. If you'd like to program for Linux itself, such as writing software for the desktop, then you definitely want to look into C or C++. The Gnome and KDE desktops are based on C and C++ respectively, and present great options (such as the gtk and QT graphics libraries). So in a nutshell, think first about what you want to do, and then decide on a language. I program a lot for scientific purposes, and while I like a lot of things about Java's design, it just cannot meet our performance demands precisely because it is a higher level language as Polaris mentioned; so we use C++ instead, which is lower level and significantly better for me. But if I programmed web apps., I'd definitely use Java instead.
thobbs
Posted : Sun, 11 January 2009 21:54:12
Subject : Re: Programming for laypersons?
I would recommend Java for a beginning programmer. I feel it is easier to concentrate on basic concepts like data structures and algorithms than say, C, where you spend your time saying "pointer what?". Of course, C and C++ are widely used, fairly powerful, and very fast, but I would hold off on learning those until you are very comfortable with Java. Java is also easy to throw together decent projects with, including graphical stuff. There are tons of books online to read about this, and I suggest reading them, but the best way to [i]really[/i] learn what you are doing has always been to write code. Any time you encounter a new idea in a book, try to implement it in various ways. This will give you a very good understanding of how to use it, and you won't quickly forget it like you might otherwise. Always try to achieve something beyond your comfort level, and you will progress nicely. [Modified by: thobbs on January 11, 2009 03:55 PM]
Rubberman
Posted : Sun, 11 January 2009 23:24:28
Subject : Re: Programming for laypersons?
[quote=diagoras]Hey there. I am not fluent in any programming languages (beyond messing with some html), but researching linux as an OS has piqued my interest.[/quote] Actually, HTML and all the other MLs are markup languages for the most part, not programming languages. The purpose of a programming language is to take some input (user, data feed, database tables, etc), transform it according to some rules (the program logic), and generate some output (to user, to a data stream, to a database, or whatever) as a result. [quote=diagoras]I just have a couple of questions, then. First, what could a layperson do with programming knowledge that might be interesting or of use (or is it pretty much just worthwhile to invest time in as a professional programmer?). Second, where and what language would you recommend I start familiarizing myself with?[/quote] Programming involves creating/using data structures to bring some order to the input and output of a program, developing algorithms which are the programming logic to transform that input in some meaningful way (such as software that takes stock prices and computes risk factors associated with the stock and options based on it), and then takes the transformed data structures and generates output for immediate action (user dialog), as a feed for further processing (those risk factors can be fed into other trading programs), or to a database for historical storage and/or later analysis. To a great extent, which language you start with depends upon what you are interested in doing. As a personal example, about 40 years ago I started learning Fortran in engineering school. Didn't do too much with it (did most ME calculations with a slide rule and books of tables). Then, about 30 years ago I learned how to program 8008 assembly language in order to build an 8048 microprocessor-based computer for road rally competitions. It was a simple time-distance calculator that took input from speed sensors mounted on the front wheel hub, elapsed time from the previous check point, and some other factors, transforming that into the speed the driver needed to maintain in order to reach the next check point at the correct time. I learned more from that than my Fortran course because the results were something that I as a rally driver (my hobby) could actually use. I suppose if in 1966 we had personal computers for engineering work, I might have learned more from that Fortran IV class, but it was a required course. About 10 years, I took a programming course that taught the BASIC language. Since I didn't have anything in mind to use it for, it was "in one ear, and out the other", even more so than my Fortran course. Then, about 25 years ago I was selling PC's in the Silicon Valley. I had a customer who needed some wholesale business accounting applications, but none of the commercial PC-based software we found met his needs. I was noodling with dBase II and thought I could write the application he needed. We agreed to try it out (good experience for me, minimal risk for him) and over time I ended up developing an entire AP/AR/GL package in dBase that ran his and other companies for over 10 years. It was also my start into a new career as a software engineer and programmer. My point in all of this is that you need to have some end-goal in mind to apply this learning experience. It can be something really simple - my grandson learned how to program so he could build better RC aircraft controls for his RC flying hobby, for example. If you have something concrete to apply this learning experience, then it will stick with you, and you will find it a very worthwhile experience, and not just another waste of time. The language itself is not important. It can be assembler (very difficult to do simple things), BASIC (easy to do simple things, impossible to do hard things well), C/C++ (hard to learn, but capable of ANY programming task), Python, Perl, Ruby, Snobol, Prolog, ADA, Lisp, Cobol, or any of a large and growing number of languages that all essentially do the same things, but each does something better/easier that the others. Lisp was designed for the analysis of human language. Prolog was designed to handle VERY complex formal logic problems. C and C++ are the tools to use for systems-level programming (like Linux, Windows, embedded and real-time systems). Java is a good general purpose language that has a lot of the strengths of C++ but adds those training wheels needed to keep a novice on the bike, so to speak. Python and Perl are scripting languages so they are efficient in building stuff quickly that works, and then can be changed quickly when necessary. So, find a problem that needs a programming solution, then decide on a language to use. Python may be the answer. Java may be the answer. Basic might be the answer. Fortran might be the answer (if you are doing structural analysis of bridges, or writing fast-fourier transforms for real-time signal processing :-). And most of all, HAVE FUN! FYI, you can find open source or freeware versions of just about every programming language ever invented for Linux, so start with a visit to the Wikipedia.