Tag: Programming Languages

Re-Infected by Smalltalk

I seem to be afflicted with a chronic, recurring condition, a sort of living nightmare in which I imagine myself a programmer. I’ve experienced this numerous times over the past several decades, but it appeared to be finally cured in my retirement as I focused my life more on spiritual matters.

But recently, I decided that I wanted to develop a couple of Web and mobile applications in support of my spiritual teaching as well as for the nonprofit Job One for Humanity volunteer work that I’m doing. Without much of a commitment to actually doing something, I started poking around in the world of mobile application and web development.

By a chain of circumstances I can only be described as being dragged down a dark rabbit hole, I encountered a language which I had explored previously as a possible development language and environment. I’m referring to the Smalltalk-inspired Amber language. In the three or so years I have been away from Amber, it appears to have undergone considerable growth and gained in popularity. More importantly, it appeared to have overcome most if not all of the packaging, delivery, and performance issues inherent in traditional Smalltalk.

Ever since I first discovered it something like 15 or 20 years ago, I have loved Smalltalk. It is my favorite, widely-used programming language by a lot. (If I omit the qualifier, “widely-used”, then that honor goes to LiveCode.)

So I was excited to encounter a vastly improved Amber product which is a tool that generates high-quality JavaScript code from working Amber applications. Even though I’m not a systems-level guy, I set out in an effort to install Amber on my Mac with complete confidence it would be a positive experience.

Man, was I wrong!

As it now stands, Amber does not apparently have any easy way to install on any platform. It involves so many dependencies and requires so much command console typing (which for me is far more painful than programming) that I was tempted several times to give up. But I persevered. However, I kept encountering roadblocks I could not decipher or understand, and when I sought help in the Amber community — or in one of the communities supporting one of the dependency modules — I got very little response and nothing definitive that actually worked.

As a result, after three days of mucking about with it, I gave up.

But that is not the end of the story. In the course of investigating Amber, I discovered that a newer dialect of Squeak Smalltalk — which, over recent years, has become the Gold Standard of free Smalltalk environments — was also capable of spitting out web applications using generated HTML, CSS, and JavaScript. This relative newcomer is called Pharo.

Not only does Pharo have a single-button install, its documentation is really outstanding. There are a number of free e-books available, several of them authored or co-authored by the original developers of the language, and they have a wonderful tutorial as well as an online video course spread over several weeks of in-depth training.

So now I’m off, once again infected by Smalltalk, learning this new dialect and the robust environment in which development takes place, for the moment at least happy as a clam. I truly hope the Amber team gets its act together on the installation side, because I’d love to explore it as well, but for now I’m sitting sale to master Pharo and make these new application ideas a reality.

P.S. to Laurence. You knew this would happen, didn’t you?


So-Called “Expert” Offers Thin Advice on “Language” of RoR

A post on entrepreneur.com caught my attention yesterday. In it, self-described “expert” Mikal E. Belicove advises startup managers and tech execs that when it comes to Web application development, the ‘safest’ programming ‘language’ choice is Ruby on Rails.

This self-styled “expert’ either doesn’t know the difference between a language and a framework or thinks his readers are too stupid to know the difference. He singles out only RoR as the “safest” Web application programming “language” because of its support for rapid design and its large community.

Strangely enough, he leaves out JavaScript and PHP, which appear to have larger communities and which have been established longer. And he ignores Python, which is not only well-established Aside from persistent performance issues, Ruby as a language is often viewed with suspicion in corporate IT shops because of its bastardized design and its effort to be all things to all coders. RoR is a perfectly fine Web app framework but to declare it simplistically to be the safest bet for a startup is far too simplistic.

It’s always hard to know from these kinds of brief bullet-point pieces whether the named author is too inexperienced or flip to offer a real answer or whether the site’s editor imposed severe length restrictions. In any case, it’s unfortunate that someone with so little apparent depth and who is described not as a programmer but as a “market positioning, social media, and management consultant specializing in website usability and business blogging” even gets asked the question. (By the way, he is listed as the author of only one book, “The Complete Idiot’s Guide to Facebook”. Nuff said.)

