Welcome Guest.   Make a donation to an author on the site September 30, 2014, 03:04:33 PM  *

Please login or register.
Or did you miss your validation email?


Login with username and password (forgot your password?)
Why not become a lifetime supporting member of the site with a one-time donation of any amount? Your donation entitles you to a ton of additional benefits, including access to exclusive discounts and downloads, the ability to enter monthly free software drawings, and a single non-expiring license key for all of our programs.


You must sign up here before you can post and access some areas of the site. Registration is totally free and confidential.
 
Your Support Funds this Site: View the Supporter Yearbook.
   
   Forum Home   Thread Marks Chat! Downloads Search Login Register  
Pages: [1]   Go Down
  Reply  |  New Topic  |  Print  
Author Topic: Seeking Programming Language To Learn  (Read 5667 times)
raybeere
Supporting Member
**
Posts: 94


see users location on a map View Profile Read user's biography. Give some DonationCredits to this forum member
« on: January 06, 2009, 02:25:37 PM »

I'm pretty new here, and while I've found I can figure out what is wrong with my computer before tech support does (not that that's such a feat...  Wink ) and have written some pretty complex macros for WordPerfect, DOS batch files, and batch routines for something called Norton Batch Runner (acquired in 1993 with my first computer) most of you have probably never heard of, I have never quite taken the next step and learned a programming language. I bought a kit at one point, think it was Visual C++, but found that language - or perhaps the explanations - difficult to handle. I'm a writer; my brain's OS is hard-wired to English by this point, which means I have to find a language which works in ways I can manage.

I've got a lot on my plate right now, so I'm just mulling things over, but I'm trying to figure out the best programming language to learn, for my own style of learning. In case this helps, I picked up WordPerfect's macro language(s) - version 5.2 through 12 - easily enough. When for a short time I was stuck with MS Word, and tried to figure out the macro language it used, I might as well have been trying to read Sanskrit. Of course, I've never found MS products, "help" instructions, or anything else particularly helpful. It all, to me, seems oriented, more and more, towards "you're just a poor stupid user; why don't you lie back and let Bill decide what's best for you?" - and Bill's opinion seldom if ever suits me.* So I don't know how much was the "help" (You don't really want to do this, it's too complicated, so we tell you as little as we can, ha!) and how much the macro language.

I would like to use something I can write stuff with for my own machine - Windows XP - without too much fuss, and for Linux and a Web environment without too much fiddling. I suppose Java sounds like the obvious choice, except my machine always runs slowly when running Java apps, so I'd rather find something else. I've heard good things about Ruby, but I don't know enough to be sure if it is what I want. I did find one little free "toy" I downloaded that was supposed to teach the basics of Ruby - it was called Hackety-Hack and it seemed to be broken. From what I could see, Ruby did look like a language I might be able to get my head around. But how well will it suit me in other ways?

I'd really appreciate any thoughts on this, so I can take some time and think them over. Thanks.

* I know there are software "holy wars" on many sites, and I'm not out to start one. This is purely my own opinion, offered so you can judge how my mind and preferences work. If you're happy with Windows, that's fine with me, as long as you don't expect me to be...
Logged
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #1 on: January 06, 2009, 03:05:33 PM »

IMHO the documentation for Office macroing (using VBA, Visual Basic for Applications) isn't all that bad - the BASIC language is pretty simple (and while I'm no fan of it, it's adequate for office-style scripting) and it didn't take me long to get some useful stuff going (I've coded a lot previously, but pretty much nothing in BASIC, and definitely nothing for Office). There's only two things that annoyed me a bit:
1) using plural 's' to denote between a single object, and a collection of objects. Yes, this is how it works in English, but a single character can be hard to spot; suffixing "List" or "Coll" (as in collection) would be better.
2) because of the dynamic/variant nature of objects in VB, it can be hard getting the proper context-sensitive help.

If JAVA is too slow for you, you can pretty much rule out Ruby... it's relatively heavy, and doesn't have just-in-time machine-code translation like JAVA does, but is (for now, anyway) run entirely interpreted.

Perhaps you should take a look at Python - it's relatively simple and straightforward, isn't terribly slow smiley, et cetera.
Logged

- carpe noctem
plor
Supporting Member
**
Posts: 1


