AbandonedSince infogami has been abandoned by its creators, I’m out too. Back to web.fisher.cx for me. Everything that was here is there. Robert FisherJust thinking out loud Programming languagesIf you register and log in you can add comments to my pages. If viewing the main blog page, click the # underneath an entry to comment on it. Herein I randomly comment on various programming languages. Languages I've used: Basic: My first programming language. These days, I would not recommend (even a structured version of it) to anyone. C: What's there to say? C is as close to assembly as you should care to get. Hypertalk: SmallTalk for the masses? I enjoyed it in its heyday. It helped intoduce me to some object oriented concepts. Still, (as seems to be a theme on this page) I have to wonder why you'd want to create a new language instead of leveraging an existing one. SmallTalk itself perhaps? I had two big gripes with HyperCard/Hypertalk:
It's modern descendents, AppleScript (see comments below) & Revolution can be used to create applications that fit the Apple user experience. C++: I don't think I'd really recommend C++ to anyone. The language is so complex to really understand & get the most out of it. Yet, if you don't take the time to fully understand it, you risk shooting yourself in the foot. It is widely used, though, & there are some jobs you can't get without knowing it. Java: As with C++, I don't think I'd actually recommend this language. It doesn't have the nasty pitfalls or as many dark corners as C++, though. Plus, it is also widely used & there are some jobs you can't get without knowing it. Perl: Perl is a write-only language. Reading Perl, even Perl you wrote yourself, can be difficult. To me, Perl really is a practical extraction & report language. It's well suited to those tasks. Plus, it has a larger user community than the alternatives (CPAN is such a great resource) & may be installed in places where the alternatives are not. Ruby: Ruby is SmallTalk without its GUI & “image” model & with just enough syntactic sugar that it can look like Perl if you squint. It's kind of an odd duck. I like it better than Perl, & it can do just about all the things I used to use Perl for. On the other hand, I'm kind of annoyed that it isn't quite as elegant as SmallTalk. Common Lisp: They tell you that there are two general purpose, modern forms of Lisp: Common Lisp & Scheme. Common Lisp is the practical one, & Scheme is the elegant one. Common Lisp is ugly. That's to be expected, I guess, since its purpose was to unify & succeed all the other flavors of Lisp. It is certainly powerful, though. Personally, I've found Scheme more practical. Scheme: Scheme is my current toy. I'm trying to use it for all the things I used to use Ruby for. (Which are the things I used to use Perl for.) Is there really a need for any languages other than C & Scheme? EcmaScript: You may know it as JavaScript, although JavaScript is actually the Netscape/Mozilla implementation of EcmaScript. The Microsoft implementation is JScript. (Although JavaScript & JScript were the foundation of EcmaScript.) It has nothing to do with Java. Naming it JavaScript was a marketing decision. EcmaScript has Algol/C/Java-like syntax, closures like Lisp, & prototype-based object-oriented features like Self. My biggest gripes with it are:
PostScript: Having a full, imperative programming language for a page description language seems a bit overkill to me. I used PostScript to output some graphical debugging data from the inspection path code I wrote at nLine. Not only would adding a GUI to that code have been pointless, but—after converting the PostScript output to PDF—I could use Acrobat to navigate the data. Pascal: For me, Pascal never offered anything that C didn't give me. There are a couple of things C can do that it can't, and no advantages it has over C that I care about. AppleScript: A read-only language. It's practically plain English, but it doesn't understand arbitrary English. It can be harder to learn a subset of English to program in than to learn a programming language with little connection to English. It's a nice idea to make a scripting/glue language that so easy that anybody can use it, but it always ends up being harder to use than any of the existing programming languages that could have been leveraged instead. SmallTalk/Squeak: Almost every problem someone has with object oriented programming comes down to differences between the language they're using & SmallTalk. The problem I have with SmallTalk & Squeak is the way it wants to force its GUI & “image” model on you. Now, these things certainly have their advantages. I, however, need development tools that fit into my environment instead of ones that expect me to fit into their environment. Self: I might like Self better than SmallTalk, if I didn't have the same gripe about it that I have about SmallTalk. I might have to write a Self or SmallTalk interpreter in the mold of the Perl, Python, Ruby, Common Lisp, Scheme, EcmaScript, &c. interpreters that I use. PHP: I've been playing with it a bit because I have work with a couple of web sites that require it. I can't really believe that there wasn't an existing language that could've been leveraged instead. Prolog: Might as well use Schelog? Jess: A Java implementation of a Lisp dialect & rule engine using the Rete algorithm. Rete is cool. Lisp is cool. Java's not so cool. Objective C: SmallTalk with all the disadvantages of C! Although, if you're going to be extending C to do OOP, I think Objective C++ might be a good choice. Use C++ objects for "value/stack objects" & Objective C objects for "reference/heap objects". Unfortunately, Objective C++ has even less support than Objective C. Helix: Helix was originally a database application for the Mac. It had the crazy graphical programming environment in which you basically built your code like a flowchart in Dia. It seems it's still around, & there's selling it more as a development tool than a database. SQL: I thought SQL was beautiful until I encountered the tuple relational calculus. I've played with implementing the relational algebra in Lisp, & even that is preferable to SQL. Tcl: 6502 Assembly: 680x0 Assembly: x86 Assembly: Languages I haven't use: Dylan: Common Lisp with (optional) static type checking & Algolish syntax. I was raised on Algolish syntax, but I simply cannot understand the drive to impose it upon every language. I want to like Dylan, but—once again—I can't really see the point. Qi looks interesting as a Common Lisp with optional static type checking. It also has some Prologish features. Python: Although I do use some Python programs, I haven't yet read one thing that has intrigued me enough to bother playing with it. (Indeed, I've read a few things that tend to keep me away.) last updated 2 years ago # |