Pages: [1]
|
|
|
Author
|
Topic: Quest for the ultimate programming language (Read 7080 times)
|
daddyo
Zebranky food
Offline
Posts: 22
|
I've looked on and off for years for a modern programming language that is:
- relatively simple meaning doesn't require having to constantly reference help files on zillions of available functions
- runs on at least PC/Mac possibly Linux platforms
- high level similar to Java/.net but simplified so it doesn't have to do everything for everybody, just the basics with only the essential object oriented capabilities
- natural language
- stable
- fast
- intrinsically has graphics/sound/input/output functions without having to declare libraries or external functions
- not riding atop another compiler
- integrated development environment that doesn't requiring piecing together with compilers, debuggers, etc.
- drag n drop GUI maker within IDE
I personally think C/C++ is too low level for writing applications and best used for embedded and only the absolutely highest performance games. Way too much time/expertise is required to do that stuff, and just seems so unnecessary. All the .net / Java stuff is far overly burdened with capabilities that it's just a mess to me reading other peoples code and getting started in programming especially for simple hobbyists. I've gone so far as reverting to a fun and simple language like http://smallbasic.com/ which will actually handle this game on a modern PC (I very roughly benchmarked it), although it's terribly slow and really needs a few more features.
Anyone else been on this endless search? I'll find something really close to this but it will be so underdeveloped/buggy/unsupported that it isn't worthwhile. But I'll even pay for it.
|
|
« Last Edit: January 12, 2013, 08:18:55 am by daddyo »
|
Logged
|
|
|
|
onpon4
Enlightened
Offline
Gender:
Posts: 709
Sharing is good.
|
There is no such thing as the "ultimate" programming language. Any given language is better at certain tasks than other languages (except esoteric languages, like Whitespace, which were made as a joke).
- relatively simple meaning doesn't require having to constantly reference help files on zillions of available functions
Well, this depends entirely on your memory and whether or not you're using an IDE. But if it's really easy to remember because it's "simple", it's probably much too difficult to use for any high-level tasks.
- runs on at least PC/Mac possibly Linux platforms
You really should be using a language that is an open specification and can be used without nonfree software. That means if the language is compiled, there needs to be a free, working compiler, and if the language is interpreted, there needs to be a free, working interpreter. As an example, Java once didn't fit this category; to run Java programs, you once needed to use Sun's nonfree interpreter. OpenJDK and IcedTea mean this is no longer the case.
To fit this description, the language needs to also work on free operating systems, like GNU/Linux or OpenBSD. Preferably, though, it should be completely portable, which means working on all major platforms today (Windows, Mac OS X, GNU/Linux, BSD). Whether or not it can work on multiple architectures should also be considered (i.e. there's nothing wrong with assembly languages, but if you don't really need the performance enhancement from using native code, you should consider using C so you don't need to completely rewrite an x86 program to work on ARM or MIPS).
Anyway, most widely-used languages I'm aware of fit this description. One language that's fine, but that you need to be careful with, is C# (I don't know the details). I do know of one "language" (actually a game engine) that is extremely terrible in this regard, and that's Game Maker.
EDIT: Don't use Adobe Flash, please. It is impossible to use Flash programs without proprietary software (the Adobe Flash plugin).
- high level similar to Java/.net but simplified so it doesn't have to do everything for everybody, just the basics with only the essential object oriented capabilities
So, a language with an extremely limited standard library that's high level? I'm not aware of any. Even C++ has a pretty big standard library if I'm not mistaken. You could try Python, though.
This is either an extremely vague desire or something impossible (a programming language extremely similar to a language like English).
Although this is not always true, higher level languages are often slower than lower level languages. If you want a fast high-level language, you probably want something with a good JIT compiler, like PyPy.
- intrinsically has graphics/sound/input/output functions without having to declare libraries or external functions
The only language I'm aware of that has that as part of its standard library is Java (I think). Previously, though, you said something about a "simple" language, and including complex functionality like drawing is not simple.
- not riding atop another compiler
I'm not sure what you mean here.
- integrated development environment that doesn't requiring piecing together with compilers, debuggers, etc.
I'm not sure what you mean here. Are you opposed to modularity? I disagree with you if that's your stance.
- drag n drop GUI maker within IDE
There's plenty of GUIs for Python's various GUI libraries (wxPython, pyGTK, pyQt, etc). I'm most familiar with wxPython, where I'm not aware of any that use drag and drop (this method doesn't make sense; you're supposed to use something called spacers rather than absolute positioning, to allow the library to place everything so it looks good under any OS), but one IDE for wxPython is wxGlade.
Anyone else been on this endless search? I'll find something really close to this but it will be so underdeveloped/buggy/unsupported that it isn't worthwhile. But I'll even pay for it.
No, because you won't get anywhere with it. Learn to use the languages available. There's tons of them to choose from, and all of them are suited to different tasks.
Personally, I recommend Python.
|
|
« Last Edit: January 12, 2013, 03:01:50 pm by onpon4 »
|
Logged
|
|
|
|
daddyo
Zebranky food
Offline
Posts: 22
|
Here's a couple examples, might notice I like 90's Visual Basic: http://en.wikipedia.org/wiki/Gambas http://www.realsoftware.com
Some of the guys at work like Python, I might take another look at it.
I really don't like any of the languages I've had to work with that was open standard, they look like they tried to meet everybodies needs, conform to all sorts of programming ideals, and do an overburdeoned job of it. I initially enjoyed Java and even studied a huge book on it, but when it came to looking at real applications it got ugly as heck, just like anything .net. I've been programming in multiple languages over many decades and was never happier with VB 6 for what I like to do as a hobby or any Windows programming.
|
|
|
Logged
|
|
|
|
Anthony
*Smell* controller
Offline
Gender:
Posts: 358
Star Control Lives!
|
Anyone else been on this endless search? I'll find something really close to this but it will be so underdeveloped/buggy/unsupported that it isn't worthwhile. But I'll even pay for it.
Oh yes! I have experience with Java, C#, PHP, Perl and VB. Keep in mind, I'm no professional.
To be honest, I have always had issues with C/C++, especially when using headers other than STDIO.h, Math.h. I heard lots of good things about Eclipse, but there are alternative IDEs that have given me better experiences.
I really like Visual Studio and its ability to create Forms and debug. I use PHP when creating dynamic web pages. For PHP, I normally use an IDE called PHPed (commercial).
I think education and workplace politics really shape what programming languages people learn. It makes interviews more stressful because employers want specific skill sets, and there are so many qualified people out there who may not have it directly, but have transferable skills that can be used to achieve the employer's goals, which Employers ignore. For example, if one can learn Java, one can also learn C# or Ruby. Then there's extra certifications that make things even more complicated.
There really is no "ultimate" language. What people learn really depends on market demand and what people learn in school. People can be self-taught. Languages are continuing to evolve. If people want to be a programmer as a career, it's really a risky business.
|
|
|
Logged
|
|
|
|
Death 999
Global Moderator
Enlightened
Offline
Gender:
Posts: 3874
We did. You did. Yes we can. No.
|
The first one kills its being an ultimate language right away. Without zillions of functions, you don't have shortcuts to lots and lots of stuff.
What you CAN do is make it easier or harder to deal with having zillions of functions.
Java does a pretty good job of that, which is one of the reasons it's so popular. Some parts are better at it than others.
|
|
|
Logged
|
|
|
|
onpon4
Enlightened
Offline
Gender:
Posts: 709
Sharing is good.
|
I really don't like any of the languages I've had to work with that was open standard, they look like they tried to meet everybodies needs, conform to all sorts of programming ideals, and do an overburdeoned job of it.
I don't know why you would make that association to languages that have an open standard and free implementation. Like I said, as far as I'm aware, just about every major language fits that category. I'm not sure exactly of the reason for this (I suspect it's because languages that are not open standards create an unnecessary hassle, and selling a programming language isn't an exactly popular business), but it's still pretty much the case for general purpose programming languages. Avoiding languages because they have open standards would be silly and destructive.
But somehow, I'm getting the impression that you don't want a general purpose programming language like C, C++, Java, or Python. You sound like you want a language specifically targeted toward writing programs based on GUIs. I'm not aware of any other than Visual Basic, and I wouldn't suggest that because (as far as I'm aware) programs written in VB only work on Windows.
If you don't like Java, try Python, and see these pages:
http://wiki.python.org/moin/GuiProgramming http://wiki.python.org/moin/GUI%20Programming%20in%20Python
|
|
|
Logged
|
|
|
|
CelticMinstrel
Enlightened
Offline
Posts: 522
|
relatively simple meaning doesn't require having to constantly reference help files on zillions of available functions
I don't think you're ever going to get this. The best you can probably hope for is an IDE which makes it unnecessary for you to remember all of them.
runs on at least PC/Mac possibly Linux platforms
As far as I know, most languages satisfy this. There are obviously a few that don't (various flavours of BASIC are probably examples).
high level similar to Java/.net but simplified so it doesn't have to do everything for everybody, just the basics with only the essential object oriented capabilities
Simplified how? What do you consider the basics?
natural language
The only languages I know of with anything close to natural language syntax are Inform7 and AppleScript, neither of which are likely to satisfy you; the former is very specifically geared towards creating text-based adventure games, while the latter is Mac-only.
intrinsically has graphics/sound/input/output functions without having to declare libraries or external functions
This is pretty rare. Logo certainly qualifies, but... it's probably not what you want. Java and Python both include GUIs in their standard library (Java has AWT and Swing, Python has Tk). I dunno about other languages that have GUIs in the standard library, but most languages built on the Java virtual machine can also use Swing (for example, Groovy or Scala).
not riding atop another compiler
What do you mean by this? Do you want a language that doesn't require a separate compilation step? That is, an interpreted language?
integrated development environment that doesn't requiring piecing together with compilers, debuggers, etc.
I think Eclipse might satisfy this, provided you can find a language that there is a good Eclipse plugin for.
drag n drop GUI maker within IDE
I don't know whether this exists...
You really should be using a language that is an open specification and can be used without nonfree software. That means if the language is compiled, there needs to be a free, working compiler, and if the language is interpreted, there needs to be a free, working interpreter. As an example, Java once didn't fit this category; to run Java programs, you once needed to use Sun's nonfree interpreter. OpenJDK and IcedTea mean this is no longer the case. To fit this description, the language needs to also work on free operating systems, like GNU/Linux or OpenBSD. Preferably, though, it should be completely portable, which means working on all major platforms today (Windows, Mac OS X, GNU/Linux, BSD). Whether or not it can work on multiple architectures should also be considered (i.e. there's nothing wrong with assembly languages, but if you don't really need the performance enhancement from using native code, you should consider using C so you don't need to completely rewrite an x86 program to work on ARM or MIPS). Anyway, most widely-used languages I'm aware of fit this description. One language that's fine, but that you need to be careful with, is C# (I don't know the details). I do know of one "language" (actually a game engine) that is extremely terrible in this regard, and that's Game Maker. EDIT: Don't use Adobe Flash, please. It is impossible to use Flash programs without proprietary software (the Adobe Flash plugin). Umm... why are you trying to push your views of free software on him when his initial post makes it quite clear that he disagrees?
To be fair, using an open specification would help with his requirement of portability. However, it's far from required. Furthermore, Flash actually satisfies his requirement of portability quite well, along with several of his other requirements, so why are you so insistent on not using that? It'll run on all three platforms, it's a high level language like Java but simpler, and unless I'm mistaken it allows the creation of graphics right in the IDE.
This is either an extremely vague desire or something impossible (a programming language extremely similar to a language like English).
It is not, strictly speaking, impossible to do. It's impossible to make a compiler that interprets English directly, but it is possible to make a programming language whose syntax is very much like English. AppleScript and Inform7 both do this, in fact. However, I don't know of any general-purpose and cross-platform languages that try to mimick English.
The only language I'm aware of that has that as part of its standard library is Java (I think). Previously, though, you said something about a "simple" language, and including complex functionality like drawing is not simple.
I dunno about that. Turtle graphics seem pretty simple to me. Perhaps it's just because Logo was my first real programming language (or at least nearly the first). Drawing can get pretty complex, but it can also be kept fairly simple.
Personally, I recommend Python.
I can second this. I don't think it satisfies all the requirements listed in the first post, but it does satisfy several of them. It's high level like Java, but somewhat simpler. It's cross-platform. It's not really natural language syntax, but I suppose you might argue it comes a bit closer to that requirement than Java or other C-syntax languages (C, C++, Obj-C, JavaScript, C#, etc). It does not have intrinsic graphics or sound functions. There is a GUI library in the standard library, but to the best of my knowledge there are no image or sound libraries. If you use it with Eclipse and the PyDev plugin, you can debug right in the IDE (at least I'm fairly sure you can; I don't debug very often in Eclipse so I'm not quite sure how well it works).
I really don't like any of the languages I've had to work with that was open standard, they look like they tried to meet everybodies needs, conform to all sorts of programming ideals, and do an overburdeoned job of it.
Personally, I don't really feel many of the languages I've tried do this. PHP definitely does, and Perl might, but I don't think Python does (for example).
I initially enjoyed Java and even studied a huge book on it, but when it came to looking at real applications it got ugly as heck,
I can certainly agree on the ugliness of Java sometimes.
I don't know a whole lot about Ruby, but it might also be worth a try. At least, I think I've heard good things about it.
Avoiding languages because they have open standards would be silly and destructive.
I don't think he was saying that he did this. I think he was just saying there was a correlation between "open standard language" and "language he doesn't really like much".
|
|
|
Logged
|
|
|
|
onpon4
Enlightened
Offline
Gender:
Posts: 709
Sharing is good.
|
drag n drop GUI maker within IDE
I don't know whether this exists... I'm pretty sure he was talking about something like the IDE Visual Basic has.
Umm... why are you trying to push your views of free software on him when his initial post makes it quite clear that he disagrees?
Well, a few of reasons:
First, it's extremely rare, as far as I can tell, for a language specification to not be open, so there are plenty to choose from.
Second, even if you don't care about freedom, dependence on a corporation or even a person for programs you develop to continue working is not a fun situation to be in. If they go out of business or otherwise stop developing the language, your programs will continue to work for a while, but completely outside of your control, they will eventually break because of an OS upgrade due to a lack of a working compiler or interpreter. How much of a problem this is might very, but it's still a situation that you should aim to avoid.
Third, like you mentioned, it ties into portability. If the specification is open, then it is (at least in theory) completely portable, since anyone can write a compiler or interpreter for any platform.
Underneath, there is of course also my opposition to nonfree software. It's mostly a passive thought, though, because if you don't care much for software freedom, chances are, any software you develop is going to be nonfree. My thought process is something like: "If he uses a language he has no control over, not only are users of his program screwed, but he is screwed as well." A secondary thought is: "If he gets used to a language he has no control over and later decides to develop a free program, he may use that language, thus making his otherwise good contribution useless."
The main thing that makes me state upfront that you shouldn't use languages you don't control, however, is that such languages getting too popular is an indirect obstruction to me as a developer who loves freedom. I am currently feeling this problem with Game Maker's popularity; Game Maker offers such a huge convenience to developers of small 2D games that it becomes difficult to compete with them at any reasonable level. You simply cannot develop a well-polished game in C++ or even a high-level language like Python at the rate that you can in Game Maker. The result of this is there are even "open source" contributions for Game Maker that make it even easier to use, and even a dedicated "open source" section in the Game Maker forums where people announce games. If these people were developing their "open source" contributions with something else, like SDL or Pygame, they would be contributions to free software, but since they are done with Game Maker, they simply provide an advantage to nonfree software (both Game Maker and any nonfree games developed with it) over free software.
So, in short: my motivation for bringing it up is partly selfishness, partly friendly concern, and partly activism. However, I think it's in everyone's best interests, not just free software and open source supporters, to avoid developing programs using things like Game Maker and Flash.
Furthermore, Flash actually satisfies his requirement of portability quite well, along with several of his other requirements, so why are you so insistent on not using that?
Well, this one is less about relevance and more that it's a choice that I think is extremely bad even if it is very practical (though given the talk about GUIs, something I'm pretty sure Flash can't do very well, I don't think this is really the case) since, unless you restrict yourself to Flash 8 and prior, nonfree software (Adobe Flash Player) is needed to run Flash applications.
Another thing about Flash, though this doesn't influence my belief that it should not be used, is that it is becoming irrelevant. I don't think it has a real future mostly because of the ability of Javascript to handle what Flash was previously needed for.
|
|
|
Logged
|
|
|
|
CelticMinstrel
Enlightened
Offline
Posts: 522
|
Okay, fair enough.
Second, even if you don't care about freedom, dependence on a corporation or even a person for programs you develop to continue working is not a fun situation to be in. If they go out of business or otherwise stop developing the language, your programs will continue to work for a while, but completely outside of your control, they will eventually break because of an OS upgrade due to a lack of a working compiler or interpreter. How much of a problem this is might very, but it's still a situation that you should aim to avoid. Well, this part at least I can agree on.
Well, this one is less about relevance and more that it's a choice that I think is extremely bad even if it is very practical (though given the talk about GUIs, something I'm pretty sure Flash can't do very well, I don't think this is really the case) since, unless you restrict yourself to Flash 8 and prior, nonfree software (Adobe Flash Player) is needed to run Flash applications. I thought Adobe Flash Player was free? You need non-free software to create Flash programs, certainly, but... not to run them, as far as I was aware.
...oh, wait, the different definitions of free. Never mind. (I was thinking free as in "no cost" here, but then I suddenly remembered that's not what you meant!)
Another thing about Flash, though this doesn't influence my belief that it should not be used, is that it is becoming irrelevant. I don't think it has a real future mostly because of the ability of Javascript to handle what Flash was previously needed for.
But, this is true, yeah. HTML5+JavaScript can do everything Flash can do, pretty much. Though, it's probably not quite as easy to do it in HTML5. (That's only a guess, since I've never actually used Flash.)
|
|
|
Logged
|
|
|
|
|
Arne
Enlightened
Offline
Gender:
Posts: 520
Yak!
|
I use BlitzMax. It fits some of your criteria. There's a GUI thing which I haven't tried. I made my own Immediate Mode GUI class instead because I like the convenience of just inventing a button right where I need it and then forget it.
|
|
|
Logged
|
|
|
|
metamorphosis
Frungy champion
Offline
Posts: 83
I love YaBB 1G - SP1!
|
I prefer C/C++ myself. Java was alway gross, slow, and though I like Python, I prefer compiled languages to intepreted. C has it's quirks, but you can get away from a lot of them by ignoring convention.
|
|
|
Logged
|
|
|
|
|
Pages: [1]
|
|
|
|
|