View Profile Give some DonationCredits to this forum member
« Reply #2 on: January 06, 2009, 03:17:47 PM »

I would recommend Java as a good language to start out on.  It has good tutorials and will get you thinking about lots of good programming things.  Java is object-oriented, which is a paradigm that should be learned eventually I think.  There is somewhat of a learning curve, so if you want something else I would perhaps suggest perl.  There are many people who will tell you that perl is old and dying, but the fact is that people still use it all the time.  It is similar in many ways to python, but I think it has more soul.

Another thing you might enjoy about perl is it is a natural programming language, meaning that code translates easily to English.  It may work better with your brain because of this.
Logged
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #3 on: January 06, 2009, 03:31:30 PM »

Problem with Perl is that... it's so darn easy writing really ugly gibberish that nobody (including yourself, a couple of weeks later) can read smiley - at least that's slightly harder with Python.

JAVA isn't all that bad as an introduction to programming (and heck, it can be used for real-world stuff), and IDEs like eclipse are really nice. But the OP did mention that he tried C++ and didn't grok it, and JAVA is pretty similar to C++. *shrug*
Logged

- carpe noctem
app103
That scary taskbar girl
Global Moderator
*****
Posts: 5,222



see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #4 on: January 06, 2009, 04:30:50 PM »

Why not Object Pascal?

Pascal was created for teaching programming and it's easy to learn.

And I am not referring to the old Borland Turbo Pascal, and not even Delphi, necessarily. There are other options that are cross-platform and not a Borland/Codegear/Embarcadero product.

Unlike Perl, which looks like it was created by a space alien to me, Object Pascal looks a lot more like English. That's one of the reasons why I like it so much.

Or how about Javascript? While it will work cross-platform in any modern browser, it's not just for browsers. And you wouldn't need anything to get started other than a browser, text editor, and a good tutorial. You already have 2 of those and are just missing the tutorial.

If you plan on writing for yourself, you have a lot more choices, but if you want to distribute your applications for desktop use, you are a bit more limited, or I should say that it's a little more complicated for the average end user with some languages like Perl, Python, Ruby, etc., and most average people wouldn't bother doing what they would have to do to run your apps.

They would all require the end user to have it installed on their PC, and If they are running Windows, they are going to have to go download whatever you wrote it in and install it before they can even think about running your application.

If you plan on running it on a web server and letting users access it through their browser, that would be different, though.
Logged

CWuestefeld
Supporting Member
**
Posts: 933



see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #5 on: January 06, 2009, 04:59:03 PM »

This has been discussed around here a time or two, but every time, people find a slightly different way to ask the question, leading to slightly different answers.

One thing you emphasized is that you'd like to be able to read a program more like real English. There's actually a technical term for this: "fluent interface". Most modern Object-Oriented languages enable this to varying degrees: Java, C#, python, ruby, etc. I believe that Ruby goes the farthest in this direction, but the same attributes that give it this advantage also allow it to become quite cryptic if you're not careful. My opinion (which I'll get flack for) is that Java is getting quite long-in-the-tooth, and not quite able to carry innovation into the 21st Century with the foundation it's built on.

So my suggestions would be either C# or python. Both of these languages are at the cutting edge of development, giving you access to the most recent improvements in development technologies. You can get free development environments for either of these. I believe that C# probably has a more mature development community in which you can find books and other documentation, examples, and so forth. But python, being a dynamic language, probably gets you closer to the fluent interface.

Another consideration should be the state of libraries that are available for a given language/platform. There's no point in re-inventing the wheel; you can build your applications much faster if you're able to leverage work that other people have done already. Both C# and python excel in this respect. You can find numerous web sites for each that specialize in the sharing of libraries for most any application you can name.
Logged



Edvard
Coding Snacks Author
Charter Honorary Member
***
Posts: 2,561



View Profile Give some DonationCredits to this forum member
« Reply #6 on: January 06, 2009, 05:07:44 PM »

If you're concerned about comprehending the language, I'd recommend either of these two:

-Autohotkey
If you hang around here for any length of time, you'll find out why. It has evolved from a macro/script utility to an almost full-blown interpreted language. Poke around the help file, download a few of Skrommel's toys to inspect and you'll soon have quite the folderful of nifty things, I guarantee.
-Ruby
While not as popular or as well-documented as Python, the two languages have similar modus operandi and is the most "english-like" you're going to get. Add on that it's useful for making nifty web stuff, cross-platform, fully object-oriented, dynamically typed and a bunch of other adjectives I don't fully comprehend.

