- Revolving Door: MPAA Hires Chief USTR Negotiator Behind ACTA And TPP’s IP Chapter
- Copyright Maximalists’ Incredible Sense Of Entitlement: If It Challenges The Biz Model We Chose, It Must Be Illegal
- Turkey’s Prime Minister Sues His Own Country Over Twitter
- Picturefill 2
- Police File On Student ‘Bullied Into Committing Suicide’ Strangely Lacking In Evidence Of Bullying
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- December 2008
- November 2008
- October 2008
Monthly Archives: March 2014
Web Hosting Related Articles You May Need
Can you smell it yet? The freshly cut grass, the muffled sound of thousands of fans, the wonderous gasps of young people? Baseball is back. I’m generally an avid fan of professional sports and, as I’ve written about before, a strong promoter of the id… Continue reading
If you have young kids, you might have noticed that public playgrounds are a bit different than the ones you played on as a kid. Rubberized surfaces have replaced gravel or asphalt, and simple teeter-totters (or see-saws) have been re-designed using vi… Continue reading
For months now, we’ve been covering how Prenda had been losing pretty much every one of its legal fights concerning its fraudulent copyright trolling practices. I guess it was bound to happen sooner or later, but Team Prenda has bounced back with an actual victory. You may recall that one of the (many) key Prenda cases was taking place in Minnesota, where magistrate judge Franklin Noel, becoming aware of what was happening with Prenda in other courts had reopened a bunch of Prenda (via AF Holdings) cases in Minnesota to explore if Team Prenda had committed fraud upon the court. Noel dug in, demanding actual answers to various questions that Team Prenda had avoided in other cases, eventually ruling against Team Prenda and (importantly) ordering the law firm to pay back all the settlement money it had taken in via those cases.
Well, it appears that’s all for nothing now. Judge Joan Ericksen has apparently stepped in to put magistrate judge Noel in his place, pointing out that he went way beyond what a magistrate judge is allowed to do and then actually siding with Prenda lawyer Paul Hansmeier in saying that the fact that team Prenda forged Alan Cooper’s signatures on the copyright assignment isn’t fraud on the court… and, in fact, saying that it basically doesn’t matter at all. First, as to a mere magistrate judge sniffing out these problems, judge Ericksen isn’t having any of it:
AF Holdings consistently objected to the magistrate judge’s authority to determine whether it had committed a fraud on the Court. The magistrate judge had no such authority. See Reddick v. White, 456 F. App’x 191, 193 (4th Cir. 2011) (per curiam) (“A motion for sanctions under the district court’s ‘inherent’ power is not a pretrial matter under Ã‚Â§ 636(B)(1)(a). Magistrate judges have no inherent Article III powers—they have only those powers vested in them by Congress. Congress has not created statutory authorization for magistrate judges to exercise inherent Article III powers.”
Furthermore, Ericksen points out that, as a magistrate judge, Noel can’t really make an order like he did (which is likely accurate), but instead can just make a recommendation for a “real” judge like Ericksen to review. And Ericksen just doesn’t seem concerned about the forgery, lying and other shenanigans from Team Prenda.
Cooper’s signatures were immaterial to the decision that granted AF Holdings expedited discovery…. AF Holdings’ submission of the agreements with Cooper’s signatures—legitimate or not, authorized or not—to evince the transfer of the copyrights to AF Holdings did not amount to a fraud on the Court.
It’s somewhat disappointing to see a court not all that concerned that an effort that involved forgery is really no big deal, especially when it was about copyright trolling, a practice of abusing the court system to hound people into paying up to avoid having to fight a lawsuit.
That’s unfortunate, but given how many other courts have ruled on Prenda’s efforts and the multiple referrals to state bars, DOJ and others, I would imagine that this is merely a slight and brief reprieve for Team Prenda.
Der Spiegel and The Intercept have just released more leaked NSA documents, this time covering the surveillance of foreign officials. This is the sort of thing we expect the NSA to be doing, although perhaps without targeting our allies. (Germany’s Angela Merkel is on the list, something that will come as no surprise to anyone.)
Here’s Der Spiegel’s screencap of part of the list, showing Merkel’s name along with several others. (122 officials are targeted altogether.)
Perhaps the most notable thing about the list is that it’s sorted alphabetically by first name, which seems to fly in the face of logical filing systems. It’s also not solely limited to intercepted phone calls. Der Spiegel notes that the information gathered also includes faxes and computer-to-computer communications.
While some may steer away criticism by nothing this is the expected behavior of a national intelligence agency (or paint it as worthless “espionage porn“), it’s worth noting that those in affected, “friendly” countries aren’t going to find the “public interest” angle of these revelations quite limited as the NSA’s defenders will. There’s a lot of subjective territory out there once you get past the “US only” mindset.
What’s more troubling is the remainder of the Der Spiegel report, which details the NSA’s and GCHQ’s infiltration of German private companies in order to turn their products into surveillance tools.
One top-secret GCHQ paper claims the agency sought “development of in-depth knowledge of key satellite IP service providers in Germany.”
The document, which is undated, states that the goal of the effort was developing wider knowledge of Internet traffic flowing through Germany. The 26-page document explicitly names three of the German companies targeted for surveillance: Stellar, Cetel and IABG…
Intelligence workers in Bude also appear to have succeeded in infiltrating competitor Cetel. The document states that workers came across four “servers of interest” and were able to create a comprehensive list of customers…
The firm IABG in Ottobrunn appears to have been of particular interest to the intelligence service — at least going by a short notation that only appears next to the Bavarian company’s name. It notes, “this may have already been looked at by NSA NAC,” a reference to the NSA’s network analysis center.
IABG is a private company that performs contract work for the German government, including the military. GCHQ apparently hacked one of its ground satellite stations in order to gain access to communications. The British spy agency has delivered its usual “strict legal and policy framework” response to the leaked documents, which appear to show more corporate espionage being performed under the color of “national security.”
That the NSA and GCHQ would subvert foreign companies in order to access communications is also, sadly, unsurprising. Whether or not this can truly be considered economic espionage remains to be seen, although one German federal prosecutor seems willing to examine that angle.
“I am currently reviewing whether reasonable suspicion even exists for an actionable criminal offense,” [Harald Range] told the newspaper. “Only if I can affirm that can I then address the question of whether a judiciary inquiry would run contrary to the general public interest — a review required for any espionage-related crime” in Germany.
What can be gleaned from this is fact that not buying American means nothing when it comes to NSA/GCHQ-proofing your network. Combined with the recent revelations about the NSA’s infiltration of Huawei, it appears there are few communications companies these two agencies haven’t subverted. Not buying US tech may keep the NSA away momentarily, but the ongoing cooperation of various national intelligence services means it’s only a matter of time.
Here’s Hoping The Supreme Court Does Not Blow Another Opportunity To Fix The Software Patent Problem
Four years ago, the Supreme Court had a chance to establish once and for all whether or not software was patentable. The Bilski case got all sorts of attention as various parties lined up to explain why software patents were either evil, innovation-killing monsters or the sole cause of innovation since the cotton gin and everything in between (only slight exaggeration). Rather than actually answer the question everyone was asking, the Supreme Court decided to rule especially narrowly, rejecting the specific patents at stake in the case and saying that the current test used to determine patentability (the so-called “machine-or-transformation” test) need not be the only test for patentability. However, it declined to say what tests should be used, leaving it up to the lower courts to start ruling blindly, making up new tests as they went along. And muddle along blindly they did — right up to the height of pure absurdism in the CAFC (appeals court that handles patents) ruling in the Alice v. CLS Bank case, in which every single judge disagreed with each other. The ruling was 135 pages of confused mess where all justices only agreed on a single paragraph, which (like Bilski) said this particular patent was invalid, but no one could agree why.
In the wake of this, the Supreme Court agreed to hear the appeal, and once again it appears that tons of folks are lining up on the various sides, pushing the Supreme Court to either validate, toss out or at least provide a more clear test on the patentability of “abstract ideas” within the software context. The specific question the Supreme Court is being asked to resolve is:
Whether claims to computer-implemented inventions – including claims to systems and machines, processes, and items of manufacture – are directed to patent-eligible subject matter within the meaning of 35 U.S.C. § 101 as interpreted by this Court.
The oral arguments were heard earlier today, and, as per usual, reveal little about what the Supreme Court is really thinking (trying to divine which way the court will land based on oral arguments rarely works out well). The Bilski ruling is mentioned repeatedly, and everyone seems to want to bend over backwards to not outlaw “software patents,” but what we really need is for the Supreme Court to issue a clear ruling on what is and what is not patentable in this arena.
If you want to take a look at how we got here, including how the Supreme Court really outlawed software patents decades ago, only to then have the CAFC bring them back (in a big, bad way) while the Supreme Court was looking elsewhere, Tim Lee’s final story at the Washington Post has all of the gory details. Jeff John Roberts, over at GigaOm has a nice compact piece on what’s at stake directly in this case. Meanwhile, even the NY Times has weighed in with an editorial hoping the Supreme Court sets clear rules against abstract ideas being patentable.
Since the messy Bilski ruling, the Supreme Court has taken slightly more aggressive stances in ruling out controversial areas of patenting, including rejecting medical diagnostic patents and gene patents. While companies in both spaces have been trying to get around those rulings, on the whole, they were much clearer and more useful rulings than the messy Bilski ruling on software patents. While the current Supreme Court often seems gun-shy about establishing clear rules of the road on these kinds of issues, preferring to narrowly tailor rulings, hopefully the final ruling in Alice v. CLS Bank will not be the same mess the Bilski ruling left us with, which begat the CAFC’s 135-page mess in Alice.
The Supreme Court had a golden opportunity four years ago to solve a big patent problem… and it blew it. Hopefully, this time it won’t miss the opportunity.
Last week, the US House of Representatives’ Appropriations Committee held an otherwise unremarkable budget hearing on the judiciary. The hearing was recorded and streamed live and then released on YouTube as well as Ustream. However, this morning, Stev… Continue reading
Throughout the whole Ed Snowden ordeal, defenders of the NSA and the surveillance state keep insisting that revealing even the slightest details of the NSA’s capabilities help our enemies “win” because they’ll learn how to avoid the surveillance. As su… Continue reading
Last December, Reuters broke the news that RSA had received $10 million from the NSA to push a weakened crypto standard as the default. This resulted in an incredible amount of backlash against RSA, resulting in many security researchers pulling out of the RSA’s conference (which itself was met by a protest conference).
Security industry pioneer RSA adopted not just one but two encryption tools developed by the U.S. National Security Agency, greatly increasing the spy agency’s ability to eavesdrop on some Internet communications, according to a team of academic researchers.
Reuters reported in December that the NSA had paid RSA $10 million to make a now-discredited cryptography system the default in software used by a wide range of Internet and computer security programs. The system, called Dual Elliptic Curve, was a random number generator, but it had a deliberate flaw – or “back door” – that allowed the NSA to crack the encryption.
A group of professors from Johns Hopkins, the University of Wisconsin, the University of Illinois and elsewhere now say they have discovered that a second NSA tool exacerbated the RSA software’s vulnerability.
The professors found that the tool, known as the “Extended Random” extension for secure websites, could help crack a version of RSA’s Dual Elliptic Curve software tens of thousands of times faster, according to an advance copy of their research shared with Reuters.
As Reuters notes, Extended Random has not been widely adopted (and now won’t be), so the real story here is how the NSA undermines companies (and their aims) under the name of “advising on protection.”
Rather belatedly, RSA officials are developing a sense of skepticism towards the NSA’s motives.
“We could have been more skeptical of NSA’s intentions,” RSA Chief Technologist Sam Curry told Reuters. “We trusted them because they are charged with security for the U.S. government and U.S. critical infrastructure.”
As has been shown numerous times over the last several years, the government would rather make the connected world less secure — by stockpiling exploits and preventing holes from being patched — in the name of “security.” There’s more than one kind of security, and the definition that works for most normal people runs contrary to the NSA’s desire to exploit and collect everything it can.
The NSA has refused to comment on the story and the RSA, for its part, has not disputed what researchers have uncovered. Dual Elliptic Curve is the NSA’s $10 million baby, and the addition of Extended Random does nothing more than make the next set of random numbers easier to predict.
Johns Hopkins Professor Matthew Green said it was hard to take the official explanation for Extended Random at face value, especially since it appeared soon after Dual Elliptic Curve’s acceptance as a U.S. standard.
“If using Dual Elliptic Curve is like playing with matches, then adding Extended Random is like dousing yourself with gasoline,” Green said…
The academic researchers said it took about an hour to crack a free version of BSafe for Java using about $40,000 worth of computer equipment. It would have been 65,000 times faster in versions using Extended Random, dropping the time needed to seconds, according to Stephen Checkoway of Johns Hopkins.
This is what happens when you allow the NSA to not only play with the toys, but to also design them. “Security,” in terms of the RSA’s chosen standard, is now nothing more than a buzzword appended to its product line. The company learned far too late that the intelligence agency has little need for solid encryption, viewing it as an obstacle to be surmounted rather than a defensive tool that might make computing more secure — for everybody.
The agency wants it all and it wants to gather it with the least amount of effort possible. While it may have little desire to turn its weapons on Americans (“incidental collections” will still continue, of course…), it has exactly zero compelling legal reasons not to weaponize crippled encryption against the rest of the world. RSA’s credulousness (and perhaps $10 million) apparently silenced its better judgement, and now the connected world is open not only to the NSA’s exploits, but anyone else with the desire to open the agency’s backdoors.
For years, we’ve pointed out the ridiculousness of how copyright maximalists are always screaming about the need for “anti-piracy” laws to stop infringement, which they insist is killing them. In the US, new anti-piracy laws are proposed (and often passed) every couple of years — and the end result is always the same: infringement continues unabated. But rather than learn from that, and realize that a different approach is needed, maximalists always assume the answer is MOAR ENFORCEMENT!. Despite basically all of human history showing that enforcement is no real solution, including some rather detailed modern evidence, maximalists see enforcement/anti-piracy laws as the only hammer to deal with the infringement nail.
The latest example of this is in Russia, a country that the US attacked for years for its supposedly lax approach to dealing with copyright infringement. However, in the last year or so, Russia has massively ratcheted up its “anti-piracy” laws, giving the government incredible powers to censor sites that it deems infringing. And it’s been using that law, demanding sites be blocked entirely by ISPs. Yet, it appears that both providers of authorized services and government officials (all the way up to Vladimir Putin) are admitting that the law simply hasn’t been “working” to stop infringement or drive people to legitimate services.
But, rather than recognize that perhaps a different approach is needed, the Russians have apparently decided to double-down on the failed policy:
“It is necessary to consider additional steps to protect intellectual property rights,” Putin concluded.
Of course, it should be noted that there is also an ulterior motive in Russia. Putin and others long ago realized that copyright laws are an incredibly effective tool for attacking government critics, stifling dissent and censoring political opponents. And, even better, Russia knows that it can do this with US approval, because the US stupidly keeps demanding Russia do more to fight copyright infringement. So, they keep ratcheting up those laws… and then use them to stifle dissent and censor critics. But… none of it actually drives people to buy legitimate content. But I doubt the Russian government really cares, as that will just give them another excuse to ratchet up those censorship laws for other purposes.
I’ve grown weary of the blog posts and forum rants stating why one programming language is better than another. I don’t mind when languages are compared to help see how they are different or even when one language is argued as better for a very specific situation for a specific reason. I have yet to find (and never expect to find) a programming language that is better than all other languages for all situations (and this includes HTML5). In fact, I have found the contrary to be true: although I definitely have my favorite handful of programming languages, I recognize that a much wider spectrum of programming languages (even some that I don’t personally like) have helped software development as a practice arrive where we are today.
In this blog post, I look at the contributions of several different programming languages to our discipline. In most cases, the listed language was not the very first to introduce the concept or feature, but was the first to make it popular or “mainstream.” The purpose of this post is NOT to state which programming language is best or why one is the best thing since sliced bread while another is the worse thing to ever happen to a software developer. I also don’t cover markup “languages” such as XML or HTML in this post, though they obviously have had significant influence on software development.
Most software developers I know have written some code in some form of BASIC (Beginner’s All Purpose Symbolic Instruction Code). I remember, long before public availability of the Internet or even mice on PCs, typing in Basic code from magazines I received in the mail with code listings for various simple games and PC utilities. Like many developers, Basic was the language that attracted my interest at a relatively young age to programming. It was from my Basic programming that I learned firsthand the dangers of the goto.
C may be the most influential of all programming languages on today’s software development. In Steve Yegge‘s well-known blog post The Next Big Language, Yegge’s #1 rule for the next big programming language is that it has “C-like syntax.” Many people’s favorite programming languages are themselves (interpreter or runtime environment) written in C and many of these languages provide mechanisms (JNI and XS are two examples) for “escaping” to C for performance gains. C also remains one of the most popular and highly used programming languages in the world despite its relatively old age. Wikipedia even has an entry devoted to C-based programming languages.
Although COBOL is not a language you read much about in blogs or articles these days, there is a huge amount of deployed code written in COBOL (Common Business-Oriented Language). In Cobol doesn’t belong in a museum, Ken Powell writes:
I believe that the spirit of Smithsonian’s Cobol debut is not an indication of its antiquity, but rather a testament to its past, as well as its continued success. Just as Edison’s light bulb was a game-changing invention in its day, Cobol has changed the face of computing, and continues to have a tremendous impact on our everyday lives.
John Breeden II also writes of Cobol’s impact on software development in A toast to Cobol, a true computing hero, stating, “Without Cobol, each early computer might have developed its own proprietary computing language. Instead, we started on a path to interoperability that would come in very handy later on.”
C#‘s status as flagship language of Microsoft’s .NET has made it influential out of the box. C#’s syntax and early features also paid homage to and provided evidence of the influence of C, C++, and Java. Although C# borrowed heavily from those languages in its early versions, it also brought its own advancements that were emulated by other languages (in particular by Java). It was Microsoft’s plan for migrating legacy Visual Basic applications to the .NET framework (and making use of C# libraries) that demonstrated on a large scale the advantages that the JVM already offered but were rarely used. The multiple language paradigm on the JVM has become huge in recent years, but Microsoft’s use of the CLR seemed to be the first to bring this idea to mainstream awareness even though the JVM existed before the CLR.
C++ was the object-oriented language for a while, is still heavily used, and has inspired other highly popular object-oriented languages such as C# and Java. C++ has dominated the “system programming” market and changed how many of us think about programming from completely procedural to object-oriented thinking. C++’s direct influence as a popular language in its own right and indirect influence via “child” languages that have reached their own popularity heights are proof of this language’s dramatic influence on software development.
The IBM article Fortran: The Pioneering Programming Language states that Fortran (FORMula TRANslator) “became the first computer language standard, ‘helped open the door to modern computing,’ and may well be the most influential software product in history.” This is an interesting read that I highly recommend for learning more about Fortran’s impact and influence on software development. Fortran has also been called “the first successful high level programming language.”
Along with Lisp, one of the first programming languages many of us think of when discussing functional programming is Haskell. As languages such as Scala, Clojure, and even Java 8 bring functional programming concepts to the JVM, it’s not difficult to see the roots of these features in languages such as Haskell and Lisp. The Why Haskell matters Wiki page states, “Haskell is a modern general purpose language developed to incorporate the collective wisdom of the functional programming community into one elegant, powerful and general language.” There’s even a free online book called Learn You a Haskell for Great Good!
David Chisnall calls Lisp “arguably the most influential programming language of all time” in his post Influential Programming Languages, Part 4: Lisp. Reasons he cites to justify this claim include Lisp being “the very first programming language to provide automatic garbage collection,” Lisp’s introducing “the idea of the read-evaluate-print loop (REPL),” Lisp’s early use of closures/lambdas, and Lisp’s “inspiration for pure functional languages” and “inspiration for a number of object-oriented languages.” In Why Lisp?, Peter Seibel states, “So, on one hand, Lisp is one of computer science’s “classical” languages, based on ideas that have stood the test of time. On the other, it’s a thoroughly modern, general-purpose language whose design reflects a deeply pragmatic approach to solving real problems as efficiently and robustly as possible.”
Like Basic, Pascal is influential on software development because of its wide use as a “learning language.” Aspects of Pascal are also seen in other languages. For example, the Oracle database procedural programming language PL/SQL has always felt eerily similar to Pascal. One might argue that Pascal’s influence is felt more today indirectly via languages such as PL/SQL than via direct use. On a personal note, Pascal is the first language that I used in more than hobbyist fashion (that was Basic’s role for me) as I had high school and college courses that used Pascal and I wrote my first “commercial” application (a sports trading card inventory control system) in Pascal. I still think Pascal offers numerous advantages as a “learning language.”
Perl has been a significant contributor in a wide variety of contexts, especially in early web development (CGI scripts) and in Unix/Linux scripting and development. Perl was often the first taste of a dynamic language for C-style language developers. It also helped many developers to realize the advantage of writing scripts in a language that could be used in all shells rather than using shell-specific scripts. Furthermore, it can be argued that Perl, perhaps more than any other language, has brought the power of regular expressions to the forefront of software development along with some powerful and concise features of sed and awk.
I have no evidence to back this, but it feels to me like Python is the language taking most developers away from using Perl for scripting. There are still countless scripts written in Perl and still be written in Perl, but Python seems to be gaining on the percentage of new scripts being written. There are Python libraries for all types of different domains. For example, in my post Significant Software Development Developments of 2013, I wrote about Python and Big Data. Python seems to appeal to a wide variety of developers in the Java, .NET, C/C++, and other development communities where Python is not the predominant language.
Ruby / Ruby on Rails
Although Ruby on Rails is a framework rather than a language, it is Ruby on Rails that seems to have made Ruby famous outside of Japan and so it’s difficult to talk about Ruby’s influence without considering Ruby on Rails’s influence. Ruby has popularized many object-oriented concepts that were available in other languages that never reached Ruby’s level of adoption. Ruby’s treatment of everything as an object (no primitives) and its powerful use of dynamic mechanisms in conjunction with object-oriented principles made combined object-oriented structure with a dynamic language in ways that Perl’s bolted-on object-orientation could not achieve. Ruby on Rails popularized the concept of configuration by exception that is prevalent today, but was lesser known (Maven, Hibernate, and JavaBeans for example) before Ruby on Rails and the specific and catchy nomenclature of “convention over configuration.”
If we were to measure programming languages by the ratio of influence on other languages and frameworks to existing code base written in that language, Smalltalk might have the highest ratio of them all (though ALGOL would give it a run for its money in terms of code still deployed today). For its relatively small deployed code base, Smalltalk has had tremendous influence of frameworks and much more widely used programming languages (including Java and other object-oriented languages). Smalltalk has influenced other languages’ syntax and concepts (such as everything is an object) and has had obvious influence of today’s IDEs.
I won’t talk much about Visual Basic here because I’ve already touched on it at least tangentially in the Basic and C# coverage, but it has been one of the world’s most popular programming languages at one time and influenced many developers who got their hobbyist and professional starts with that language. It has also influenced software development through early IDE innovations that provided a glimpse of what Java and other programming language IDEs could (and would) become.
The languages described in this section are descriptions I have added since the post was originally published.
Nicolas Frankel‘s (@nicolas_frankel and current DZone Dev of the Week) Tweet reminded me I had forgotten to include Java on my list (despite Java having the most personal influence on me of all the programming languages). I rectify that here with the paragraphs I intended to include in the original post.
Given Java’s ubiquity in academic and professional programming environments, numerous developers have written Java at one time or another and the sheer number of developers exposed to Java conveys its impact on software development in general. Many new language designers still compare and contrast their languages to Java.
Perhaps Java’s biggest influence on programming was its introduction of the JVM and the many benefits associated with a virtual machine. The JVM allowed for better support than most languages had been able to provide for the “write once run anywhere” paradigm. Not only did this increase the ease of portability of Java applications, but it helped many of us start to think that maybe it is best to have data types have the same memory size regardless of the platform for which the application is written. Java’s garbage collection mechanism was an almost-too-good-to-be-true feature for those of us who had primarily been using languages that required developers to carefully manage their own memory deallocation. The ability to manipulate Java byte code after compilation has led to numerous JVM-based dynamic languages and was one of the reasons that aspect-oriented programming was arguably best implemented in Java-based products such as AspectJ and the Spring Framework.
One of the first things that impressed me about Java was the Javadoc mechanism. I loved being able to include in-source comments that were generated into documentation viewable in a web browser. As internet use grew, the availability of the standard JDK API, Java EE API, and libraries’ and frameworks’ APIs online was a huge benefit and many other languages have since emulated this feature.
I had never considered the power of reflection or introspection until using Java. Java continues to add reflection capabilities such as method handles in Java 7 and the new java.lang.reflect.Parameter class in Java 8. The ability to programmtically access details about the internals of the virtual machine and even of running applications themselves was a concept introduced to me by Java’s Java Management Extensions (JMX).
Java’s emergence occurred in the era of we C++ developers (among others) grasping concepts covered in the Gang of Four‘s book Design Patterns: Elements of Reusable Object-Oriented Software. Java introduced features built into the language that formalized some of this book’s concepts for us. In particular, the Java interface makes implementing many of the patterns outlined in that book easier. Java also included features that have led developers to make decisions about coding based on practical experience rather than simply theory. The best example I can think of is Java’s introduction of checked exceptions. Whether loved or hated, Java’s implementation of checked exceptions and unchecked exceptions has helped many developers to form opinions based on actual experience on those concepts.
Thanks goes to Nathan Green and Valery Silaev for also pointing out that I neglected to mention Java. Valery emphasized the same VM advantages Java touted and emphasized trust and performance gains in a virtual machine environment. Nathan had the same thought of me about the virtues of documentation generation from source code that Java made mainstream with Javadoc. Nathan also points out that the JVM supported some (minor in my opinion) languages before .NET was born. I maintain that .NET’s (forced out of necessity but, as Nathan points out, not entirely successful) support of one of the world’s most widely used languages (Visual Basic) being able to call libraries written in the new hotness (C#) was what really helped us to see what was practical and commercially viable on large programs.
Other JVM Languages
I’m not going to single out languages other than Java that run in the JVM in this post, but they are unquestionably influencing software development, particularly among existing Java developers. Groovy has helped me to embrace my inner scripter and Scala has helped me see more clearly the dangers of mutable state and the value of functional programming. Clojure, Kotlin, and Ceylon are also challenging the ways Java developers think and introducing new concepts, some of which even make it into Java itself. These alternate JVM languages bring many of the concepts and influences of non-Java languages (Ruby, Lisp, Erlang, etc.) to the Java developer without leaving the comfort of the JVM. The best examples of this last point are JRuby (for Ruby) and Jython (for Python).
In my post Why PHP Will Be My Next Language, I wrote about some of the reasons I was giving PHP another chance after really not liking what I saw when I first looked at it in the late 1990s. In many ways, I think that same post is a reflection of how PHP has been positively impacted by developers’ experiences with other languages and cultures. There is no doubt that PHP has had a huge impact on web development. PHP has been a “gateway language” for many new web developers. It’s easy mixing of presentation and server side logic has irritated some of us, but been seen as an advantage to others. It has reminded me that no rules in software development are absolute.
Numerous major web platforms are built on PHP and provide PHP APIs. The ubiquity of these necessarily means that developers cannot help but use and be influenced by PHP as they write for these platforms. It is interesting to me that the web page Past programming languages and their influences on today’s languages and programming paradigms is powered by PHP even though PHP is not mentioned specifically in the article. It sounds something like a Java-oriented blog not featuring Java as one of its languages that has contributed to software development.
Thanks goes to Valery Silaev for mentioning my neglect of PHP in this original post.
The recent interview article “Security is one of the biggest problems for the IoT right now” reminded me that I missed Ada on my list. Although Ada today fits Jamie Ayre’s description in that article (“[Ada]’s certainly a niche language, it’s not C, it’s not Java”.), Ada was much bigger historically and has had tremendous impact on software development. AdaCore‘s description of Ada states, Ada is a modern programming language designed for large, long-lived applications – and embedded systems in particular – where reliability and efficiency are essential. … Ada 95 was the first internationally standardized (ISO) Object-Oriented Language.”
Erlang is described on its main web page as “a programming language used to build massively scalable soft real-time systems with requirements on high availability.” The Don’t Drink Too Much Kool-Aid section of Learn Us Some Elang for Great Good! does a nice job of contrasting what Erlang is good for with what it’s not as good for. Erlang’s concurrency-oriented models have influenced developers and other languages. Why Erlang Matters and Why I Program in Erlang are also interesting reads about Erlang and its influence on developers.
Software developers today have more programming languages to choose from than ever before. No one language is best in every situation and the variety of languages with different sets of advantages and disadvantages provides the consumer (developers) with many choices. Competition is good for the consumer and has driven improvements in the languages we use. One of the advantages of working with different programming languages is the ability to learn paradigms and concepts that can be applied to some degree in the work we do even with other programming languages. Although I definitely prefer some languages over others, I recognize that all major programming languages have their faults (or situations they aren’t the best fit for) and all major programming languages have their advantages (or situations where they are one of the best fits for).
I undoubtedly missed several important programming languages in this post and also undoubtedly missed several important features of some of the covered languages that have impacted software development in general. Feedback adding these languages or language features is greatly appreciated.
- The Most Influential Programming Languages of All Time
- The Graph of Programming Languages
- A Chronology of Influential Computer Languages
- Cobol Doesn’t Belong in a Museum
- Fortran: The Pioneering Programming Language
- Influential Programming Languages, Part 1: ALGOL
- Influential Programming Languages, Part 2: Simula
- Influential Programming Languages, Part 3: Smalltalk
- Influential Programming Languages, Part 4: Lisp
- Past programming languages and their influences on today’s languages and programming paradigms
Original posting available at http://marxsoftware.blogspot.com/ (Inspired by Actual Events)