SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    You talkin to me? Anarchos's Avatar
    Join Date
    Oct 2000
    Location
    Austin, TX
    Posts
    1,438
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Being Popular - Programming Language Discussion

    Just thought I'd point out a great paper I came across today: "Being Popular" by Paul Graham, a Lisp programmer. He talks about what it takes to be a popular language, and why language designers often don't consider how the user will actually use a language. It's at http://www.paulgraham.com/lib/paulgraham/pop.txt and it's from March of this year so I'm sure that many people have already read it. Anyway, I think he makes some very good points, such as:

    To be attractive to hackers, a language must be good for writing
    the kinds of programs they want to write. And that means, perhaps
    surprisingly, that it has to be good for writing throwaway programs.

    To be attractive to hackers, a language must be good for writing the kinds of programs they want to write. And that means, perhaps surprisingly, that it has to be good for writing throwaway programs.

    A throwaway program is a program you write quickly for some limited task: a program to automate some system administration task, or generate test data for a simulation, or convert data from one format to another. The surprising thing about throwaway programs is that, like the "temporary" buildings built at so many American universities during World War II, they often don't get thrown away. Many evolve into real programs, with real features and real users.
    I think that really explains how languages like PHP, Perl, ASP, CF are so popular.
    ck :: bringing chris to the masses.

  2. #2
    Grumpy Mole Man Skunk's Avatar
    Join Date
    Jan 2001
    Location
    Lawrence, Kansas
    Posts
    2,067
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    He makes an interesting point that being popular is very important for a language as it leads to more user feedback, which in turn leads to improvements in the language itself. That's a really interesting article

  3. #3
    ********* Callithumpian silver trophy freakysid's Avatar
    Join Date
    Jun 2000
    Location
    Sydney, Australia
    Posts
    3,798
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    That was an interesting article - thanks for the link. Yes I agree that a lot of programs evolve over time. As I am just getting into *nix system administration for the first time - this becomes obvious as you compile binaries and watch all the stuff that scrolls past on the console and as you poke around source code of open source software. You can see that there is a legacy of things having been written, patched, modified, added to wrapped up into something else, etc, etc. I liken this type of software development to evolution. To pick up on something else the author talked about - you get a sense that this software has evolved more than having been "engineered" (the author jolingly mentions the distain with which a true "hacker" would regard the term "software engineering"). The way in which legacy code evolved and gets recycled and abstracted more and more in software development reminds me of DNA - there is all sorts of stuff in there at a low level that is probably redundant and not even needed any more or just works so it stays the way it is - even though with a complete rewrite you could probably clean out a lot of it.

    Anyway, that author made lots of very relevent points:

    - Readablility of the code - which is aided by terse symbolic notation not the sort of long-winded natural langauage nonsense that a certain language that I like to criticize carries on with. This might sound a little crazy, but I think that the indentation and actual "look" of the code on the page is important to being able to hold a mental picture of the program in your head. I know that I scan over code "looking" over the logic for the part I am looking for. Indentation and the look of the code aids me in spacially navigating to the appropriate places I am looking for. Im my experience C++ and PHP have been the easiest languages to indent and layout to make the code readable and scanable to my eye. Although I harldy ever use it - I find C++ to be such a poetic language that you often get caught up in refining the semantics of your code just for the sake of it because it that alone can be a source of beauty. OK - now everyone will think I'm a lunatic . Another thing that aids readability is...

    - A clean, clear and concise library. Again getting back to the idea of terse symbolic notation, this is where C exels and I'm afraid object-oriented langauges such as Java and object-base such as VB (I say object based because most VB users use the taylor made objects built into the API without rolling their own classes and instantiating from them). I also think it is where PHP is miles ahead of any other language I have used. It has a nice C like library of functions that are intuitively and sensibly named and yet this library is also comprehensive. You want to connect to a database - easy there it isn't necessary to go through all these layers of abstraction and objects to do so (you can use abstract interfaces if you want to write portable code but most of the time we are hacking at getting a specific task done as the author notes).

    There is none of this endless importing of the necessary libraries and packages as with Java. Further there is none of this accessing properties of objects that are properties of other objects that you get with VB (and Java) such as:
    Code:
    SET widget.fidget.didget = new Foo foo(bar.kinigit.diggit())
    - Documentation! what can you say about this that is not already obvious - except that a clean and clear API library is going to make understanding the documentation a lot easier.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •