Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

What Makes a Powerful Programming Language?

Cliff posted more than 12 years ago | from the blueprints-for-next-generation-computing dept.

Programming 1332

A not-so Anonymous Coward queries: "My company is about to start development on a new project, and I have to decide on a language and development environment. My boss gave me a set of criteria which needs to be filled: intuitive and easy to use IDE; simplified GUI design and event handling; advanced error handling; advanced object oriented design including multiple inheritance, abstract classes, and garbage collection; full support for operator and function overloading; and portable (at compile-time) across various platforms. I have already looked at C++, Java, C++, C#, Eiffel, and even VB.net; I may be missing something but as far as I can tell all of these languages are missing something from this list. Is there a language available that has all of these features? I thought that someone from Slashdot would be able to point me in the right direction?" If you were to design a language from the ground up, what features would you include and why?

cancel ×

1332 comments

Sorry! There are no comments related to the filter you selected.

This really gets my goat (-1)

CmderTaco (533794) | more than 12 years ago | (#2989478)

* g o a t s e x * g o a t s e x * g o a t s e x *
g g
o / \ \ / \ o
a \ a
t `. : t
s` \ s
e \ / / \\\ -- \\ : e
x \ \/ --~~ ~-- \ x
* \ \-~ ~-\ *
g \ \ .--------.___\ g
o \ \// ((> \ o
a \ . C ) ((> / a
t /\ C )/ \ (> / t
s / /\ C) (> / \ s
e ( C__)\___/ // _/ / \ e
x \ \\// (/ x
* \ \) `---- --' *
g \ \ / / g
o / \ o
a / \ \ a
t / / \ t
s / / \/\/ s
e / e
x x
* g o a t s e x * g o a t s e x * g o a t s e x *

Important Stuff: Please try to keep posts on topic. Try to reply to other people comments instead of starting new threads. Read other people's messages before posting your own to avoid simply duplicating what has already been said. Use a clear subject that describes what your message is about. Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) Problems regarding accounts or comment posting should be sent to CowboyNeal.

Re:This really gets my goat (-1)

SweetAndSourJesus (555410) | more than 12 years ago | (#2989649)

Congats on the FP, but why did you waste it with canned text?

The best FP's are hand made, on the fly. You've got ~20 seconds to think of something stupid. Your stupid heart races stupidly. Submit too soon and you've blown it, wait too long and you've blown it. It's an art form.

jesus still loves you, though.

arrriba (-1)

SweetAndSourJesus (555410) | more than 12 years ago | (#2989480)

golden sombrero?

possibly maybe

Why doesn't... (1, Troll)

L-Wave (515413) | more than 12 years ago | (#2989484)

Why doesn't java fit the bill? *blinks*

Re:Why doesn't... (3, Informative)

Gkeeper80 (71079) | more than 12 years ago | (#2989501)

no operator overloading

Re:Why doesn't... (3, Informative)

Scaba (183684) | more than 12 years ago | (#2989512)

No multiple inheritance. No operator overloading.

Re:Why doesn't... (2)

Suppafly (179830) | more than 12 years ago | (#2989576)

you can do both those in java if you know how..

Re:Why doesn't... (1)

hereticmessiah (416132) | more than 12 years ago | (#2989580)

Is that a bad thing? Classes that use multiple inheritence can easily be a pain to maintain.

Re:Why doesn't... (2, Insightful)

sdwr98 (157983) | more than 12 years ago | (#2989592)

Yes, but perhaps one should examine the reasons for wanting operator overloading and multiple inheritance. If this is just so that the project is fully "buzzword-compliant", then perhaps the priority list should be tweaked a little.

I have found that being able to do multiple inheritance often leads to more confusion than help when doing software development.

Re:Why doesn't... (1)

jeffy124 (453342) | more than 12 years ago | (#2989529)

java lacks multiple inheritance and operator overloading

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989530)

because it doesn't have proper overloading, retard.

Re:Why doesn't... (2, Insightful)

ADRA (37398) | more than 12 years ago | (#2989531)

Doesn't support multiple inheritance, only interface polymophism. The GUI isn't as intuitive and straight forward as one would hope, but at least a tool like Jbuilder can reduce this somewhat.

Java or C++ is probably the best fit for the job, especially when portability is a concern.

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989542)

Java doesn't do multiple inheritence.

At least, it didn't two years ago.

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989551)

Java doesn't support operator overloading.

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989558)

No operator overload support maybe?

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989590)

Multiple inheritance. However, lack of MI is a feature, not a bug. Why does your boss think that multiple inheritance should be on the requirements list?

Re:Why doesn't... (2)

NitsujTPU (19263) | more than 12 years ago | (#2989599)

Operator Overloading
Multiple Inheritance

You CAN however code aggressive garbage collection for C++. A quick search over the net should yeild a HEARTY list of garbage collection routines. It just doesn't come built in...

Re:Why not Java? (0)

Anonymous Coward | more than 12 years ago | (#2989606)

In the post, the user specifies multiple inheritance is a requiment the language must have.

In my opinion, multiple inheritance is something to avoid. It adds confusion when attempting to determine which method to execute and (If you're using an interpreted language) can make the method lookup take longer.

I believe Java is a use-able OO language for most projects. There are several derivatives of Smalltalk that are also very functional to develop in.

It would be nice to have information on why each language evaluated didn't fit the bill. That would help us help the person with the question.

Re:Why doesn't... (5, Insightful)

MisterBlister (539957) | more than 12 years ago | (#2989630)

Java lacks support for operator overloading and multiple inheritence (which was on the list above). However, Java's 'lack' of these features is IMO, for the better.

Please note, I do 90% of my professional programming in C++ -- I'm no Java zealot, but I do have issues with the idea that Java is somehow broken because it doesn't support these features.

Java doesn't have multiple inheritence because it doesn't need it. Though there is some debate on the subject, the vast majority of people who have a lot of experience doing OOP will tell you to avoid multiple inheritence at all costs. It exists in C++ because there's no root 'Object' in C++ (not pure OO) and therefore you sometimes need MI to bridge gaps between two different libraries that wouldn't exist if every class derived from a common base class. Multiple inheritence is confusing for the programmer and sometimes even confusing for the compiler (name collisions). Use it only as a last resort. Don't use its existence as a basis for picking your language! That's just ridiculous.

Operator overloading is less clear cut. While I must admit its nice to have matrix or vector (eg, 3d coordinates, not arrays) classes that you can just add using the + operator, operator overloading is so often misused that I'm inclined to think in general its not such a good idea. Of course I don't feel nearly as strongly as this as I do about MI, I could take operator overloading or leave it.

Anyway the real point of my post is to encourage the original person asking to rethink what it is that makes up a powerful OO language -- don't look at the bullet-point features (in short all you did was list what C++ can do; no other language will completely fit the bill), look at the principles behind the language and how well it supports OO concepts in their generalized form!

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989638)

Java doesn't support Operator overloading and
you don't have "Real" multipule inheritance in Java (you can implement several interfaces but can't derive from several base classes).

But anyways, I think that there is no answer to this Question. the better solution is intergration of several programing langauges.
use the advantages of one where the others fail.

a warrior never preferres one weapon over the other. he uses all of them with the same fierce.

Re:Why doesn't... (0)

Anonymous Coward | more than 12 years ago | (#2989651)

"...advanced object oriented design including multiple inheritance..."

You obviously didn't read the spec. Here's at least one of the requirements Java didn't meet. ;-)

Obviously there is the argument of not using MI and perhaps using interfaces to achieve an equivalent solution.

A "perfect" language would certainly not be any of the C-family (C, C++, Java, C#), although personally I am a fan. We perhaps need a new very high-level language that the junior programmers can use to knock up the 90% of dross code (e.g. screens onto database...).

Python (5, Insightful)

javaaddikt (385701) | more than 12 years ago | (#2989489)

of course. All of the above, and rapid development. And you'll actually be able to maintain your code base 1 year from now.

VB (0)

Anonymous Coward | more than 12 years ago | (#2989490)

I'll take VB over C++ anyday

Re:VB (0)

Anonymous Coward | more than 12 years ago | (#2989503)

That's why you make $15 an hour and live in a trailer on the east side of the interstate, and I average $450 per hour and own three Ferraris.

Re:VB (0)

Anonymous Coward | more than 12 years ago | (#2989561)

and I average $450 per hour and own three Ferraris

Yet you still post as any anonymous COWARD.

Your comment has too few characters per line (currently 9.5).

HaHa! - Klerck, they are trying to censor you again!

What, aagin! god slashcode sucks! I am typing this to get around one of slashcodes lameness filters. Go fuck a monkey CMDR taco....dftbf fggfr hgrtdfrt hg fgerrt fdrt fd te dfrere fdrt df tr fg yts er ef

Re:VB (0)

Anonymous Coward | more than 12 years ago | (#2989547)

Your an idiot, vb sucks

I wouldn't do it (1, Insightful)

GuyZero (303599) | more than 12 years ago | (#2989491)

If I were to design a language from the ground up, I wouldn't do it.

The whole idea is to use something standard so that it's simple to bring new people up to speed and apply techniques that other developers have discovered.

It would be akin to building a bridge using a completely new, untested building material. Not my idea of a good engineering decision.

Python (1, Redundant)

Noodlenose (537591) | more than 12 years ago | (#2989494)

Python...

Dirk

C++ Twice (1)

Kaypro (35263) | more than 12 years ago | (#2989497)

It's good that you checked C++ twice :-)

And also, (1)

taliver (174409) | more than 12 years ago | (#2989498)

Why did he look at C++ twice, I'm not sure it deserves a first look, let alone two.

Re:And also, (1)

ADRA (37398) | more than 12 years ago | (#2989573)

Why?

It does meet the requirements as laid out just as well as the others. Please give some meat if you're not trying to troll.

why not c++?! (1)

digitalmonkey2k1 (521301) | more than 12 years ago | (#2989595)

C++ happens to be a great cross platform choice, in its self it was designed without any system specifics. you can easily port from one os to the next through changing basic references and the iostream.h, etc. Before badmouthing C i suggest youi actually do some learning about it first.

Marketing (1)

ChopSocky (556987) | more than 12 years ago | (#2989500)

Micro$oft. Put a bunch of cash behind something, and everyone's bound (forced?) to pick it up, powerful or not.

first post (-1, Offtopic)

Anonymous Coward | more than 12 years ago | (#2989502)

post baby.

Sounds like you need a PFM tool (5, Funny)

mrroot (543673) | more than 12 years ago | (#2989505)

You know, Pure Fcking Magic

Re:Sounds like you need a PFM tool (0)

Anonymous Coward | more than 12 years ago | (#2989552)

Mark Bell? Is that you? I thought you'd be in court right now you friggin momo.

Java Java Java (1, Redundant)

los furtive (232491) | more than 12 years ago | (#2989506)

What is java missing from the criteria?

Re:Java Java Java (1)

thrash_ (34661) | more than 12 years ago | (#2989553)

Operator overloading and TRUE multiple inheritance.

Simplicity is good (3, Insightful)

jdesbonnet (22) | more than 12 years ago | (#2989507)

All those features used together is going
to make a big mess, IMHO. I think your
boss needs some education in computer science.

I'd recommend you look at Java and Python.
Operator overloading is not a good idea I think.

Re:Operator overloading (5, Insightful)

ubergnome (242049) | more than 12 years ago | (#2989610)

Operator overloading is just fine. As long as you follow the logic of the other uses of the operator. Sometimes you don't even have to do that.

Look at the '+' operator for strings in the C++ standard library. That is definitely an overloaded operator, and it does something way different. I think that this operator is definitely a good thing (sure beats the pants off of strcat).

I think operator overloading is a good idea. Just use the power wisely.

all languages are the same... (1, Redundant)

lburdet (552112) | more than 12 years ago | (#2989509)

it's all question of compromise...
you will pretty much _have_ to ignore ore try to acheive some other way one of the features you wanted...
just try to find the one that gets ur project done fastest ;)
FP

Why specify language features? (5, Insightful)

Anonymous Coward | more than 12 years ago | (#2989514)

More importantly, what is the project, and why is your boss specifying language features rather than project design goals?

One question... (3, Insightful)

thrash_ (34661) | more than 12 years ago | (#2989515)

Do all features need to be included in the language, or is an addon a possibility? C++ has all but one. Garbage collection, but that can be found in a 3rd-party library. Java lacks only operator overloading, which isn't really necessary. It is purely syntactic sugar. I cannot speak for the other languages, as I have little experience in those areas. You perhaps should have your boss prioritize the requirements, and pick the one that most meets the goals.

Re:One question... (1)

thrash_ (34661) | more than 12 years ago | (#2989585)

And true multiple inheritance. Forgot that.

Simple. (5, Insightful)

PsiPsiStar (95676) | more than 12 years ago | (#2989516)

Hype! hype makes a language powerful! The IT departments are run on hype. It's a hell of a lot easier for business types to understand 'buzz' than actual code. Right? Of course right!

use c++ (0)

Anonymous Coward | more than 12 years ago | (#2989517)

Out of what is available, fast, and readily supported. C++ is probably your best bet right now.

O.

Nth post (-1, Offtopic)

Anonymous Coward | more than 12 years ago | (#2989518)

Fuck off trolls!

Uhhh.... Java. (0)

Anonymous Coward | more than 12 years ago | (#2989520)

How does Java NOT meet those criteria?

Re:Uhhh.... Java. (1)

exeph (118088) | more than 12 years ago | (#2989544)

Multiple inheritance, operator overloading

Python? (2, Redundant)

ilias (409618) | more than 12 years ago | (#2989522)

Tried Python?

Is it that time of the week again... (1, Troll)

partingshot (156813) | more than 12 years ago | (#2989527)

for the weekly which language is best
b.s. question on /.?

It should have a (2, Funny)

Twister002 (537605) | more than 12 years ago | (#2989534)

built in "DoThis" command. That parses out any english language command and does it.
e.g. DoThis("securely connect to the database and return the data on the user"

or DoThis("delete all spam from my inbox")

or maybe even this DoThis("Prevent this comment from getting modded down by some jackass")

Everyone lies here (-1, Offtopic)

Anonymous Coward | more than 12 years ago | (#2989535)

Why would you think people at slashdot could help you, half of whats written here is utter lies in the name of scoring karma points anyway. And if it sounds technical, or they say they speak from experience, its even more likely thats its a karma whore.

What I want (0)

Anonymous Coward | more than 12 years ago | (#2989537)

I would like a language that provides all Perl can do without having to release source code. It would also have a much cleaner syntax without losing Perl's power.

The boss probably already knows the answer ... (5, Insightful)

jc42 (318812) | more than 12 years ago | (#2989539)

Well, I'd try to get your boss into a discussion with the (unstated) goal of trying to learn what language the boss has already decided is the correct answer.

When people have a long shopping list of specific details, it almost always means that they have decided and have set up the requirements so that only the one answer is correct.

This is, of course, a conventional way of doing "open" hiring or purchasing. You just write up the specs so that only one person or product can fit. It works just as well with software.

Everh HaXor knows that: @# +4 ; Great #@ (-1, Flamebait)

Anonymous Coward | more than 12 years ago | (#2989540)

Visual Basic Rulez.

RE: Programming Languages (1)

hexghost (444585) | more than 12 years ago | (#2989543)

We'll I don't know one that fits ALL those criteria. I think you should narrow some of your criteria. For instance, C++ has many easy to use IDE's, does NOT have simplified GUI, it does have multiple inheritance, abstract classes, and some garbage collection. It also supports function and operator overloading. However, its not certainly not the most portable, especially if you do GUI. In fact, good luck if you do GUI.
Personally I'm a java developer so I'd recommend java. It doesn't have multiple inheritance or basic operator overloading, but you could argue that you don't need those. It does have a lot of very easy to use IDE's (many of the best are free), it does have very easy and integrated GUI support, and it defines portability. Garbage collection and abstract classes and interfaces are there too. I'd recommend this for anyone doing a program that has a GUI and needs to be used on multiple operating systems.
As for VB.Net and C#, well, supposedly they will be portable (sure microsoft we believe you) but the fact remains that they aren't even finished products yet. Your choice.

Hope this helps,
HexGhost

Re: Programming Languages (0)

Anonymous Coward | more than 12 years ago | (#2989619)

Java isn't truly entirely portable. At least two years ago, the gui libraries were different enough to cause problems running on different systems.

We still use a java applet that works fine on one browser buy horribly on another, and both are for the same damn operating system. And it's a commercial applet, too.

Only language that comes close... (3, Informative)

BitwizeGHC (145393) | more than 12 years ago | (#2989554)

... is Smalltalk. In its standard form it's missing multiple inheritance, but is powerful enough to tackle just about any OOP task, even without MI. What the IDE is like depends on the environment you get; but I hear great things about VisualAge.

for starters (5, Insightful)

Sebastopol (189276) | more than 12 years ago | (#2989557)

Your query is so vast that it demontrates a complete lack of planning or thought. Post more details, or hire someone else to figure them out beforehand.

This is what pisses me off. If you would put some thought into the product and the design abstraction, this would be an easy question. Instead, people charge off with grandiose ideas and big buzzwords (event handling, GUI, object oriented).

People wonder why there is so much crap software out there. This is one reason: sitting around discussing the language without discussing the problem.

I know I'm being kinda mean, but it's how I feel when I read such a newbie question from someone claiming to be attempting such an important task. I hope this post lasts long enough for discussion before being modded down to -1.

Re:for starters (2, Insightful)

foogoobers (144585) | more than 12 years ago | (#2989650)

I agree! Go read "Essential COM" by Don Box for a good discussion of pragmatic OO design issues. How do you know you NEED all these features? Have you prototyped the system yet? Have you done your UML diagrams yet? I think that most of the languages you mentioned could fit the bill (of course, this forum is heavily non-M$, so expect to see VB downplayed).

Objective C (0)

Anonymous Coward | more than 12 years ago | (#2989559)

Objectice C on OS X and Project builder would work.

it's obvious! (0)

Anonymous Coward | more than 12 years ago | (#2989560)

GNUstep and Objective-C

Ruby (5, Informative)

JamesOfTheDesert (188356) | more than 12 years ago | (#2989562)

Don't know of a GUI as nice as, say, VS.net, but here are few in the works that look quite promising. Other than that, Ruby [ruby-lang.org] fits your needs quite well.

Java (2)

XRayX (325543) | more than 12 years ago | (#2989564)

I would go with Java. It is really object-oriented and clear structured, there are many implementations out there (Sun's Official [sun.com] , gcj [gnu.org] , IBMs), it is cross-platform and if you tweal it a little it can be fast.

Good Language (1)

Renraku (518261) | more than 12 years ago | (#2989565)

What makes a good language is a language that's open to all OSes. Since it can be used on any system, its potential is really really high. Now, if you make it easy to program in, customizable, and able to have direct access to hardware if needed, or go through an interpreter...it starts to become a good programming language. Of course, no programming language would be good unless it was tested and recognized, meaniing, a compiler and basic help would have to be released free at first, like it should be anyway. All those ingredients combined, and you have the perfect mix for a good language.

Geesh, at least response to the question (2, Insightful)

cdmoyer (86798) | more than 12 years ago | (#2989566)

Less than 20 comments and already I see three(over +1) that say, "Java does all that!".

You may feel that java is the answer for the poster, but it doesn't meet the criteria. Even ignoring the vague, flame-provoking concepts of "intuitive and easy to use IDE" and "simplified GUI design and event handling"... Java doesn't do multiple inheritance or operator overloading.

Perhaps you think that no project needs these... great, at least tell us why in your response, rather that spouting, "Java... Java... Java"

Who cares? Language wars are over (5, Interesting)

Ars-Fartsica (166957) | more than 12 years ago | (#2989570)

The powers that be have decided - statically typed, object-oriented languages are what you are going to work with, not because they are better or more productive but for two reasons:

1. Its what "everyone else" is perceived to be using,

2. Programming cannot be suitably be turned into a MacJob until the variance in the toolset is reduced.

Microsoft's .Net and Java are going to occupy 70% of the brainspace for programming in the next ten years, and these languages conform to my description above.

Sure, Lisp is cool - its also dead in the market, so stop trying to resurrect it based on its coolness. No one cares.

Why not J2EE environment? (1)

Wazzup (164157) | more than 12 years ago | (#2989571)

He abviously didn't look deep at the Java/J2EE development environment. You can a free IDE ( Eclipse or NetBeans) and a strong OO Design tools (like TogetherSoft).

W.

You want Java (3, Interesting)

Gorimek (61128) | more than 12 years ago | (#2989574)

Unless you have pretty strong performance requirements, Java is your language.

I think it fills all the requrements, except for the somewhat misplaced "full support for operator and function overloading".

Why operator overloading would be a mission critical feature for a language beats me. It was excluded from Java for a reason! I assume the reason is how hopelessly confusing it can be to read code where + or && doesn't do what you'd expect them to do. It should be clear when a function is called and when it's not.

Smalltalk (0)

Anonymous Coward | more than 12 years ago | (#2989577)

Smalltalk should do everything asked for.

Seems like an asinine list though. You're looking at the language from a functional level (what it does) rather than from your requirements level (what you need).

Oh my (0)

Anonymous Coward | more than 12 years ago | (#2989581)

Why is this person even in charge of a project when he doesn't know what he is doing?

Only language I can think of would be Smalltalk. (1)

tdelaney (458893) | more than 12 years ago | (#2989582)

Seriously, it is very difficult to meet all of those criteria. For example, I would instantly recommend Python [python.org] , except that it fails the criterium of IDE (there are a number of IDEs, but nothing I would bother using). It also technically fails "abstract classes", but that's pretty much a non-issue in Python.

Since you are obviously willing to put the time in to learn a new language, you may as well go for one which is easy to learn, easy to write, easy to read (incredibly maintainable) and which has one of the best online communities of any language (comp.lang.python).

It really sounds like your manager has a specific language in mind, and is trying to get you to read his/her mind.

It all depends... (2, Informative)

DrPepper (23664) | more than 12 years ago | (#2989584)

...on what you are writing. I use Java for a lot of work, but I wouldn't use it for anything that needed a *lot* of speed, or low level hardware access. However, Java does have a rich API and good portability.

The best solution is ultimately probably using two languages - perhaps Java for interface work / portability, but also C for anything that needs to interface to hardware, or needs the performance. I'm only using Java and C as examples - but other languages are the same.

Most languages can't do everything. Pick the best for the task required and the skills available.

Power! (2, Interesting)

Pengunea (170972) | more than 12 years ago | (#2989587)

I think that there are 5 main elements that make a programming language powerful.
Simple sequence
Do While
Do Until
If Then Else
Case

Of course I'm from the school of thought where anything can be solved by using the logic. But what do I know? I'm not even 25 yet.

Objective C + Cocoa (3, Interesting)

Anonymous Coward | more than 12 years ago | (#2989591)

Objective C and the Cocoa framework provided with Mac OSX is quite possibly the most powerful API I have ever encountered. You can also use Java with Cocoa is you don't want to learn some weird syntax, but I'd reccomend sticking with Objective C since it provides some small and useful benefits over Java.

Also, all the development tools come free with the operating system(OS X). Project Builder and Interface builder are first rate development tools. WebObjects(not free. 700 bucks) also provides a great medium towards database driven web based applications.

Obviously this depends on whether or not you want to limit yourself to OS X. Who knows, maybe they'll port OS X to x86 =).

-Jacques
jc@cs.washington.edu

Sounds like a job for Python (1)

mr_don't (311416) | more than 12 years ago | (#2989593)

This sounds like a job for Python, or maybe Java.

I have found that Python is very easy to use as a GUI builder, and it seems to have most of the features you are looking for! It is also really easy to learn.

Although it may add a level of complexity to your work, you can always try to code different parts in Python, Java, C/C++, and even Perl, and find ways to mesh the various modules into a coherent app!I found the Perl/Python:GUI on top of a C/C++ backend model to be very useful when I was doing Genomics and DNA coding

Fantasy (5, Funny)

NiftyNews (537829) | more than 12 years ago | (#2989598)

"If you were to design a language from the ground up, what features would you include and why?"

Since we're in a complete fantasy realm here where all of use have the brainpower, patience, trust fund, and buckets of countless free hours required to even BEGIN such a task...

...can I have a pony?

What's wrong with C++? (3, Informative)

Anonymous Brave Guy (457657) | more than 12 years ago | (#2989600)

I don't get it; what's wrong with good ol' C++, according to that list?

I can only see two possible deficiencies according to your requirements. The first is the lack of a truly portable GUI library (though you can get libraries like Qt that are reasonably cross-platform in some cases). The second is the garbage collection, but (a) you can use a garbage collector for C++ (if you must...) and (b) using the right basic tools and techniques, garbage collection is largely unnecessary in a C++ program anyway.

The biggest problem with C++ is getting people who program it, as opposed to C-with-bolted-on-classes-here-and-there. But if you've got a half-decent team and someone with smarts in charge, all of your concerns should be non-issues.

One way or the other (1)

Joel Ironstone (161342) | more than 12 years ago | (#2989602)

I'm a big fan off assembler myself along with VB.

I figure you either go one way or the other.

Vb for your interfaces, and some assembler for all the functions that are really intensive.

By using assembler you get around all the rules that microsoft lays out for you.

The one the best programmers use of course... (3, Insightful)

sapped (208174) | more than 12 years ago | (#2989605)

The best programming language is the one that is used by your company's best programmers. If they are intimately familiar with it then they are able to use it to its fullest and will be able to make the language do what you want it to do.

I'm also having this problem (5, Funny)

Spankophile (78098) | more than 12 years ago | (#2989607)

Except I have the added requirement that the language must have an IDE that accepts voice dictation and can create the program for me.

I think it's the same language that they use to program the holodeck.

"Computer, make me a map of all the known last locations of Romulan war ships."

Hmmm. almost looks like AppleScript.

SmallTalk (0)

Anonymous Coward | more than 12 years ago | (#2989612)

Take a look at Smalltalk. It has all the features you want. The downside is that you have to get used to the "everything, and I mean everything including conditionals and looping control structures is an object" idea.

You need to find a new job. (1)

gte910h (239582) | more than 12 years ago | (#2989615)

Your boss is scary. He sounds like a character from the pages of Dilbert. I wouldn't be searching for a language. I would be searching for a new job.

Or I would tell your boss that Java/C++/Python don't have all these features, but are probbably better suited to your application than the languages that do.

Certain implementations of Smalltalk and Lisp (CLOS) both have everything that you listed. But you are a horrible employee if you let your company USE all of those features.

How not to start a programming project (1)

Maury Markowitz (452832) | more than 12 years ago | (#2989616)

"My company is about to start development on a new project, and I have to decide on a language and development environment."

This strikes me as similar to starting construction of the Bay Bridge by deciding which set of pliers to use.

"advanced object oriented design including multiple inheritance"

Bah. Dead project.

Easy and Powerful???? (1)

jsimon12 (207119) | more than 12 years ago | (#2989618)

Hmmmmm, sorta two concepts that don't always fit. Sounds like you want Visual Basic that does C++ stuff. Check out this rant, I mean argument [eyejabber.com] about programming languages.

C++ could fit the bill (1)

jeffy124 (453342) | more than 12 years ago | (#2989620)

C++ might be able to handle it, even though you've looked into it (twice).

To meet your GUI, event handling, and cross-platform needs, it depends on picking the right library to do those things and then using them correctly. Likewise for an IDE.

In addition, you can implement reference counting to simulate garbage collection.

Why not mroe than one language? (2, Insightful)

Urban Garlic (447282) | more than 12 years ago | (#2989621)

A lot of applications these days seem to be being written along a sort of "engine plus glue" model -- I am involved in a project that uses Python and C++ this way. While there certainly are interface issues, you can get something that approaches the best of both worlds, playing to the strengths of the different languages at different points in the app.

Sounds like you need Perl :-) (1, Insightful)

Anonymous Coward | more than 12 years ago | (#2989624)

My experience is that Perl does whatever you need to do. I use it on Unix systems, but on the Windows side, I have heard nothing but great things about ActiveState Perl, which comes with a compiler. It is also now available for Unix. I don't about a Unix GUI, but there is Emacs :-) The object oriented mechanism is simple but easily extendible (this is Perl, after all!)

Why do you need all these features? (1)

igomaniac (409731) | more than 12 years ago | (#2989626)

Trying to use as many language features as possible is a common pitfall when programming in modern day languages. If you try to use multiple inheritance, operator overloading etc. just because you can, you will end up with an unreadable, unmaintainable, undebuggable mess.

You should first analyze the requirements of your project before deciding which language is most suitable for the job. Just going by 'as many features as possible' will get you in trouble.

That being said, I think Python fulfills almost all the requirements your boss had. (I am not a Python programmer myself, but I'm interested in language design, so I have read some articles about Python...) On the other hand, if you really have a very complicated problem domain (like AI), Common LISP might be what you're looking for. If you want rapid prototyping above all, maybe Smalltalk is your best bet - If you want performance, write in C or C++, if you want portability you can do a lot worse than picking Java -- You get the picture...

Don't pick the language first, solve the problem! (5, Insightful)

trenton (53581) | more than 12 years ago | (#2989628)

You're in a great place because you can choose which language to use. Most aren't that lucky. Instead of choosing a language based on a list of random features, start thinking through the problem and think of language features that would make solving the problem easier. The language you choose will be a natural selection.

Making a list of neat features won't do you any good. It's this approach to problem that causes bloatware. If a product is guaranteed to solve all your problems, you can be assured, it will solve none. It's all marketing!

Strength in numbers (2, Insightful)

Moosifer (168884) | more than 12 years ago | (#2989632)

For commercial or "enterprise" applications, a widely adopted language can often prove to be the most powerful. The more popular the language, the easier it will be to find mature or talented resources to keep the product going. Going with a relatively obscure language, even if it is somewhat better suited to the task, might only serve to hinder the evolution of the product.

Delphi (1)

Tha_Zanthrax (521419) | more than 12 years ago | (#2989633)

I have used lot's of programming languages and Delphi just is the easiest to use.
It's a nightmare when occasionally doing some ciding in C(++).
Oh, 1 hint, don't use API's. Kylix kicks a$$ to !

Or brainf*ck [muppetlabs.com] :)

Not a feauture of the language (1)

Joel Ironstone (161342) | more than 12 years ago | (#2989637)

Many of the things you have described are not features of the language you're using but of the programmers you're employing. Keeping a good handle on how the programmers are organizing their code is more important than any features a language can provide.

I think you're asking the wrong questions (1)

joeflies (529536) | more than 12 years ago | (#2989640)

Have you determined that you need all that stuff to complete your project? It sure sounds like what I deal with everyday ... someone walks in with a checklist of stuff, of which they only use 10% of the criteria. Most of the time, they would be far better off using something that does their high priority criteria exteremly well, instead of choosing something that does everything not so well.

You like C++ (1)

Roached (84015) | more than 12 years ago | (#2989644)

I have already looked at C++, Java, C++, C#, Eiffel, and even VB.net;

You said C++ twice.

We like C++.

Sounds like a boss alright (0)

dmeiz (9373) | more than 12 years ago | (#2989647)

"Oh, and by the way, make sure it is high-performance, self-maintaining, self-documenting, and can be self-taught in 21 days."

Dim bulb (1)

moebius_4d (26199) | more than 12 years ago | (#2989648)

Your boss sounds like a "buzzword-compliant" type. Ask him why each feature is necessary so that you can decide what you really need and what that actually exists is closest. Note that even if you find some research language like Haskell (no disrespect) that meets all these features it will not do well on real-world criteria like "good supply of programmers who can use it".

If you are presented with a feature list and explanations for why each feature is necessary are not forthcoming, you may be working for a dangerous idiot. Consider transferring or finding other employment.
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>