I wonder how many companies will screw up their choice of platform based on advice like this.

I’m Going to do “Hour Of Code” This Year. How About You?

Hour of Code LogoLast year, some 15 million students around the world learned some basics of computer programming in a wildly successful “Hour of Code” experience. This is an amazing program assembled by an eclectic group of technology companies and philanthropists and educational institutions in which people are taught some basic ideas of programming in a single hour at no cost to anyone.

I checked out the program after the fact last  year and was fascinated. This year, I’ve  volunteered to coordinate the program at my granddaughter’s school in Monterey. So every day from Dec. 8-13, I’ll be spending my time in the computer lab at her school, helping students and a few teachers experience the joy of moving past passively using a computer to bossing it around.

This program is exciting, easy to implement, free to everyone, features a lot of celebrity names from technology and entertainment, and has the potential to spark serious interest in our profession. Plus last year, it resulted in more than 10 million girls being introduced to programming.

I hope you’ll consider volunteering to help out with your local school or district in 2014 as the sponsors hope to exceed last year’s enrollment and expose even more kids to the empowerment that is computer programming.


My Take on Best Programming Language for Beginners

An article appeared on the Popular Mechanics Web site in the last couple of days asking what I refer to as Silly Question #42: “What’s the best programming language for beginners?”

Tag cloud of programming languagesAfter a fairly interesting survey response, the author of the piece somehow got science fiction author David Brin (one of my favorites) into an interview and asked him what he thought. While I’m not sure what makes him an authority worth interviewing on this subject, his answer was so backward-looking and wrong-headed that I had to jump into the conversation.

Here’s what I posted to that article:

Brin reminds me of people who always think that what was going on in the “Good Old Days” is somehow better than whatever we have today.

The fact is, Python comes preinstalled on all Macintosh computers at least, and while it may take a few minutes for a complete novice to figure out how to get at it, it isn’t all that difficult. Furthermore, Java Script is immediately available from the URL box in every web browser. Again, it may take a few minutes to figure out how to use that region for programming, but it’s not all that hard.

Lamenting the loss of Basic in today’s computers is not only futile, it’s also very backward. Basic died for a lot of reasons, only one of which was its disappearance as a universal built-in language. Frankly, today’s youth would be wasting gobs of time and energy learning to program in a language that failed utterly to keep up with modern programming trends.

Finally, it’s pretty silly to ask the question posed by this article. There is not one programming language that is best for all beginners. There are too many factors to take into account in attempting to answer that question. Python is a great answer for many beginning coders, but so are Smalltalk, JavaScript, and LiveCode.

In the article, the writer cited a survey that showed the following languages are used in U.S. high schools to teach programming. I’m listing them here, as they did, in descending order of popularity:

  • Java (49%) – WTF? Worst possible beginning programming language with the sole exception of C++
  • Scratch (34%) – Both it and Alice are good choices in many respects but both seem a little immature not in terms of their underlying languages but in terms of the kinds of apps for which they are intended, for high school coders. Plus their names are a tad embarrassing for a high school kid to share with friends. “I’m gonna go Scratch some Alice.” Really?
  • Alice (30%)
  • MS Visual Basic (18%) – VB is actually a decent language and it does employ lots of people but it seems just a tad archaic compared to modern languages.
  • Python (14%) – Great choice, IMNSHO
  • App Inventor (13%) – I find this weird because it’s the only one of the bunch that is only useful as a skill if you program Android apps.

Before you can really answer Silly Question #42, you have to know a few things.

  • Why do you want to learn to program? For career purposes? To learn logical thinking processes? To understand how things work? To study the language as a form of communication?
  • How old are you?
  • What kinds of apps (projects) are you interested in building?
  • How much time and money do you have to spend on this learning task?
  • Does your company have a requirement or expectation? Do your clients or prospects?
  • Do you want to develop apps for the Web, for mobile devices, or the desktop?

That’s just a starter list.