Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming Software IT Technology

Designing And Building A New Pragmatic Language 192

ctrimble writes "A bunch of folks on the pragprog Yahoo! Group have banded together to design and implement a 'pragmatic' programming language. Ostensibly, the language is informed by the principles in Hunt and Thomas's well-received book, The Pragmatic Programmer: From Journeyman to Master but the purpose of the language is to help ease some of the pain of development and bridge the impedance mismatch between the academic aspects of a programming language and the discipline of software engineering. The design is still very much in flux. If you're a programmer, this might be a language you'll be using in a few years (or earlier). This is your chance to get in on the ground floor. What kind of features do you want the language to have? What are your PL pain points? Where could this language do better than existing languages?"
This discussion has been archived. No new comments can be posted.

Designing And Building A New Pragmatic Language

Comments Filter:
  • make the case.... (Score:4, Insightful)

    by demian031 ( 466963 ) <demian0311.yahoo@com> on Wednesday July 30, 2003 @06:04PM (#6574736)
    they should explain why ruby, python, perl, basic, java is bad.

    they should come up with some good improvements for a specific language.

    the world doesn't need an entirely new language. (we already have python).

    • by t482 ( 193197 ) on Wednesday July 30, 2003 @10:35PM (#6576626) Homepage
      I think that Alan Kay was way ahead of his time - getting kids to program. I think much like the spreadsheet revolutionized office work by allowing dynamic analysis of data the next big language will be one that is simple enough to allow average office workers to speed up and automate their own work. Abstraction is key.

      VBA is being used currently for a lot of that work - but it is truly horrible. Wharton has started teaching its MBA students Python.

      Check out what Paul Graham has to say about programming languages in 100 years (basically they won't change much).
      http://www.paulgraham.com/hundred.html [paulgraham.com]
      And Artima had a discussion on this topic, "After Java and C# - what is next?". http://www.artima.com/weblogs/viewpost.jsp?thread= 6543 [artima.com]
      • by zero_offset ( 200586 ) on Thursday July 31, 2003 @06:45AM (#6578383) Homepage
        VBA is being used currently for a lot of that work - but it is truly horrible.

        VBA is isn't horrible. It's the MS Office object models that are pure cluster fucks.

        However, what's truly horrible is the code that those same self-taught average office works write. I didn't get the impression that was their target, but if it was, they'd have their work cut out for them.

        In my experience, the average office worker's explorations of VBA always follow the same path... they discover it and play with it... they build something useful with it... the useful thing is shared with other workers... it becomes a critical business tool... it fails miserably (possibly causing lots of confusion and/or costing a lot of money)... then it's thrown over the fence to IT for an emergency-fix... What does it do? "We don't know, we just have to run it every morning. It was written by that guy who quit last year. It worked until yesterday."

        If these pragmatic-language guys ever decide to tackle the non-professional-programmer experience, they REALLY have their work cut out for them -- and not even the best language in the world can solve the problem of a really badly-designed object model.

  • Already done (Score:5, Insightful)

    by keesh ( 202812 ) on Wednesday July 30, 2003 @06:07PM (#6574773) Homepage
    I believe it's called Ruby [ruby-lang.org]. Incidentally, Hunt and Thomas also wrote the Ruby Book [rubycentral.com], where they say Ruby is pretty much what they had in mind when they wrote Pragmatic Programmer:
    As Pragmatic Programmers we've tried many, many languages in our search for tools to make our lives easier, for tools to help us do our jobs better. Until now, though, we'd always been frustrated by the languages we were using.
    • Ruby gives a strange impression. It combines some of Perl's choices (magic variables, regular expressions as part of the syntax rather than as a library, and variable prefixes that look like line noise) with stealing some nice stuff from Smalltalk, and oddly, using end as a block delimiter. It comes across as baroque, not beautiful.

      A pragmatic language should have mature class libraries. (That's pragmatic, isn't it?) Ruby doesn't.

      • Re:Already done (Score:2, Informative)

        by Anonymous Coward
        A pragmatic language should have mature class libraries
        Ruby does have mature class libraries. And the end is only if you use begin, you can use {} if you prefer.
        • And the end is only if you use begin, you can use {} if you prefer.

          Really? That's good. Every Ruby example I've ever seen had begin/end; it looked so nasty that it kept me from looking further. If it allows for multiple means of creating a code block, that's a good thing, allowing people with different styles of coding to code in the same language. It'd be nice if it did python-style whitespace indentation as well.

          Of course, I expect the purists to flame me, but thankfully I've got this +5 Cloak of Ret

      • Re:Already done (Score:3, Informative)

        by Hawkins ( 219795 )
        It should be noted that some of this Perlesque is deliberate, and that much of it is simply syntax sugar on top of objects. The regexps, for example, are actually Regexp objects, and as such can be extended or inherited just as any other object would. matz decided to include the /regexp/ construct to aid those who were used to it. As for the $_, $&, and its cousins, if you don't like the look of those you can include the English mixin in the standard library that allows you to say things like $LAST_R
        • If you're using globals in an OO language, may Dog have mercy on your soul.

          While I've seen a lot of abuse of globals (any PHP piece code being a good example), I think being purely anti-global is a little too strong.

          Global variables should hold global data. Global data does exist. I don't know about the specific case of Ruby, but in Smalltalk (which is obviously the inspiration for Ruby's semantics) all uppercase variables are global, which conveniently includes classes, as classes are first-class

  • by Nice2Cats ( 557310 ) on Wednesday July 30, 2003 @06:21PM (#6574925)
    ... they only thing I can think of that would be missing is a compiler to turn Python into machine code, and I'm sure somebody is working on that.
  • by phraktyl ( 92649 ) * <wyattNO@SPAMdraggoo.com> on Wednesday July 30, 2003 @06:23PM (#6574946) Homepage Journal
    I'm going to have to see at least 3 years of Apocalypses and Exegesis before I can make an informed decision about this language...
  • Wish list (Score:2, Interesting)

    by jbrandon ( 603700 )
    Strong typing: I'm tired of seeing casting errors at runtime.

    Metacode/macros: Sometimes I would like things done at compile time, especially if they have to do with types.

    Overloading: Can be implemented with a decent macro system.

    OO/functional: So many languages miss one. So few have both (Eiffel, O'Caml)

    So many languages are so close, especially ones w/ active user communities, like perl and C++. They're just not there yet . . .
  • by xagon7 ( 530399 ) on Wednesday July 30, 2003 @06:32PM (#6575075)
    We have PLENTY of generic memory moving, scriptable, and interpreted languages that can all perform the same command line batch processing.

    I think we need a language that not only performs those operations but is built with Cross-platform GUI design in mind. I don't know HOW or even it it is simply another part of the standard libraries, but I think you you REALLY want you rlanguage to be successful it should be able to hook into existing GUI APIs and/or implement its own with ease and consistancy. If anything a strong enphasis of a GUI library is a must have.

    Delphi (MAYBE VB) is the closest thing I have seen that allows this. Yes I know the "language" is object pascal, but the IDE allows for quick and semi-graceful GUI design.

    In addition to that if you could implement a pointerless environment with automatic garbage in a FAST way it would be helpful...but allowing for manual overrides if necessary.

    Let the elitist flames begin.
    • by pbox ( 146337 ) on Wednesday July 30, 2003 @06:43PM (#6575193) Homepage Journal
      You should try wxWindows + Python.

      Pyhton: pointerless, automtic garbage coll, vary FAST if using psycho.

      wxWindows: portable, yet platform optimized. Very good tools for design.
      • Will do, thanks!

        I was wondering about a good GUI system for Python. I need to get up to speed on it it looks great.
        • Here are some pointers:

          Python: www.python.org
          wxPython: www.wxpython.org
          wxWindows (only if you want to roll your own wxPython): www.wxwindows.org
          Psyco: psyco.sourceforge.net
          Weave: www.scipy.org/site_content/weave
          Pyrex: www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
          Num Py: numpy.sourceforge.net

          Good luck.
      • I have not played with it yet but I am very hopeful about it. The one down side to wxWindows+Python, Ruby, Perl, Tck/Tl, Java, and even .NET are the large runtimes they require. It is a shame but not every system out there has a good java runtime installed or .net framework. I would really like a native compile option. It would be really nice if I could just hand an EXE file to someone. The problem is not so bad for Java. I just use install anywhere and it installs the JVM.
        • Psyco is a very interesting concept for Python. It compiles python bytecode to native, but it is not JIT, rather it takes the code, analyzes it and compiles several versions, of which the optimal one is going to be chosen at runtime. You really need to check it out. It promises about 40% speedup on random py code, but about 400% speedup on algorhytmic code (that counts for scientific apps). that is almost as fast as the equivalent C code. His motto is "High-level languages are faster than low-level ones!"

          P
          • Speed is not that big if an issue for many apps. Ease of deployment is. The big problem with java apps is not really the speed of the program. It is how long it takes to start. Why? because you have to load the JVM. The other problem with Java apps comes from having to load install the JVM if you do not have one already. The Microsoft JVM is so out of date as to be usless. There are not real problems for in house applications. But if you want a comercial app or on that is free to download it can be.
    • by Anonymous Coward
      ...(MAYBE VB) is the closest thing I have seen that allows this.

      I have considered deeply what you said here, and have carefully formulated my reply:

      Noooooooooooooooo!

    • Quote bu xagon7: I think we need a language that not only performs those operations but is built with Cross-platform GUI design in mind. I don't know HOW or even it it is simply another part of the standard libraries, but I think you you REALLY want you rlanguage to be successful it should be able to hook into existing GUI APIs and/or implement its own with ease and consistancy. If anything a strong enphasis of a GUI library is a must have.

      If you don't care too much for native GUI widgets, you can check

  • by crmartin ( 98227 ) on Wednesday July 30, 2003 @06:35PM (#6575118)
    First thing: read Tony Hoare's critique of Ada. (CAR Hoare, Hints on Programming Language Design, 1978). All the current common languages are way too complex.

    Second, make sure the language has a formal semantics from the start. This semantics needs to include concurrency and how it works. I can think of half a dozen languages (Ada, C++, Java, ...) in the last 20 years that decided this was just too hard, and eventually paid for it.

    Third, make sure that the notation either explicitly uses files, or is completely independent of files. Probably the most annoying aspect of Java is that the package structure implicitly depends on a directory hierarchy (but some OS's don't have hierarchic file systemss) but doesn't deal with package structure in anything like the way hierarchic file systems do (what does 'import java.*.event' mean?)

    Fourth, write a lot of sample programs, and test each with experienced programmers, saying 'what does this program do?' If the programmer doesn't get it approximately right, rethink the syntax.
    • This semantics needs to include concurrency and how it works. I can think of half a dozen languages (Ada, C++, Java, ...) in the last 20 years that decided this was just too hard, and eventually paid for it.

      Do you know of any language or system that got this right?

      • > Do you know of any language or system that got this right?

        Well, VHDL, the hardware description language, has a formal semantics defined (in a book written by some friends of mine.) It also addresses concurrently explicitly in the standard, which is nice.

        It's far from a useful general purpose programming language though.
      • Sadly, not offhand. But a significant step toward getting it right is by defining a semantics -- which is a step that Ada missed out on (at least in the original Ada, I've not had the moral strength to learn much about Ada95) and a weakness of Java as well.
      • Oh, just in case I misuinderstood -- there are languages which get a lot of the details right -- eg, Occam makes a pretty good job of defining a semantics for a limited model of concurrency based on Hoare's Communicating Sequential Processes.
        • Occam did reasonably well at CSP things (Rob Pike's newsqueak did it better however) but fails at almost everything else.

          I recall Inmos stating "We want to make occam the FORTRAN of parallel processing." My reply was "You have." (ref. to lack of data structuring other than fixed sized arrays).

          It wasn't until the hacked up occam 2.5 that it got some better programming language features.

      • Maybe Oz (Score:3, Informative)

        by Szplug ( 8771 )
        though Oz [mozart-oz.org] is a bit wilder than most mainstream languages.

        Get the book [ucl.ac.be] free while you can; it's gotten high praise, a real treat for getting a wide view of different styles of computer programming. It compares favorably with SICS [amazon.com].

    • > First thing: read Tony Hoare's critique of Ada. (CAR Hoare, Hints on Programming Language Design, 1978). All the current common languages are way too complex.

      I thought it was in his 1981 speech, but either way notice that he commented on the language before it was complete (1983). However, I understand that the language was simplified somewhat between the time of his remarks and the time it came out of the oven, possibly as a direct result of his comments.

      > This semantics needs to include concur

      • I thought it was in his 1981 speech, ....

        The cite could be wrong -- I was scrounging quickly on the net. In fact, thinking about it, it's almost certainly wrong, because the paper came out when I was in grad school, and I started in '83.

        Concurrency as in multitasking/multithreading? It's really easy in Ada, and it works quite well everywhere I've used it.

        The problem isn't that it works badly, necessarily -- it's that it doesn't work the same way everywhere. At least as of Ada 83, the semantics of a
    • First thing: read Tony Hoare's critique of Ada. (CAR Hoare, Hints on Programming Language Design, 1978). All the current common languages are way too complex.

      1978? Ada wasn't standardised until 1983, though it was essentially complete by 1980. Hoare has had much nicer things to say since then.

      Second, make sure the language has a formal semantics from the start. This semantics needs to include concurrency and how it works. I can think of half a dozen languages (Ada, C++, Java, ...) in the last 20 years
      • Sorry, I didn't mean to give the impression I was particularly against Ada. I was very much on Ada's side, starting with Strawman. But it had some real flaws in the 83 version, which were mostly the result of specific weakenings of the semantics to make sure everyone liked it. The one that annoyed me most was task/rendezvous, which didn't (sorry) define the behavior of tasks at all well. In fact, a program could pass the Ada test suite if it didn't implement task concurrently at all, as I recall.

        Ada 95
    • what does 'import java.*.event' mean?

      According to the compiler, it means a syntax error:

      foo.java:1: ';' expected
      import java.*.event;
      ^
      1 error

      • Yes, exactly. But why? Since it looks so much like a path name (and represents a pathname to the compiler), why doesn't it do the same thing as ls foo/*/CVS, say?
        • Since it looks so much like a path name (and represents a pathname to the compiler)

          Close.

          It represents a namespace to the compiler.

          To the JVM, it represents a path to a particular class (or set of classes if you use the * notation). That path can be found in either the directories or the .jar files in your CLASSPATH.

          why doesn't it do the same thing as ls foo/*/CVS

          Isn't it the shell that does the expansion of the * (as opposed to ls)?

          An import statement serves the purpose of declaring a namespace,
          • You're missing the point in a couple of ways.

            First, unfortunately, the package name does not represent just a name space to the compiler. javac as distributed by Sun, and every other implementation of Java I'm aware of (with the exception of the late lamented Visual Age for Java), requires the package naming structure to correspond 1-1 with a path tree structure.

            You're misunderstanding the namespace notion a bit though: If I import java.util.Date, I'm not adding a namespace, I'm adding a name to my curre
  • Just give me Lisp with some syntactic sugar, a nicely standardized interpreter and library, and a wxWindows port.
    • I totally second that. I've become really fascinated with Lisp through reading Paul Graham's web site. It's interesting to note that his views seem to be widely held by many respected computer scientists. Lisp may be difficult to read compared to a standard imperative language, but the power and flexibility it offers are unparalleled IMO.

      Since my company will *never* standardize on Lisp, it looks like we are going to standardize on Python, which isn't as powerful but is certainly more readeable for the
  • by Pyromage ( 19360 ) on Wednesday July 30, 2003 @07:49PM (#6575720) Homepage
    Every language feature has use. Pointers, references, pointers to pointers, pointers to functions, reflection, OO, templates, multiple inheritance, interfaces, enforced contracts, garbage collection, manual resource management, virtual machine, native execution.

    All these features have uses. There is always 5 cases for every single one where it's *much* easier to implement while using it.

    Now abandon backwards compatibility and think up reasonable syntax. I don't know if it's possible to do an elegant language with all that, but if it is, I think we should have one. Every other language lacks some of the above features. I would like to see a langauge that really had everything.
    • I don't know if it's possible to do an elegant language with all that, but if it is, I think we should have one. Every other language lacks some of the above features. I would like to see a langauge that really had everything.

      It's not. Seriously. The closest thing to what you mentioned is C++, with some external libraries added for things like garbage collection.

      A lot of your features collide. Having pointers and references makes it very difficult for the GC, and you can typically get into situations whe
      • > Enforced contracts + templates + multiple inheritance

        Eiffel has all these feature with a nice syntax.
        Eiffle do not have interface, but I don't see the difference between interfaces and abstract virtual base classes, when you have multiple inheritence.

        Apparently, it is quite possible to have both GC and manual memory management: C# have it..
        I like the idea of having GC by default (secure and easy to use) and still being able to manage memory "by hand" if there is a need.

        Oh and I disagree that C++ *ha
        • Eiffel has multiple-inheritence, templates,etc.. and its syntax is very nice..

          !!like_hell_it_is

          j/k

          • I'm not sure if you're agreeing or desagreeing with me.

            Yes to create a new object you use !! in Eiffel, it could be better true but still its syntax is far more elegant than C++, no?

            I think that the best syntax to create an object is in Limbo (a script language in Plan9), you can say:
            var_name: type_name; as in Pascal but you can also say other_var := var_name; which is equivalent to say other_var: type_name; other_var = var_name;

            Nice, no? This way when you change the type of var_name, you change also the
  • by sir_cello ( 634395 ) on Wednesday July 30, 2003 @08:35PM (#6575990)

    that there is no "one language", there are multiple languages for multiple purposes, and the boundaries between languages are often blurred (just like everything else in life).

    in addition to making your case (as stated by other poster), also
    - what particular context/problem are you trying to solve;
    - what are the specific characteristics and issues in that context/problem;
    - how does your new language provide a better solution than other solutions;
    - how does your new language stand up on theoretical issues (looking at the science of design of languages themselves)

    if there's an existing well used language that is "close" to what you want, and such language has quite a following/momentum, then can you try to adapt/evolve it rather than creating a dud language that goes nowhere (a waste of time for everyone). do you really need a new language, or do you need to help educate on the use of an existing language (i.e. are you more about process than product).

  • - Strongly typed. Or weakly typed, but have a smart compiler that could figure out what you mean. (Java/.NET)

    - Generic design patterns that you could "plug" into via some sort of object and run from there.
    (Sorta future Java/.Net, but more ambitious).

    - *Simple* GUI classes included to get a GUI up and running (old VB). Facade pattern to get under the hood and hit native libraries if need be. (SWT, perhaps, but that's a stretch)

    - A GUI library that reads XML definitions either at design/run time as wel
    • Generic design patterns that you could "plug" into via some sort of object and run from there.

      For what it's worth, either you can trivially do that now (like Singleton), or it's effectively impossible (like MVC). IIRC, "the" Patterns book explicitly disclaims the possibility of this, because they're just too high-level.

      As a concrete for-instance, Python has first class support for "Iterators". But they are very specific iterators, and there's a discussion going on right now in the newsgroup about a sligh [google.com]
    • A language with sound underlying models, with simple implementation, which helps me do what I want rather than telling me what I want to do, and which has no dependence on today's buzzwords.

      I think I'd hate your language. :-)

  • by Skeme ( 687563 ) on Wednesday July 30, 2003 @09:20PM (#6576262)
    Why stop there? We need as many languages as we can get, especially in today's economy and job market.
  • Wish List (Score:3, Interesting)

    by bwt ( 68845 ) on Wednesday July 30, 2003 @09:34PM (#6576335)
    I'd like a language that could run in three different modes: interactive interpreted form, highly portable runtime form, and full natvie speed optimized form. Give me common syntax for each and let them interact. For example, if you want to, you can use Jython to script java code. If you need something to be really fact, you write it in C and us the native interface. Why do I have to learn three syntaxes for this? OK, Jython is dynamically type and Java is statically typed.

    Give me both OO abstraction and powerful bit-twiddling capabilities. If I want a 29 bit variable type, dammit I want a 29 bit variable type. Give it to me and let me do all kinds of low level stuff like shift three bits and mask it and treat the first 3 bytes as a unit. Then let me encapsilate that in an object oriented lock box.

    The language MUST have these things built in: associate arrays, regular expressions, iterators, introspection, "here" documents, both static and dynamicly sized arrays.

    The language should be database savy. This means implicit SQL cursors (like in SQLJ or PL/SQL) so that I can say something like
    DBI_DRIVER.set(driver)
    DBI_DRIVER.login(dbname, user, passwd)
    for current_employee in {{
    select emp_name, salary, start_date
    from employee
    where dept_no = $department }}
    do
    {{update employee set salary = salary + $accounting.calulate_bonus}}
    end"
    • Re:Wish List (Score:2, Insightful)

      by smishra ( 540867 )
      You are talking about OCaml. To your list I would like to add large set of high level standard libraries This is the only prerequisite that prevents me from using Ocaml in most of my work. R
      • I will check into OCaml. I know that on Bagley's Language Shootout, it scored comparable to C in speed, but it is obviously a much more modern language.

        As to the standard libararies, I went back and forth on this. At some point you have to accept that if the language designer makes a good core language, that the community will arrive and handle ever expanding libraries. You can't "design" the community, so I left that off. Obviously it's desirable.

        If OCaml would be your ideal language but for limited stan
    • The language MUST have these things built in: associate arrays, regular expressions, iterators, introspection, "here" documents, both static and dynamicly sized arrays.

      Your description (and your example) look as though you like Perl, but find it mildly lacking in a few areas. Am I close?

      • I do like perl, but I was not think of perl when I wrote that. Actually, the language "environment" that is closest to all of my desires amond those I have worked with is the duo of Jython and Java.

        I would criticize this duo in several ways: why are they such different syntax? Also, in the big picture, when you compare to C and Pascal, Java is slow. I know there are native compilers like gcj, but they are an afterthought.
  • by AxelTorvalds ( 544851 ) on Wednesday July 30, 2003 @09:55PM (#6576456)
    I was just marvelling at the new Mandrake compiler RPMs and how they now have C, C++, Objective-C, Ada(95), Fortran, Java and Pascal all supported in there. Very cool. I don't know why, I haven't coded a line of Pascal in over 10 years but it just feels right having a pascal compiler sitting around. There are some programs that are amazingly easy to read and write in pascal... I never seemed to have stack or buffer overflows in pascal..

    I've thought about this a bunch over the last few years. IBM has the PL series of languages. PL/S and PL/X were deamed "strategic" and as such they were never standardized outside IBM, yet IBM continued and still continues to use them for different tasks. There are reams of code written in them and REXX, another IBMism. Lucent has a dozen languages for their own use. Modula-3 started as a DEC thing before is was kind of opened to the world (damn beautiful language I might add, if only more people used it and DECpaq-Hewlet relicensed the gcc front-end code so we could integrate it..) MS has their BASICs and now C#. And numerous other companies have found it either advantageous or some engineer got it in his head that it was a good idea for them to produce their own custom langauge and that they could produce apps in it faster than by using off the shelf components. To some degree I think it's true, you'd be surprised at some of the REXX that holds the world together. I've kind of thought that it was time for an OpenSource language of sorts, there is perl, python, ruby and others but something that can be compiled in to real high performance object code and something that helps us solve the problems we run in to.

    I'll tell you what I think would be killer, in my rambling sort of way. Syntax is key just because people are picky about it, something java like would be great. Make it a front-end to gcc, this gives it a sense of credibility and support and a great optimizer and platform support. Build it so it can easily link with C code. Give it bounds checking and type checking. I thinking it will be very C like for the most part; have that light weight feel to it where you can see the opcodes that the compiler is going to produce as you write in it. Give it objects and classes, but make it light weight on the syntax, building new classes in java requires a new file, doing it in C++ can be feel like lifting the titanic some times because it's proper to add headers as well as implementations. Then with the standard class library, it needs some fundamental object classes like strings (I can't believe how long it was for a standard C++ string class to exist, i've use about a dozen different ones prior...) and sockets (make OpenSSL as close to a boolean flag as you reasonably can...) probably some others I'm not thinking of at the moment. Keep them lean and mean like they are in C but beef up the areas of weekness. Some sort of regular expression engine should be available also.

    For example, strcpy shouldn't exist or there should be some kind of type checking to verify that the inputs are indeed strings and it allocates memory. memcpy is missing several arguments, notably the source and destination sizes. I can probably list dozens of C and C++ problems are aren't language issues so much as library issues that have realworld impact and cause real problems. Now the first class objects that are passed in to strcpy or memcpy (whatever they get called in this new language) could have the missing pieces of information or the API can be built to support it. Basically, I'm suggesting that we add the few instructions it takes to do bounds checking, it's simple code to add to a c compiler. Let's get rid of buffer overflows as much as we reasonably can with the under lying language. Now if you want to do tricky shit with pointers then so be it but if you use standard language constructs (functions will have in and in-out parameters like the C++ & qualifier.) then you should be pretty safe from buffer overflows. With good type checking and such w

  • I offer as the pragmatic language of the future, Toadskin [freshmeat.net]. It's all you need. It has all the power of BrainF**k [muppetlabs.com] and all the friendliness of Forth [colorforth.com]. So let's get those HR systems ported folks!
  • My PL pains (Score:4, Insightful)

    by Tom7 ( 102298 ) on Thursday July 31, 2003 @12:14AM (#6577186) Homepage Journal
    The worst missing features in most programming languages that I sometimes have to use:

    - lack of sum types. Languages have long offered conjunctions (structs in C, tuples in python). Disjunctions are equally useful. (With it, a function could return one of two possible types. The overuse of 'null' as "the other pointer" in C/C++/Java accounts for a tiny corner of the possibilities here.)

    - lack of higher-order, nested functions. You can do so so much with functions once they are first-class in your language. All this stuff about iterators over containers in Java and "I want SQL built into my language so I can say for each employee in query do" is subsumed by map/fold operations and higher order functions, for starters.

    - lack of safety. Man, I sure hate tracking down memory corruption bugs, and I sure hate it when there's an exploitable security hole in my or someone else's code because of them.

    I already have languages with these features and more, so I don't need recommendations. But if your new sparkling language doesn't have these features... then what are you doing?!?
    • Ah yes, 15 votes for you. Sum types are the greatest. They sumsube enumerators too (as in Color := Red | Blue | Green) which is another moan in Java.

      Sum types also take care of the crap where a numeric type is used to idicate some value or -1 to indicate an absence of value and things like that. Something like x := Found Int | Notfound.

  • Holy War (Score:2, Interesting)

    by Tablizer ( 95088 )
    I have been in a jillion language and paradigm wars over the years, (Itsa hobby of mine :-) I have come to conclude that many aspects of programming and languages are purely subjective. What floats your boat may sink mine and visa versa. People process symbols and patterns differently in their head. There is no one right language.

    It also seems that committee-designed languages usually fail because they compromise so much that they don't "sing" to any one group. You need a fan-base to get a language to take
  • Enough already? (Score:3, Interesting)

    by Fastball ( 91927 ) on Thursday July 31, 2003 @04:41AM (#6578101) Journal
    I don't want to learn any more languages. Are new languages necessary, or can existing languages be extended to meet our needs? Personally, I'd rather it be the latter, but then I'm a thirty year old burnout.

    Man. Anybody else tired of keeping up?

    • Man. Anybody else tired of keeping up?

      I think the problem today is that everything seems to be moving on much faster than it actually is.

      Quite a few years ago, I learned to program in C and x86 assembler. They were useful at the time, and I learned a lot about structured programming and such while using them.

      Several years later, I learned C++, and encountered OO for the first time.

      At university, I discovered things like Java and ML. ML was new and interesting, but at the time Java was just underpo

      • if you've got solid basics -- as any old-timer in this industry probably does -- you're never far behind the lead edge if you choose to catch up.

        It's not just personally catching up that's the problem. New languages may be easy to learn, but they each still take some time to master. You can write Fortran in any language, and a lot of mistakes (it's easy to understand the concept of OO, it's quite another skill to come up with a appropriate and scalable object model for a complex new project) are made alo

  • Could be hard... (Score:4, Insightful)

    by DarkDust ( 239124 ) <marc@darkdust.net> on Thursday July 31, 2003 @05:39AM (#6578229) Homepage

    It's sad, but I believe this will fail horribly. The past has shown that "committee" languages don't succeed (or at least only in some niches, like Ada).

    In my experience systems (like PL, applications or even OS's) are best when designed by just a small group of people: not too few and too many (I guess four to six people is a good value). Too few (just one or two) tends to include just the exclusive view of thing from the designer, while too many just makes a great mess since it's hard for a group of people to settle on one point.

    Another thing I learned while reading some of the stuff about C and its history on dmr [bell-labs.com]'s homepage is that languages which are defined first and implemented later often hold some promises in the form of "in theory this should be very elegant and nice, but it turns out to be annoying or very, very hard to implement".

    dmr also said one of the reasons C succeeded was because it was created to fit a need, not to make a point or as demonstration. So if there is need for some features then this project might succeed, but I don't see any striking needs any more, there is already a PL for almost every problem out there (and interestingly nearly every PL out there is very strong/elegant in solving certain problems but fails horribly in others).

    But nonetheless I wish the people participating in this project all the best, if they would come up with an interesting, useful and beautiful language that would make an improvement to the PL world this would be a very cool thing :-)

    • Re:Could be hard... (Score:3, Informative)

      by cyberlync ( 450786 )
      I am one of the people deeply involved in this project and so far there are two people directly involved with the design. There is a third handling administration and a few others working on documention. The community comments and provides suggestions. Thats hardly a big commitee.

      On top of this the project is progressing rapidly. It may not ever take off, but it has been fun doing it and thats worth while to me.
      • I am one of the people deeply involved in this project and so far there are two people directly involved with the design. There is a third handling administration and a few others working on documention. The community comments and provides suggestions. Thats hardly a big commitee.

        Then you are soon to aproach the number of people I consider the healthiest for such a project, which is Good Thing(tm). Make sure not to exceed about six people directly involved with the design ;-)

        On top of this the projec

  • My thoughts (Score:2, Interesting)

    by DimGeo ( 694000 )
    I think Java is good. It fails at some points (this is by a person with 3+ years of professional Java experience):
    1) No convenient way to call methods by name. Takes quite a few try-catch constructs, etc. What about this snippet:
    Object x = ...
    call someMethod(a, b, c, d) at x;
    or something. Ok, it may throw any necessary exceptions.
    2) No standard way to access DBs. JDBC is a pain. It works, but with lots of workarounds for different dbs. One must implement class loaders, selecting the driver at runtime is ter

Our business in life is not to succeed but to continue to fail in high spirits. -- Robert Louis Stevenson

Working...