In Between the Curly Braces
After Java and C# - what is next?
by Klaus Kreft and Angelika Langer
July 3, 2003
Summary
Java and C# are almost identical programming languages. Boring repetition that lacks innovation. Where is the revolutionary programming language that will stop the redundancy?
The industry is spinning in circles inventing one "curly brace" language after another - C++, Java, C#, ... The popular object-oriented programming languages of today fatally remind us of the heyday of procedural languages: in the 60ies, a cluster of very similar languages (Fortran, PL/I, COBOL, Algol) dominated the IT business, until the advent of C changed the world. Finally, a language invented by programmers for programmers! C was a revolution; Java and C# are just evolution. Where is the C language of our times?
Hardly anybody will claim that Java or C# are revolutionary programming languages that changed the way we write programs. Especially the new kid on the block - C# - is so extremely redundant that one wonders why both Java and C# are in existence. Do we really need yet another curly brace language? Why would anybody want to explore a "novel" language that offers the old set of language features? Yes, there are some minor differences between C# and Java: C# does not have an equivalent to Java's nonstatic inner classes; Java does not treat events and delegates as first-class members of a type; C# has user-defined value types. Fine! But the list of commonalities is significantly longer than the list of differences. C# borrowed a lot from Java - and vice versa. Now that C# supports boxing and unboxing, we'll have a very similar feature in Java. Have we desperately been waiting for autoboxing in Java? Certainly not. Perhaps, we've been eagerly awaiting Java generics, which - surprise, surprise - look pretty much like generics in C#. Alas, if at least they were the same! But no, every language designer can't resist and must do a little different in order to demonstrate that his language feature is more convenient, more effecient, more powerful, ... well, just better ... than the corresponding one in the "other" language.
Is the existence of redundant languages any good? Does it help programmers in any way? Do we profit from having a choice between Java and C#? In contrast to the respective language designers we do not believe that one language is superior to the other. The fact that Java and C# are so similar is tiring and the fact that they are different makes it even worse.
Why is it that such redundant languages are invented and promoted? Is it because Java and C# are corporate languages? Okay, both respective comporations will instantly deny that their languages are proprietary. After all C# is an ECMA standard and Java is enhanced through its community process. Yet, without Sun and Microsoft neither language would exist.
Corporate languages are often developed under the pressure of competition, at the risk of throwing out a new feature although it's still immature. Corporate languages carry around a lot of baggage because they must be backward, forward, or otherwise compatible to some piece of legacy code. Deficiencies once introduced can never be taken back. Think of the miserable Cloneable interface in Java that does not allow you to call a clone() method; it's the standing joke in every Java class and the example for a highly debatable interface. Or take the inconsistency between comparison and equality: we can support several sorting orders via comparators, but we can only have one notion of equality via equals(). Why? This is painfully inconsistent, causes quite a bit of headache at times and will never be repaired, because it is so for "historical reasons". Such a tribute to its legacy is typical for corporate languages; they grow and grow and become more and more unwieldy. Is C# any different? Slightly, but not fundamentally.
In essence, Java and C# feel like PL/I and consorts: PL/I was an attempt to combine the best features of Fortran, COBOL and ALGOL and was developed by George Radin of IBM in 1964. Java was an attempt to combine the best features of C++ and Smalltalk and was developed by James Gosling of Sun Microsystems in 1995. C# is an attempt to combine the best features of C++, Visual Basic and Java and was developed by Anders Hejlsberg of Microsoft in 2000. Will the next language be an attempt to combine ... ?
In the early '70ies the dominance of PL/I and its look-alikes ended with the advent of C. The C programming language was everything but a deliberately invented corporate language based on combinations of existing ideas. Quite the converse. C was a by-product of the Unix development and was created on a tiny machine as a tool to improve a meager programming environment. Seemingly it covered the essential needs of many programmers at that time without trying to supply too much. It was successful to an extent far surpassing any expectations and changed the way programs were written.
Will there be a revolutionary language like C again - invented by programmers rather than corporations? A language that will be fun and exciting to use - free of baggage, convenient, consistent, comprehesible? What would it look like? Do we need such an innovation, or are we happy anyway and cannot even think of a language better than Java or C#?
Talk Back!
Have an opinion? Readers have already posted 45 comments about this weblog entry. Why not add yours?
RSS Feed
If you'd like to be notified whenever Klaus Kreft and Angelika Langer add a new entry to their weblog, subscribe to their RSS feed.
About the Bloggers
|
Klaus Kreft has been developing software solutions for almost 20 years in domains ranging from embedded systems programming for the telecommunications industry to web-based business applications in the banking and insurance sector. He served as a systems architect on several successful large-scale projects. His passion is building solutions in time that work reliably and meet the customer's needs. He currently works as a Senior Consultant at Siemens Business Services in Germany. |
|
Angelika Langer works as an independent freelance trainer, mentor, and consultant with a course curriculum of her own and conducts seminars in Europe and Northern America. Her current work is backed by more than a decade of experience as a software engineer working for German and US companies, among them sevaral years in telecommunications and later in compiler construction at Siemens and 1.5 year in library development at Rogue Wave Software. Compiler construction got her involved into the standardization of C++ and in 1993 she joined the standards committee. When Java appeared in 1995 she immediately pounced on the new language. Since then she is truly bilingual, using both languages in parallel, and inevitably mixing up the syntax at times, naturally looking forward to adding a third curly brace language to the skill set, just to increase the confusion. In 1997 she decided that 13 years of sitting in front of a computer day in and day out were enough (at least for her taste) and she shifted her focus to training, coaching, and mentoring. |
This weblog entry is Copyright © 2003 Klaus Kreft and Angelika Langer. All rights reserved.
分享到:
相关推荐
赠送jar包:flatbuffers-java-1.12.0.jar; 赠送原API文档:flatbuffers-java-1.12.0-javadoc.jar; 赠送源代码:flatbuffers-java-1.12.0-sources.jar; 赠送Maven依赖信息文件:flatbuffers-java-1.12.0.pom; ...
He is a Sun Certified Java Programmer and Oracle Certified SQL Database Expert. He completed an MS in computational science and engineering at Georgia Tech, USA (rank 7th in the world for computer ...
You will find this book to be useful long after new versions of JMX become available because the concepts introduced here are classic applications of management concepts and technologies to the Java ...
一个很强大的工具, 能将c#代码片段、文件甚至工程直接转换成java代码,并能彻底解决外部引用的DLL问题,最强的是支持c#工程的直接转换,生成的Java代码质量也很不错。软件已破解,去除了未注册版最多只能转换1000行的...
After quickly taking you through C# and how .NET works, we'll dive into the .NET Standard 1.6 class libraries, covering topics such as performance, monitoring, debugging, serialization and encryption....
- There is a pen and two pencils on the desk. 桌子上有一支钢笔和两支铅笔。 通过系统地学习和练习这些知识点,初一至初三的学生可以逐步提高英语水平,为中考做好充分准备。理解并熟练运用这些基本概念,将有...
`isBefore()`, `isAfter()`, 和 `isEqual()` 方法可用于比较两个日期或时间。 此外,`java.time.Period`和`java.time.Duration`用于处理日期和时间的间隔。`Period`适用于年、月和日,而`Duration`适用于小时、分钟...
My name is Jorge Acetozi, and I’m a Brazilian software engineer who has worked for many years as a Java developer. During my career, I have been interested in subjects such as these: • Linux • ...
JodConverter一个Java的OpenDocument 文件转换器,可以进行许多文件格式的转换,它利用OpenOffice所提供的转换介面来进行转换工作,它能进行以下的转换工作: 一、Microsoft Office格式转换为OpenDocument,以及...
// Java2DFrameConverter and OpenCVFrameConverter, one after the other. // - Java2DFrameConverter also has static copy() methods that we can use to transfer // data more directly between ...
- What day is it today?:今天星期几? - It’s ??:它是... - What lessons do you have on???:你...上什么课? - I have ??:我有... - We don’t have any lessons:我们没有任何课 - When do you get ...
Hands-On Network Programming with C# and .NET Core: A comprehensive guide to understanding network architecture, communication protocols, and network analysis to build secure applications compatible ...
(C) c语言入门 c语言入门 c语言入门 c语言入门 c语言入门
After two chapters on XML basics, including XPath, XSL, DTDs, and XML Schema, the rest of the book focuses on using XML from your Java applications. This third edition of Java and XML covers all major...
16. What colour is it (are they)? It’s (They’re)… - 它/它们是什么颜色?它是/它们是... 17. Whose …is this? It’s…. - 这是谁的...?它是... 18. What time is it? It’s…. - 几点了?现在是... 三、...
15. What colour is it (are they)? It’s (They’re)… - 它(它们)是什么颜色?它是(它们是)... 16. Whose …is this? It’s…. - 这是谁的...?这是... 17. What time is it? It’s…. - 几点了?现在是... ...
His name is Tom (划线部分提问) - What is his name? - 3. Please read this book. (否定句) - Please don't read this book. - 4. Please look after this dog. (同义句) - Please take care of this dog. 8. ...
from an unparalleled team of authors Get ready for the next release of Microsoft's C# programming language with "Professional C# 2010," the ultimate guide to C# 4 and the revised .NET framework....
After quickly taking you through C# and how .NET works, we'll dive into the internals of the .NET class libraries, covering topics such as performance, monitoring, debugging, internationalization, ...
- What is she going to do after school? (对动作提问,用what提问) - Who is going to see a play the day after tomorrow? (对主语提问,用who代替My father and mother) 3. 适当形式填空: - We are going ...