I blogged about uncertainty facing Java (and Sun’s software stack) now that is being owned by Oracle. It appears that my fears are about to come true….:(
Archive for the ‘Languages’ Category
QED: a glimpse of the future for Java
Wednesday, August 25th, 2010Lost in translation: Language and Perception
Monday, July 26th, 2010The idea of a language defining our perception was supposedly disproved by Noam Chomsky’s introduction of the “Universal Grammar”. And yet, this new study opens the very same can of worms again, along the Sapir- Whorf Hypothesis lines.
If Russian speakers could see more shades of blue because the have more words describing it, and Japanese and Spanish speakers struggle recalling agents of accidental events because of the way their respective languages work, maybe our ability to learn and understand semantically significant concepts is also influenced by the medium through which we absorb these concepts – a language in this case?
Maybe there was something to “the golden key” – Latin and Greek Languages, common languages of the European scholars - that kept link to antiquity in the darkness of Middle Ages? Maybe, there is language uniquely suited to learning some specific subject? Domain Specific Languages are relatively common in computer programming; maybe the concept could be applied back to “natural” languages and comprehension?
A word of caution to the tale…
There is a short story by Robert Sheckley - ”The Language of Love” (1957, Notions: Unlimited); in it a young man sets out to learn the almost forgotten Language of Love, developed by the now extinct inhabitants of a distant planet. After maatering the language, he discovers the reason behind the extinction of that alien race – the Language of Love is so precise and complex that learning (and then using it) becomes an endeavor unto itself, impeding communications with uninitiated, and leaving no time for anything else…
Time to Move on: James Gosling leaves Oracle
Wednesday, April 14th, 2010As of April 2, 2010 the ”Father of Java” is no longer with Oracle. This follows departures of Monty Widenius (2009) and Ken Jacobs (2010) Oracle might have acquired the body but the soul is gone…
A cute slide presentation from eWeek: The Life and Times of Java and James Gosling
Thinking software into existence
Saturday, April 10th, 2010I remember a quote that I think belongs to Michelangelo, though I was unable to find it on the Internet. Once asked about his approach to creating beautiful statues he replied: “I take a piece of marble, and cut off all unnecessary parts”. This resonates with the quote that I was able to find – “I saw the angel in the marble and carved until I set him free”.
Now, what does it have to do with software creation? It seems to me, quite a lot. A software system is a manifestation of a thought process. Just as a statue that could be carved from marble, granite or cast in bronze, there are many different technologies that software could be implemented in, each with their own advantages and drawbacks.
Knowing these allows for a series of trade-off decisions that lead towards a particular implementation – functionality and features as envisioned by an architect, constructed by an engineer, and implemented by a developer; at every one of these stages creative thinking is at the core of the process. An idea, a vision leads the process of discarding unnecessary parts up until a coherent system emerges from alphabet soup of JMS, Ajax, SSO, MOSS, AD, DOM, SAX, SSIS and other incomprehensible acronyms…
A software system is thought into existence, everything else is implementation details.
Native speakers vs. Phrase-book savvy
Monday, March 15th, 2010It is not uncommon to hear from developers during an interview: “I do not remember all these details, I can always look them up”… And this might be a valid response – up to a point.
It used to be simple – all one had to learn was 32 keywords in C, learn the grammar and then use his imagination to create applications. Early on it was understood that re-using code will increase productivity, so the concept of library was born, later augmented by MFC and OWL… The trend continued towards ever greater modularity – the foundation classes were eventually integrated into run-time frameworks, such as Java Foundation Classes (JFC) and Common Run-time Library (CLR) in .Net… Suddenly, a developer had thousands of functional libraries built by professional teams, and incentive to re-invent the wheel diminished accordingly…
Would it be a reasonable expectation for a developer to know every single of the classes rolled into JFC or CLR? No. Would it be reasonable to expect them to be familiar with hierarchy of the classes? Yes. A developer needs to know how and where find a piece of code to accomplish what is needed.
To be productive in either Java or .Net, a developer must have working knowledge of the most commonly used classes, plus a good understanding of where to find the rest. He (or she) must control the urge to create something that might already exist in the environment and leverage the existing capabilities to create new ones.
When hiring a developer I expect him to be fluent in the technology; at the same time I am extremely wary of both the “native speakers” – someone who is so immersed in the technology (Java, C#) that he forgets the rest of the world; on the other side of the spectrum – also to be avoided – are the phrase-book tourists who know a dozen of cookie-cutter recipes and lack either ability or curiosity about the technology to become fluent in it. The former might indicate a technology bigot who is so set in his ways that he would never be able to work with any other technology that business might require in the future, the latter might be an indication of a “fly-by-night operator” – someone who is chasing “hot” technologies to make a quick buck (or suffering from programming variety of ADHD).
NB: Interesting perspective taking my point ad absurdum can be found in this blog post: How to Find Crappy Programmers
P.S. I emphasize “might” word in the above paragraph, as I have met – on a rare occasion – “native speakers” who spoke several disparate technologies, and were open to learning new ones… and some phrase-book savvy developers could be made to see the light, given sufficient time and money. Al in all, I would consider a “native speaker” a highly specialized “tool” that could be very sucessfully utilized on certain types of the project, while “phrase-book savvy” should not be relied upon for tasks that could require even a modicum of creativity.
P.P.S According to some sources there are ~988,968 words in English Language ; other sources imply that 171,476 words are currently in use.
Yet to be fluent you only need a fraction of it. Here’s one bold attempt at classification:
3000-4000 words: Sufficient for reading newspapers and magazines fluently.
10.000-20.000: Active vocabulary in the mother tongue for cultivated Europeans.
FUD for thought
Thursday, January 21st, 2010“To be uncertain is to be uncomfortable,but to be certain is to be ridiculous. ” Chinese Proverb
The European Commission today (January 21, 2010) cleared Oracle’s agreement to acquire Sun Microsystems. What does it mean for the development community, specifically for the future of Sun’s crown jewels: MySQL, OpenOffice, GlassFish EE server, NetBeans… Oracle had almost a year to figure things out.
NetBeansis especially vulnerable given tha Oracle has competing JDeveloper (and Bea Java Dev tool); maybe it will be released as open source project to the community? Rolled into JDeveloper? Discontinued?
Why would Oracle need GlassFish when it already has Bea and Oracle AS? Cannibalization is very likely.
MySQL? Anybody’s guess, but I bet that it will be supported and development will continue; maybe will undergo Oracle-ization (for example, replace MySQL procedural extensions - just introduced in version 5.0 - with robust mature PL/SQL). Will it still be free? Given $1 bln Sun had spent acquiring it, and $7+ bln Oracle spent acquiring Sun, it seems plausible to assume that Oracle would try to squeeze some dough out of it. Its own flagship database sales were stung by ascending SQL Server and IBM.. I see PostgreSQL as a winner, the only enterprise capable true open source RDBMS on the market.
Java. Once positioned as a spear at Microsoft’s heart; not anymore – the landscape has changed, notably with Google becoming a major player, and Microsoft wisely playing its cards by releasing C# as open standard. Yet, I do not see Oracle donating Java to the open source community, most likely we’ll see variations of Sun’s controlled “Community Development Process”. Oracle made significant investment into Java, supporting it inside its products, and even creating its own IDE… but what is going to happen to infant JavaFX ? RIA market is getting saturated – Flash/Flex, Silverlight, AJAX (and Ajax support frameworks such as GWT)… Apache Pivot looks darn promising.. Will Oracle have enough resources to spread around?
Solaris. SUN’s very own implementation of Unix operating system, arguable the best out there, AIX and HP-UX market penetration notwithstanding. For a long time Oracle and Solaris were inseparable; if an Oracle DBA did not run his database on Solaris he was somewhat deemed less competent. Then Linux came of age, and Oracle made huge bet on it (remember “Linux makes Oracle Unbreakable!”,or was it other way around?). Now they OWN the platform that they flagship database was designed for. Will they ditch Linux? Unlikely. Linux is on upswing, it is robust, reliable and has enterprise level support. Will Oracle push Solaris? Not exactly their domain of expertise, and market of operating systems is not as lucrative as it used to be. Then there is issue of the Sun’s proprietary hardware – hugely overpriced, increasingly obsolete… Sun recognized that they cannot charge premium prices for the hardware that is becoming a commodity, and released x86 version of Solaris; it flopped (why x86 Solaris when I can run x86 Linux?). Apple seems to be able to create perception of superiority of both software (Mac OS) and hardware (Apple), but I credit Steve Jobs for it (to support my suspicion, follow the ups and downs of Apple stock plotted against timeline of Steve’s health news; also, reliability of Apple laptops lags that of Asus , Toshiba and Sony - yet there is unshakeable perception that Mac is light years ahead of lowly PC… yalk about selling sizzle!)
My bet is that Solaris will be retired over period of time in favour of Linux…. R.I.P.
NB: FUD – Fear, Uncertainty and Doubt
Who needs a Software Factory?
Wednesday, September 23rd, 2009Software [Development] Factory – a concept most eloquently formulated by Jack Greenfield – did not generate much following. The first book Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools authored by Jack Greenfield (also, see MSDN article), Keith Short, Steve Cook, and Stuart Kent was published in 2004, followed by Practical Software Factories in .Net in 2006, with but a single title advertized for release in 2010 (Agile Software Factories by Damon Wilder Carr)
Apparently it did not struck a chord with majority of software architects and developers out there. Some of the reasons could be developers resistance to commercializing and commoditizing the high art of software development; some of it, I believe, could be attributed to misunderstanding of the applicability domain. Simply put, techies do not need it, and business folks do not understand it.
The promise of SDF is to deliver “economy of scope” where “assembly lines” produce variations of archetypal product/template, it is therefore inherently not applicable to one-off projects. I see the SDF closely aligned with Software Product Lines (e.g. Software Product Lines: Practices and Patterns ), where business domain knowledge meets “patterns, models, frameworks, and tools”.
There could be no discussion about value of patterns, models, frameworks, and tools; these are given for any software project worth the name. They are firmly established in software development practice. Move up one notch in the abstraction ladder and you have all these wrapped up into archetypal template from which you can generate a variation of a domain specific product. An example of such “wrap up” could be used through a DSL - Domain Specific Language used by business domain experts. Say, you - a domain expert – are assembling a financial application that processes loan applications – would not it make sense to use language that finance people could understand with keywords such as “loan”, “mortgage”, “originate”, “fee” etc.? Just as most developers shudder at learning intricacies of APY (Annual Percentage Yield) versus APR (Annual Percentage Rate), the finance folks would not want to be caught dead talking about threads, mutexes, arrays and data types… SDF paradigm allows for both to coexist peacefully: technology aficionados take care of the underlying machinery, and business can assemble applications they need without need to translate the requirements – times and again – into techspeak.
Now, how is it different from CASE promises? Here’s my answer: SOA+DSL. The SDF transcends CASE in a way of operating at ever-increasing level of abstraction, where models do not have to be translated into software modules but rather into software services wired together to produce desired functionality, where patterns are built into the language the domain experts use (think BPEL+), where software engineering best practices are implemented on subconscious level…
I can see these trends when IT folks are increasingly urged to “speak business”, when mash-ups and Google Gears allow for creating a reasonably functional web application with minimal understanding of what technology all these gadgets are using, with proliferation of ECM – Enterprise Content Management systems such as Drupal, Alfresco, Sharepoint, with DSL taking more prominent role (check out Microsoft’s Domain-Specific Language Tools for .Net)
The weakest link
Wednesday, August 26th, 2009Open Kernel Labs clamed to produce the world first 100% verified “bug free” software. Some ~8,000 lines of code were subjected to scrutiny of “over 10,000 intermediate theorems in over 200,000 lines of formal proof” to make sure that the software is “functionally correct”.
By functional correctness they mean that “the implementation always strictly follows a high-level abstract specification of kernel behavior.”
As saying goes, the chain is as strong as its weakest link… Applied to software world one could be tempted to paraphrase: a software stack is as robust as its weakest component. But software system is more than sum of its components. By virtue of interdependence, a software-intensive system includes everything – from server to network to software to user… And all of these parts change – not only by themselves but also in response to the changes occurred in other parts. Say a faulty memory chip will lead to application’s working memory set corruption which introduces instability into the system… What good would be a perfectly correct code if it cannot execute? What if the “high-level abstract specification of kernel behavior” was flawed to begin with?
This brings me to the same dilemma I’ve been pondering in my cozy data world: it IS possible to have perfectly correct data yielding absolutely incorrect information… I sense that Gödel’s Incompleteness Theorem is lurking here somewhere…
The rumors of Delphi’s death have been greatly exaggerated
Friday, August 14th, 2009Recently, I came across the post asserting that Delphi is alive and kicking
( Delphi ain’t dead yet )… It brought back fond memories of… ahm…some years ago, and prompted this post.
FRAG
Saturday, August 1st, 2009Interesting implementation of a DSL; haven’t had time to play with it yet.