Slashdot Mirror


The State of the Scripting Universe

r.jimenezz writes "Via PragDave's blog I learned of an article by Lynn Greiner on the state of scripting languages, a.k.a. scripting dynamic languages. A number of influential personalities (Guido von Rossum, Damien Conway, PragDave himself and others) were interviewed and it's interesting to see how much their opinions coincide despite being interviewed separately. A lengthy but worthwhile reading."

35 of 131 comments (clear)

  1. Dun dun dun... by ciroknight · · Score: 4, Funny

    The research firm reports that over 41 percent of the 666 developers surveyed use Perl, 32 percent use PHP, and 15.6 percent use Python

    The Number of the Devil of Programmers.. looks like it's as I always said, scripting languages are evil..

    --
    "Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
    1. Re:Dun dun dun... by FidelCatsro · · Score: 2, Funny

      You see the unholy trilogy of Perl Python and PHP == PPP which if you turn upside will give you bbb ,then add the satanic powers of non compilation and you get a twisting effect turning the bbb to 666 ... i need more sleep

      --
      The only things certain in war are Propaganda and Death. You can never be sure which is which though
    2. Re:Dun dun dun... by ciroknight · · Score: 2, Funny

      Haha, and that was supposed to be a joke..

      Gosh I really need some sensitivity training or something.

      --
      "Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
  2. What defines a scripting language? by tchuladdiass · · Score: 3, Interesting

    I have often wondered what makes a particular language a "scripting" language v.s. a "real" language. One thing scripting languages all have in common is that they are interpreted. However Basic is interpreted (even though some may dissagree that it is a "real" language), and there have been interpreted versions of Pascal and others.
    The best I can come up with is that a scripting language is an interpreted language that is normally attached to an application in order to allow the end user to automate functions within that app. So for example BASH programming is "scripting" since most of what you do is items that would normally be done at the command line. Same with Word/Excel macros. Also, TCL was designed to be attached to other programs (although the typical use is stand-alone). But I wouldn't put PERL in that catagory, anymore than GW-Basic or interpreted Pascal are scripting languages.
    So, what does a language need to be called a "real" language, other than being compiled?

    1. Re:What defines a scripting language? by Deagol · · Score: 2, Insightful
      Perhaps it's standardization? I'm just guessing here. Is there a IEFT/IEEE/ANSI/whatever standard for things like BASH, Ruby, and Perl?

      I'm not trying to be a wise-ass. I'm sincere here. Maybe a ratified standard by some authority is what sets COBOL, BASIC, and Ada apart from their more agile scripting counterparts, whether or not a compiler or interpreter implimentation exists.

    2. Re:What defines a scripting language? by FriedTurkey · · Score: 2, Insightful

      I would consider any programming language directly run from a text file a scripting language.

    3. Re:What defines a scripting language? by Frequency+Domain · · Score: 3, Insightful
      I have often wondered what makes a particular language a "scripting" language v.s. a "real" language.
      I think languages were traditionally classified as "scripting" when their primary use was to control the execution of other executables. A point made by all of the folks in the interview is that languages such as perl, python, and ruby have developed well beyond that to the point where they can compete head-to-head with C, C#, Java, etc. In other words, trying to categorize languages as either "scripting" or "real" is inappropriate with these more modern tools.
    4. Re:What defines a scripting language? by FriedTurkey · · Score: 2, Informative

      If you say "perl mycode.pl", mycode.pl is still a text file.

      If you have file with "#!/bin/perl" at the top it is still a text file if you run it directly.

      Doesn't matter how you call it, it is still a text file.

      Yes, PERL is a scripting language.

    5. Re:What defines a scripting language? by chris_mahan · · Score: 3, Informative

      But what if I use py2exe for windows and transform my python program into a windows .exe file? Is python still a scripting language then?

      --

      "Piter, too, is dead."

    6. Re:What defines a scripting language? by tchuladdiass · · Score: 2, Insightful

      Then what about interpreted Basic or Pascal? Both of these can be run the same way. Keep in mind I'm refering to the language, not the implimentation.
      Of course, some will argue that Basic is a scripting language (or not a language at all), but I won't go there :-)
      Also, even though Pascal is usually compiled, it used to exist primarily as an interpreted language.
      I do agree that Perl is a scripting language, I just can't figure out why (since a perl script doesn't interact "control" another program), whereas a shell sciprt is a script because it is attached to and controls another program (the shell). Yet a Pascal or Basic program isn't a script even if it is run through an interpreter (although some dialects of Basic are scripts simply because of the primary purpose of the dialect, i.e. VB scripts atached to Excel macros).

    7. Re:What defines a scripting language? by FriedTurkey · · Score: 3, Insightful

      Are you talking about a BASIC program run with MS BASICA or something? That is a text file and a therefore a script.

      Let's assume you are talking about Visual Basic. Yes, like Java, Visual Basic requires a runtime engine to execute. However, C++ and C require calls to the operating system. Try running a C++ program without an operating system and see how well it works. So in reality all progamming languages really require an "interperter" to execute. Maybe OS kernel code is the only real stand alone code.

    8. Re:What defines a scripting language? by Scott7477 · · Score: 3, Informative

      In the article, van Rossum defines a scripting language as one that lacks compile time checking. Pall includes as part of the definition the fact that in these languages memory management is handled
      by the interpreter.

      Hobbs refers the interview reader to a whitepaper which defines scripting languages as follows:

      "There is a category of programming languages which share the properties of being high-level, dynamically typed and open source. These languages have been referred to in the past by some
      as "scripting languages," and by others as "general-purpose programming languages". Neither moniker accurately represents the true strengths of these languages. We propose the term dynamic languages as a compact term which evokes both the technical strengths of the languages and the social strengths of their communities of contributors and users."

      One statement that Pall makes is great: "As more programming is done with scripting languages, doing memory management yourself, or implementing yet another LZW-based compression library will be seen as a risky proposition when deadlines approach."

      I totally agree with this; given that an interpreter manages memory decently, why reinvent the wheel? It is like building your own spark plugs from scratch when you want to do a tune up on your car.

      --
      "Lack of technical competence coupled with the arrogance of power, as usual, leads to no good end."
    9. Re:What defines a scripting language? by Homology · · Score: 2, Insightful
      Hobbs refers the interview reader to a whitepaper which defines scripting languages as follows: "There is a category of programming languages which share the properties of being high-level, dynamically typed and open source ..."

      This is cool, the article author just eliminated one very commonly used scripting language by require it to be open source : Visual Basic.

      Many widely used Microsoft applications has a scripting interface via Automation, and guess what, you can use Visual Basic for this! In general this works very well, actually, to well considering the number of scripting viruses. But as a scripting language with a common interface to other applications, it's very good.

  3. You dont use a sledge hammer to open your penuts by FidelCatsro · · Score: 5, Insightful

    Scripting languages will always have a place , Its a simple case of the right tool for the job.
    As a sysadmin most of my Programming is done in either ruby(im difrent) , shell(bash or ksh) or perl. Using C for most of the things i have to automate is as i said "Taking a sledge hammer to a penut" , It would be total overkill and waste my time and the systems and it would be more error prone .If i do have a larger project that requires a bit more power then i can prototype it in perl or shell then easily transcribe it to C .
    Scripting will always be an important part of my work , and with the increasing power and decresing price of computer equipment over the last few years , it has become viable to program many many things in languages such as python , things which would not so long ago, would have requierd the power of C/++.
    Scripting is in a fine state , and will continue to fill its end of the market , just as compiled languages will always have their place

    --
    The only things certain in war are Propaganda and Death. You can never be sure which is which though
  4. Another cool article about Tcl by DavidNWelton · · Score: 5, Informative

    This article:

    http://www.devsource.com/article2/0,1759,1778148,0 0.asp

    talks about some of the cool stuff that Tcl does. My favorite thing about the language is that it hits a real sweet spot with its level of abstraction. Python has an event loop now, in Twisted, but Tcl's had the same thing for ages, and it's very easy to use.

  5. Developer productivity vs. CPU productivity by G4from128k · · Score: 5, Insightful

    For projects below a certain complexity level, I've always found scripting languages to be more productive for the programmer (very fast edit-run-debug cycles) even if they are less efficient for the CPU. And with the advent of JIT compilers, the efficiency of scripting is much improved.

    Given the low-cost of fast CPUs and high-cost of programmers, I'd rather waste CPU cycles than waste developer labor.

    --
    Two wrongs don't make a right, but three lefts do.
  6. Experience of a newbie... by CarlinWithers · · Score: 3, Informative
    When it comes to programming I know very little. My background is mostly in electronics and as a computer service tech. But I'd have to say I love scripting languages.

    I have a final project in my computer engineering diploma in which we are trying to monitor and control a few security devices over the web. The focus is about split equally between design of a PCB w/ microcontroller and getting the code written. Since my only formal training was in C, and at first I considered using C for the majority of the programming. However after some research I stumbled upon scripting languages.

    The result is that instead of a cumbersome 1000 line C program which would be a huge time sink, I have several small C programs connected with script. I'm using a combination of Bash script, PERL, and Java. I had to learn the basics of each but in the end that was faster and easy to debug. The time I saved went into more hardware hacking and making sure that the electronics portion worked better. In the end it made for a project that was much more fun.

    1. Re:Experience of a newbie... by FidelCatsro · · Score: 2, Insightful

      I must say that this is the correct way to think about it , If it works and it works well then why switch to C for the job.
      "Right tool for the job" is an important motif for efficent workmanship

      --
      The only things certain in war are Propaganda and Death. You can never be sure which is which though
  7. Re:You dont use a sledge hammer to open your penut by Bastian · · Score: 2, Informative

    I don't think it's necessarily a question of project size, though, so much as the nature of a project. I have worked on some very large tools for which a scripting language is a much better choice. As far as I am concerned, C is best used when you're working with very large and rapidly changing data sets (C structs will probably always be lighter weight than objects) or you need to crunch a lot of numbers really fast.

    I think the way of the future is static languages like C for critical stuff, and dynamic languages like Ruby, Io, or some functional language for most of the program. . . much the way that programs used to be written in C with some inline assembler for the performance-critical stuff.

  8. MANLY scripting language? by Saeed+al-Sahaf · · Score: 2, Funny
    So for example BASH programming is "scripting" since most of what you do is items that would normally be done at the command line.

    Yes, but BASH is a manly scripting language, where as...

    --
    "Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
  9. I hate dynamic languages by Anm · · Score: 4, Interesting
    I've said it before, and I'll say it again.. I hate dynamically typed languages. Just to clarify, this isn't about interpretted versus compiled languages. In fact I love high-level interrupted languages, with syntactic sugar to make my life easier and the ability to edit code during execution. But dynamically typed languages have a serious problem.

    Lets say you have to added a feature to the following function:

    updateCustomerAccount( customer, newInfo )

    Looks nice, with very descriptive function name and parameters. But it isn't. Is customer a string name, a an accountId, or a data structure? Does it return anything (success or failure code)? And a little more debatable, does it throw any errors.

    The usual cases are:
    • You wrote it. Great for when you've just been working on it, but not so great if you're coming back to it after a while or are juggling multiple similar projects.
    • Read the docs. Unfortunately, docs and code regularly get out of sync unless every single member of your team is very tedious to such details. This is especially true of internal APIs. Besides, if you now require such tedious attention to detail at every check in (as opposed to public release where your API docs better be correct), haven't you lost most of the supposed benefits of the script/high level language?
    • Ask the author. Brings programmer out of the code, and not very useful when its more than just down the hall. For distributed development like OSS, email is a slow solution.
    • Use the source. Again, brings the programmer out of their current objective, and this can often be tedious and error prone. That said, there is always a case where this is necessary/useful/insightful.

    But even if you can always rely on one of these solutions, you're missing out on the beauty of statically typed languages: IDEs. By formally typing objects in the language grammar, you have not just documented your code to your peers, but to the machine itself. And allowing the machine to reason about your code means it can help you write it. It keeps you in the code, with instant access to API, documentation, and refactoring. Now you have mentally stepped beyond the code into the problem space.

    Anyone who has written Java in a solid IDE like Eclipse can atest to this. I've had I've had people look over my shoulder in amazement as "the computer writes [my] code" for me. Every function appropriate to the context (and their documentation) usually within 6 keystrokes, without memorization.

    Even the best Python IDEs (strongly typed, but still dynamically typed) pale in comparison to this experience.

    When will the scripting world learn what they're missing?

    Anm

    (For the record, my prefered langauge is Java, but my current work has me doing C, C++, Python, and Perl as necessary. While I haven't worked in it, I assume C# is in the same boat as Java: statically typed, runtime reflexective, dynamically loadable, useful exceptions/stack traces, and large library including the source compiler itself.)
    1. Re:I hate dynamic languages by Bastian · · Score: 3, Interesting

      I agree that this is a serious problem with many dynamically typed languages, but, if I may use the cliche, don't throw the baby out with the bathwater. There are two good solutions to that problem that I can see.

      The first is commenting. (If you can't keep your comments in sync with your code, you have a much bigger problem that you should work out before you even start to argue language paradigms.)

      As for the second, there is nothing in the definition of a dynamically typed language that says you can't include types for function parameters. Personally, I would love to see a dynamcially typed language whose syntax allows for it. In the end, it would just be so much syntactic sugar - a dynamically typed language would just convert the value you pass to the function if it doesn't match the type. However, it would force a higher minimum for readability in code, and it would provide a mechanism for having a -Wall style compiler option for giving warnings about type mismatches. (And before anybody complains, yes, there would be a generic type for functions and data structures that you really do want to be able to handle everything.)

      Really, I think the whole reason why this hasn't happened in any popular scripting languages is becuase the popular scripting languages are designed for very small projects, where you really don't get that much benefit from such a feature. Plus, in my experience, programs written in dynamically typed languages do tend to be better commented. It's a lot harder to escape when you're dealing with a class of languages that tends to be rather on the terse side of things.

    2. Re:I hate dynamic languages by chris_mahan · · Score: 5, Insightful

      >Lets say you have to added a feature to the following function:
      >
      > updateCustomerAccount( customer, newInfo )
      >
      >Looks nice, with very descriptive function name and parameters. But it isn't. Is customer a string name, a an accountId, or a data structure? Does it return anything (success or failure code)? And a little more debatable, does it throw any errors.

      Ah. is customer an object? is the new info an object?

      is it smart-merging "newInfo" to "customer"?

      I can come up with a bunch of things that might affect how one uses this function that would not be infomationalized by the addition of types:

      is it accessing an outside system, such as a database?

      is it asynch?

      Does it assume security of the user? In the Customer update log, what is the name of the person who entered the newInfo?

      Is the newInfo an xml document with inbedded base64 pdf? (i've seen in, in mortgage systems)

      Does it notify a third-party in case of failure, logging to the logger, and returning a "pending verification" semi-error code?

      Does it allow for customer to be empty, and if so, does it create a new customer?

      Does it allow either to be empty, thereby creating a new customer with blank, or default information?

      if the newInfo contains a dataset with as-yet unknown fields, is the system desinged to automatically add the fields as xml tags in the customer xml storage?

      Is the previous information in the customer file store elsewhere? as in a change log?

      All functions need a solid API. Since you're going to have an API, you might as well put the type handling in it.

      If a programmer can't be bothered to keep the API docs updated, he is not staying on my team.

      To some questions, the answer is Python.

      --

      "Piter, too, is dead."

    3. Re:I hate dynamic languages by cratermoon · · Score: 4, Interesting
      • Use the source. Again, brings the programmer out of their current objective, and this can often be tedious and error prone. That said, there is always a case where this is necessary/useful/insightful.

      If reading source code takes you out of your current objective, you have a write-only view of programming, and that's a problem. Take a look at http://www.spinellis.gr/codereading/

    4. Re:I hate dynamic languages by Bastian · · Score: 2, Interesting

      First, the problem isn't limited to function parameters. It's just the example I used. I think the issues are equally present in typing class/struct members and collection values.

      I'll follow your new example. Why don't we allow for casting suggestions on struct or class members as well? We can take this as far as we want. I it's just documentation sugar and a debugging aid.

      Secondly... you want to make programmers go through the effort of naming their types, but you're not going to enforce them? So despite the extra effort, the system may still allow different types, thus the typing only describes the intent?

      I've already explained this. . . it wouldn't be strictly enforced, but you could have the compiler do checking for you and issue warnings. It's really not that much different from the warnings that you get with, say, C, where you can cram anything you want into anything else, and the compiler will figure out some way to munge the data so it compiles cleanly. As for calling it extra effort, let me suggest that a) it isn't any more effort than goes into figuring out what types data should be in a static language, and b) even if it's ignored, forcing programmers to put some modicum of explanation in with their code is a Good Thing. Call me insane, but I've always been of the opinion that minimizing bug count is generally more important than patronizing slothful programmers.

      And you are still left with the possibility of strange runtime errors. . .
      Please be more specific. Every language I have ever written code in, from FORTH to LISP to C to Java, has given me problems with strange runtime errors.
      . . .and possibly misspellings that type checking would catch.
      Not all dynamically typed languages let you get away with not delcaring your variables. I agree, variable declarations are a Good Thing.

      These type of in place corrections (i.e., don't make me go edit the other file manually) give me the speed a dynamic language coders without loosing the safety of my static typing.

      I fail to see why this is a feature that is only possible for an IDE that works with statically-typed languages. Data type never came up in that example, though you did refer to a class as a type. I'd only be willing to let you get away with that if your answer were using a language like Smalltalk where class and type are pretty much the same thing. =D

    5. Re:I hate dynamic languages by p3d0 · · Score: 4, Interesting
      If the information you're missing by omitting type annotations matters to you, then don't use a dynamic language. However, dynamic languages are good for prototypes, and for simple systems. They scale downward further than statically-typed languages. I use them for fun hobby programming, but (for the reasons you mentioned) I don't use them much for professional work.

      I'll give you a pathological example. Consider the Hello World program written in bash (a dynamic language) and Java (a static one). Java looks like this:

      public class Hello {
      public static void main(String[] args){ System.out.println("Hello, world"); }
      }
      Bash looks like this:
      echo Hello, world
      This isn't really a fair comparison per se, but hopefully it illustrates my point regarding the complexity of the problem versus the effort required to code the solution. On the one extreme, you have the "static" languages designed for coding entire "systems programming products" (to borrow a term from Fred Brooks). Of these, the good ones (eg. Eiffel, with its superb multiple inheritance facilities) scale up well to large systems, so the asymptotic slope of the complexity-effort curve is small. However, that curve doesn't cross the origin; that is, as the problem becomes trivially simple, the code required to express the solution reaches some fixed minimum size. In the case of Java, for instance, every program must declare a class with one public static void method taking an array of strings as an argument. That's why nobody uses Java as a command shell.

      On the other extreme, you have shell languages. They do indeed intersect the origin of the complexity-effort curve: that is, it is possible to write a two-character program that does something very simple, such as "cd" or "fg" in bash. If you allow aliases, or UNIX commands like "w", you can write meaningful one-character programs. (This is impossible in Java, no matter what definitions or libraries you presuppose.) However, the slope of the complexity-effort curve is high, and after a program gets larger than a few hundred lines of code, bash becomes almost unusably awkward.

      In between, you have "dynamic" languages like Python. Its curve doesn't hit the origin, and its asymptote's slope is higher than Java's, but there is a sizeable range of programs for which a Python solution requires less effort (at least for me) than bash or Java.

      So, as many others have said, it pays to have a number of tools in your toolchest.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    6. Re:I hate dynamic languages by Pedersen · · Score: 2, Interesting

      In the case of Java, for instance, every program must declare a class with one public static void method taking an array of strings as an argument. That's why nobody uses Java as a command shell.


      What's the problem with that?.


      The problem with that is for extremely simple programs. And by extremely simple, I'm talking about stuff that barely even qualifies as a program, but would be tiresome to type over and over again. Consider, for example, the case of the classic "Hello, World" program, that the GP gave.


      In sh, it's one line, literally. There's no command line parameters, nothing. Just print something out. In Java, you must have three lines in a file, and then you must compile that three line program. All for something meant to display something on the screen that the user is not meant to change.


      So, what's the problem with all of that? Sometimes, you really do want to have just a short script, simple, doing the same few commands regularly. Java (or other compiled languages) add a layer of overhead which is completely not necessary for such items.


      If you allow aliases, or UNIX commands like "w", you can write meaningful one-character programs. (This is impossible in Java, no matter what definitions or libraries you presuppose.)


      Wrong. Aliases has nothing to do with a language. You can alias w=java -jar myapp.jar or whatever command line you want, or write a shell script to do the same, which is the usual way to start a Java program.


      Actually, you've missed the point he was trying to make: It is possible to write shell scripts which do something genuinely useful with only a very few characters. This is, unfortunately, not possible with a full compiled language, such as java, or c, or c++, etc.

      --

      GPL made simple: What was my stuff is now our stuff. If you improve our stuff, please keep it our stuff.
    7. Re:I hate dynamic languages by platos_beard · · Score: 2, Interesting

      Not too long ago I would have been in complete agreement with you, but recently I've been dabbling extensively (I know that's probably an oxymoron) in Python and I'm not so sure any more. Take the code:

      bar = map( lambda x: x[1], foo )

      Maybe it's possible to do that with static typing, but if so it would add so much grief in making sure all the type related stuff fits together as to be barely worth doing. And it is worth doing.

      So I'm moving toward the conclusion that dynamic typing in and of itself is a plus. Not just for prototypes, but for real power and conciseness.

      --
      What's a sig?
  10. Re:Lost. But than I'm stupid. by Knara · · Score: 2, Informative

    It's entirely possible that a small number of individual problems is easier to maintain than one large one that does the same thing. In this case, it might be easier to do the coordination between the C programs in $SCRIPTING_LANG than it would be in C, if for no other reason than it might be easier to write and maintain the coordination script in $SCRIPTING_LANG than C. If the C programs do sufficiently small and simple tasks, but the coordination is easier to code in $SCRIPTING_LANG there definitely could be benefits to doing it that way.

  11. AllInOneRuby by Anonymous Coward · · Score: 2, Informative

    Ruby has RubyScript2Exe to collect a script and all dependencies includint the Ruby interpreter into a single Windows .exe file.

    AllInOneRuby uses the same technique to package the Ruby interpreter and core and standard libraries into a single .exe.

    I'm not sure if Perl and Python have something similar.

  12. Re:Lost. But than I'm stupid. by harikiri · · Score: 2, Informative
    Perhaps in this instance it's overkill, but the practice of breaking up a program into separate components increases security and maintainability.

    Dan Bernstein is a proponent of this approach, as can be seen by looking at the approach taken in his programs such as Qmail.

    --
    Man watching 6 MSCE's around a sun box, looks alot like the opening scene's of 2001:space odyssey...
  13. Re:Something Thomas said I don't understand... by adri · · Score: 3, Informative

    I think he's referring to the idea of 'microcode'. If you look at older 8 bit CPUs (eg z80, 6809, 6510, etc) - there's a decent link between the bits in the instruction and what the instructions do. Microcode based CPUs, even the 8086/8088, are a little different: each instruction triggers a series of instructions which in turn make the CPU logic do something (latch register X onto databus, add to accumulator, etc..). So, when you execute an instruction on a microcode CPU you're triggering off a series of actions for the CPU to perform. You could replace the instruction set the CPU runs by changing the microcode.

  14. Re:Something Thomas said I don't understand... by Hast · · Score: 2, Informative

    To clarify this post a bit.

    You feed a modern processor (assuming x86 compatible) x86 assembly, but internally it executes it's own format of operations. During the fetch/decode stage the x86 operations are "translated" into the internal micro-ops format.

    As such one x86 op may correspond to many internal micro-ops. This is done for several reasons, one of the more fundamental being that x86 asm is now a horrible mess that is not suitable to feed into an extremely optimised processor core.

  15. The ideal language (processing methodology) by garyebickford · · Score: 5, Insightful

    IMHO, all languages should be 'scripted' as well as 'compiled'. The same language syntax can be both. Why not use our advanced computational tools to do the grunt work of optimizing functionality? We've automated every other engineering discipline, but can't seem to do that for our own. (I know I'm overstating the argument, handwaving and idealizing - it's a dirty job, but somebody's gotta do it.)

    What I'd like to see: As I enter code in the language, the system does syntax checking and builds the necessary data structures, prompting and possible asking questions about ambiguities and any necessary library functions either not found or not called correctly. In fact, this process might as well be graphical in nature - NeXTstep's Interface Builder perhaps came closest to this in my experience. The code should be runnable immediately, in an interpreted environment - a la Perl/Python/PHP etc.

    Thus language processing system would act as an intelligent assistant, looking over the system as I design and build it and making suggestions. It might even make performance predictions based on its analysis of the code-so-far.

    Once the functionality is complete, I can pass the system to an even smarter optimizing compiler function, which does the necessary things to make it efficient, small, fast, etc. In the process the compiler may ask more questions about how to resolve various issues that didn't come up earlier. Since the functionality is already defined, the compilation has a mostly-known target for functionality. This process can take as long as necessary, perhaps while I go home for dinner; using more heuristics, AI, whatever, to further improve and clean up the system for the defined functionality.

    Except for the AI features, this combined capability is actually old. Back in the Long Ago, Harris computers ran the Vulcan OS, which had a n interactive FORTRAN system. It did line-by-line compiling, doing syntax checking on each line and even running the code. Once your program was complete and ran, the interactive compiler could output correctly-formatted FORTRAN that could be compiled using the standard FORTRAN compiler.

    --
    It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
  16. i take exception with this by portscan · · Score: 2, Interesting
    When do you use a hand saw, compared to using a power saw? Different carpenters will have different answers. But having both at your command makes you a better craftsperson.
    perhaps it makes you a more capable craftsperson, but just having the tools does not really help. better? maybe, but not necessarily good. it's knowing when to use one over the other that really makes you good.

    that being said, i love perl for quick stuff, i/o and text processing, and lots of other things. php is great for web and i am definitely interested in looking into python...