Have fun!

EDIT: Dang! CW mentioned Ruby before me... Oh well, I have links!  Grin
« Last Edit: January 06, 2009, 05:13:20 PM by Edvard » Logged

All children left unattended will be given a mocha and a puppy.
mrainey
Charter Member
***
Posts: 433


see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #7 on: January 06, 2009, 08:53:08 PM »

Here's a code sample for Creative BASIC, the little brother of my language of choice, Emergence BASIC.  The syntax of Emergence is virtually identical.


' Demonstrating how easy it is to create a window in Creative Basic
' also includes a Text Box control to display some text ..
def w:window
def wstyle:int
def a$,newline:string

wstyle = @SIZE|@MINBOX
newline = chr$(10)
window w,0,0,600,400,wstyle,0,"Creative Basic",main
setwindowcolor w,rgb(0,0,40)
centerwindow w

control w,"T,,100,30,400,300,@cteditcenter,1"
setcontrolcolor w,1,rgb(55,255,160),rgb(0,0,50)
rect w,99,29,402,302,rgb(0,150,150)

a$ = string$(3,newline) + "A Simple" + newline + "Creative Window"
setfont w,"Arial", 20, 700, @SFITALIC,1

setcontroltext w,1,a$

waituntil w = 0
END

SUB main
select @CLASS
   case @IDCLOSEWINDOW
      closewindow w
endselect
RETURN


Creative lets you work with an interpreter to get the programming done, then generate a standalone exe for using and distributing the program.  The executable won't be as small or as fast as one created with Emergence, which is a true compiler.

I don't think Emergence BASIC would tie your hands in terms of its capabilities.  You can do some serious work with it.


http://www.ionicwind.com

Logged

Software For Metalworking
http://closetolerancesoftware.com
raybeere
Supporting Member
**
Posts: 94


see users location on a map View Profile Read user's biography. Give some DonationCredits to this forum member
« Reply #8 on: January 06, 2009, 09:02:23 PM »

Thanks, everyone. You've given me a lot of good points to consider. I'd completely overlooked the point about libraries *duh!* which is certainly something I'd want to consider. I don't think I'm ready to reinvent the wheel.

AutoHotKey does look interesting; a lot of the tools created with it look even more so. But the "almost" makes me suspect I'll want to do something it won't allow me to soon enough. I've had that problem with macros and batch files; I even had it back when I was using Norton Batch Runner. You can go pretty far, if you get creative, but there is a point you just can't get past. Or at least I've never been able to.

Beyond that, I'm going to do a little poking around all the suggestions so I can see what looks like my best option. Since I'm interested more than anything in making a few things just the way I want them, the average user doesn't concern me much. I'll make stuff I want to use, release it free (maybe donationware, here on DC, but I wouldn't count on getting much if anything from it) and if anyone wants it bad enough, they can always install what they'd need to run it. I know I would, if I found something I wanted to run badly enough. As it is, I find the things people make because they want to are a lot better than the stuff driven by market research...

My real concern is taking the time to make the right choice for me; I don't want to get pretty familiar with this or that language, then figure out I really wish I'd chosen another one. That sort of thing drives me nuts. Of course, having said that, Murphy's Amendment provides that someone, somewhere, will now begin developing a completely new programming language, tailored especially for me, with the first release timed to occur on the same day I finally figure I've learned whichever language I finally choose.  Grin
Logged
Target
Honorary Member
**
Posts: 1,407



see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #9 on: January 06, 2009, 09:31:46 PM »

since you're already here, you might like to look at the DC programming school

you have the opportunity to attempt a series of challenges in a range of languages - you might find something that appeals this way without having to invest on the off chance that your purchase is going to work for you

with respect to the potential limitations of your chosen language I suspect that this is likely to be an issue regardless of your choice (eventually...).  Pick a likely candidate and see where it takes you - you might be surprised.  If it doesn't work out, just remember what you've learned along the way (it's better to make a start and work it out as you go than it is to worry about how it might end if you do start)
Logged

"Look wise, say nothing, and grunt. Speech was given to conceal thought" - Sir William Osler
Edvard
Coding Snacks Author
Charter Honorary Member
***
Posts: 2,561



View Profile Give some DonationCredits to this forum member
« Reply #10 on: January 07, 2009, 10:22:23 AM »

AutoHotKey does look interesting; a lot of the tools created with it look even more so. But the "almost" makes me suspect I'll want to do something it won't allow me to soon enough. I've had that problem with macros and batch files; I even had it back when I was using Norton Batch Runner. You can go pretty far, if you get creative, but there is a point you just can't get past. Or at least I've never been able to.

I totally understand and concur; ANY interpreted or script language will have that wall to hurdle, but don't let that stop you. AHK can do amazing things far beyond what batch scripts can do without a whole lot of effort, so it's very much worth having in your "bag of tricks".
I've often wondered how much real code actually goes into all those one-line commands, so I bet a fun exercise would be to pick a language to learn and then learn how to implement some of AHK's tricks with it.
Logged

All children left unattended will be given a mocha and a puppy.
raybeere
Supporting Member
**
Posts: 94


see users location on a map View Profile Read user's biography. Give some DonationCredits to this forum member
« Reply #11 on: January 07, 2009, 07:17:20 PM »

with respect to the potential limitations of your chosen language I suspect that this is likely to be an issue regardless of your choice (eventually...).  Pick a likely candidate and see where it takes you - you might be surprised.  If it doesn't work out, just remember what you've learned along the way (it's better to make a start and work it out as you go than it is to worry about how it might end if you do start)

This advice has a lot of sense to it - which is why I had to stop and work out why it didn't feel right. I'm afraid I've done something I do all too often. embarassed Only after I begin take the first step, and think things through, do I understand what is motivating me under the surface. Yes, there are a lot of neat little custom tools I'd like to put together - but that isn't what is really motivating me to learn to program. I want to create the ultimate Writer's Workshop.

Yes, I know that's foolish, on so many levels. I already own one of the very few programs I've paid for and never regretted it, specifically designed for writers. When I think of what I'd like to wind up with, the basics are a lot like the title I use now. Heck, I got free upgrades for life, and the best support I've ever hoped for - better than anything else I've ever heard rumours of. And, if one of the experienced coders here mentioned taking on a project as huge as what I have in mind, you'd all tell them they were nuts. With good reason.

I know all that, and I still want to do it. The improvements I'd make would take a really good way to work and make it the only way to work. They're things no one else would come up with. I've got an idea for a program that is nothing at all, in total, like any other program I've ever heard of. The program I use now is a Mercedes - but I want to write one that's a Bugatti. So I've got to figure out the best language for what I want to do. (Yes, I do know it won't be my first project. I may be crazy, but I'm not completely stupid. But I do want to move in that direction as much as I can, and not meander all over the place first.)
Logged
wreckedcarzz
Charter Member
***
Posts: 1,620



Happy wolfie ^_^

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #12 on: January 08, 2009, 01:06:35 AM »

I started making little scripts in AutoHotkey and worked my way up to complex AHK programs and now do stuff in Visual Basic .NET, going for C# (did Java in school... ugh... no comment) - AHK is a great starting language IMO, and the help files and online documentation are just awesome. You can do a ton of things easily in AHK that are difficult in other languages, too (sending keystrokes to apps/control of the computer, plus the logical syntax allows for simple ways of doing complex things). Only downside is the way the AHK script files are converted to EXEs sometimes triggers virus false alarms undecided ... stupid AV companies.

Start small, work your way up. Once you have a basis, you can always fall back. Keep going, and once you get into it, it is so enjoyable... smiley
Logged

New website! With a fancy domain name and everything! *gasp*
http://www.wreckedcarzz.com/
MilesAhead
Member
**
Posts: 4,865



View Profile WWW Give some DonationCredits to this forum member
« Reply #13 on: January 22, 2009, 07:42:34 PM »

@raybeere if you really want to create a large project like a Writer's Workshop you might want to check out programming tools that make it easy to use 3rd party components.  Writing just a plain text editor is very involved.  But if you start with an open source editor component you may find you just need to add the tweaks you want.

I've messed around with a lot of different interpreters and compilers.  One that has served me well for general purpose GUI type programming on Windows is Delphi 5 Professional.  For making Windows Shell extensions, like if you right click on something in Explorer and launch it from that menu, those type of programs, it's tough to beat Visual C++ 6.  For small utilities on Windows AutoIt3 and AutoHotKey are good.

The natural language feel of Pascal is a good point.  If you read books on algorithms it seems like the ones with examples in Pascal are easiest to grasp.

If you look around you can find free basic, assembler, pascal and scripting languages for Windows.  For maximum portability and getting close to the metal it's hard to beat the old standard C.  But I think it's best to grasp programming conceptually first.  That's why I think it wiser to start with something like Pascal rather than something like Perl.

Once you mess around with a few programming languages you see they are all either interpreters or compilers under the covers and do similar things.  Object Oriented and other abstractions have power but I think it's a good idea to do at least one language that's close to the machine.  The code actually has to run on something and you won't appreciate the limitations if everything is a virtual machine.  I started with GWBasic with the line numbers and the whole bit.  But it was easy to learn.  After that it was Turbo Pascal, assember and C.

You may want to check out the library for "Algorithms" by Robert Sedgewick. I'd recommend the one with Pascal implementations.

Also "Algorithms + Data Structures = Programs" by Niklaus Wirth
who invented Pascal.  It was written before Object Oriented Programming, but back then the rage was "Structured Programming" which is like the precursor to OOP.  Still a very valuable book.

I didn't take Computer Science classes so I used the "Spider Web" approach.  If I read an article that was very good and the author mentioned a programming text, I'd check it out.  That's how I heard of authors that are standard in computer science classes like Knuth and Sedgewick.

Follow what you enjoy.  I never used Perl or Smalltalk much because the syntax put me off, but I'm glad I read books about them and messed around with them a little because it increased my understanding of programming languages that I like to use. smiley


Logged

"Genius is not knowing you can't do it that way."
- MilesAhead
raybeere
Supporting Member
**
Posts: 94


see users location on a map View Profile Read user's biography. Give some DonationCredits to this forum member
« Reply #14 on: January 22, 2009, 09:31:44 PM »

Thanks for the info. You've given me a lot to think about. smiley I've already noticed most of what's out there seems pretty similar, and I suspect you're right about getting closer to the machine - but I'm not ready for that step yet. cheesy I want to at least feel comfortable with the idea I can create a program, however limited, before I go that far from shore.

The books you mentioned sound useful; I'll have to check them out. I guess everything looks easier, until you actually settle down to learn how to do it. embarassed
Logged
MilesAhead
Member
**
Posts: 4,865



View Profile WWW Give some DonationCredits to this forum member
« Reply #15 on: January 23, 2009, 12:24:35 AM »

Have fun with it.  I have some utilities that I've been working on over years but one of my favorite programs is a little gizmo that I coded in AutoIt3 in a very short time.  It's just a little dialog box with 2 radio buttons for selecting the optical drive, and buttons to open and close the tray.  Really simple, but I like using it. smiley
Logged

"Genius is not knowing you can't do it that way."
- MilesAhead
kyrathaba
N.A.N.Y. Organizer
Honorary Member
**
Posts: 3,010



while(! dead_horse){beat}

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #16 on: January 25, 2009, 03:48:52 PM »

If you are looking to get up and running quickly, you can download and install a free IDE for C# from Microsoft.  And I have several flash tutorials at my little corner of DC that will help get you started learning C#.  The C# language takes many of the best innovations of Java and C++.  In my opinion, C# has a somewhat easier learning curve than Java, and a lot less steep than C++.
Logged

Win 7 Home Premium 64bit-SP1 AMD Athlon II X2 220 Socket AM3 (938) @ 2.1GHz 6GB RAM Firefox 26.0
_________________________________________________________________________________________

I'm fighting against patent trolls. Join me and tell your representative to support the #SHIELDAct: https://eff.org/r.b6JJ /via @EFF

My DC page: http://kyrathaba.dcmembers.com | My blog: http://williambryanmiller.com/ | Proofreading Service: http://bit.ly/1fQSqQP

Pages: [1]   Go Up
  Reply  |  New Topic  |  Print  
 
Jump to:  
   Forum Home   Thread Marks Chat! Downloads Search Login Register  

DonationCoder.com | About Us
DonationCoder.com Forum | Powered by SMF
[ Page time: 0.059s | Server load: 0.72 ]