diff options
Diffstat (limited to 'web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.chtml')
-rw-r--r-- | web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.chtml | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.chtml b/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.chtml new file mode 100644 index 0000000..afc5885 --- /dev/null +++ b/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.chtml @@ -0,0 +1,269 @@ +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<base href="http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/"><div style="background:#fff;border:1px solid #999;margin:-1px -1px 0;padding:0;"><div style="background:#ddd;border:1px solid #999;color:#000;font:13px arial,sans-serif;font-weight:normal;margin:12px;padding:8px;text-align:left">This is Google's cache of <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/" style="text-decoration:underline;color:#00c">http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/</a>. It is a snapshot of the page as it appeared on Dec 7, 2011 21:53:20 GMT. The <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/" style="text-decoration:underline;color:#00c">current page</a> could have changed in the meantime. <a href="http://www.google.com/intl/en/help/features_list.html#cached" style="text-decoration:underline;color:#00c">Learn more</a><br><br><div style="float:right"><a href="http://webcache.googleusercontent.com/search?q=cache:http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/+lukeshu.ath.cx&hl=en&strip=1" style="text-decoration:underline;color:#00c">Text-only version</a></div> +<div> </div></div></div><div style="position:relative"> +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" > +<head> + <title>Java has issues | ltsBlog</title> + <link href="/1/lts.css" rel="stylesheet" type="text/css" media="screen,projection" /> + <link href="http://lukeshu.ath.cx/1/wordpress/wp-content/themes/lts/style.css" rel="stylesheet" type="text/css" media="all" /> + <link href="http://lukeshu.ath.cx/1/wordpress/wp-content/themes/lts/widgets.css" rel="stylesheet" type="text/css" media="screen,projection" /> + <link rel="pingback" href="http://lukeshu.ath.cx/1/wordpress/xmlrpc.php" /> +<link rel="alternate" type="application/rss+xml" title="ltsBlog » Feed" href="http://lukeshu.ath.cx/1/wordpress/feed/" /> +<link rel="alternate" type="application/rss+xml" title="ltsBlog » Comments Feed" href="http://lukeshu.ath.cx/1/wordpress/comments/feed/" /> +<link rel="alternate" type="application/rss+xml" title="ltsBlog » Java has issues Comments Feed" href="http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/feed/" /> +<script type='text/javascript' src='http://lukeshu.ath.cx/1/wordpress/wp-includes/js/l10n.js?ver=20101110'></script> +<script type='text/javascript' src='http://lukeshu.ath.cx/1/wordpress/wp-includes/js/comment-reply.js?ver=20090102'></script> +<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://lukeshu.ath.cx/1/wordpress/xmlrpc.php?rsd" /> +<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://lukeshu.ath.cx/1/wordpress/wp-includes/wlwmanifest.xml" /> +<link rel='index' title='ltsBlog' href='http://lukeshu.ath.cx/1/wordpress/' /> +<link rel='start' title='Lesson 1: Bourne Shell Scripting' href='http://lukeshu.ath.cx/1/wordpress/2010/09/hello-world/' /> +<link rel='prev' title='FUSE is crazy' href='http://lukeshu.ath.cx/1/wordpress/2010/11/fuse-is-crazy/' /> +<link rel='next' title='Pointers in Java' href='http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/' /> +<meta name="generator" content="WordPress 3.2.1" /> +<link rel='canonical' href='http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/' /> +<link rel='shortlink' href='http://lukeshu.ath.cx/1/wordpress/?p=49' /> + +</head> + +<body> + <div class="nocss"> + <ul> + <li><a href="#navigation">Skip to Navigation</a></li> + <li><a href="#content">Skip to Content</a></li> + <li><a href="#footer">Skip to Disclaimer</a></li> + </ul> + </div> + + + <h1><a href="http://lukeshu.ath.cx/1/wordpress/" title="ltsBlog" rel="home">ltsBlog</a></h1> + + <div class="nav"><a class="nocss" id="navigation"></a> + <ul> + <li><a href="/1/">Home</a></li> + <li><a href="/1/FRC/">Robots</a></li> + <li><a href="/1/img/">Pictures</a></li> + <li><a href="/1/wordpress/">Weblog</a></li> + <li><a href="/1/comicjk/viewer.php">Comic JK</a></li> + </ul> + </div> + + + + <div class="sidebar widget-area"> + <ul class="xoxo"> +<li id="search-2" class="widget-container widget_search"> <form method="get" id="searchform" action="/1/wordpress/" > + <div> + <label class="screen-reader-text" for="s">Search ltsBlog:</label> + <input type="text" value="" name="s" id="s" /> + <input type="submit" id="searchsubmit" value="Search" /> + </div> + </form> +</li> <li id="statusnetwidget-4" class="widget-container widget_statusnetwidget"> <span class="widget-title">Me on identi.ca</span> <ul class="statusnet"><li class="statusnet-item">Someone egged a bunch of cars in our neighborhood. <span class="statusnet-timestamp"><abbr title="2011/12/03 05:58:48"><a href="http://identi.ca/notice/86136803">2011/12/03</a></abbr></span></li><li class="statusnet-item"><a href="http://identi.ca/group/git">!git</a>. is. such. win. <span class="statusnet-timestamp"><abbr title="2011/11/27 20:32:11"><a href="http://identi.ca/notice/85848970">2011/11/27</a></abbr></span></li><li class="statusnet-item">My favorite sites could get shut down by 1st censorship system for the internet. Must stop it: 11/16 <a href="http://ur1.ca/5qyod">http://ur1.ca/5qyod</a> <span class="statusnet-timestamp"><abbr title="2011/11/16 12:46:11"><a href="http://identi.ca/notice/85359960">2011/11/16</a></abbr></span></li><li class="statusnet-item">One of these days I'll hack <a href="http://identi.ca/group/emacs">!emacs</a> daemon to expose the server via 9p. <span class="statusnet-timestamp"><abbr title="2011/11/03 21:51:32"><a href="http://identi.ca/notice/84892668">2011/11/03</a></abbr></span></li></ul> </li> <li id="recent-posts-2" class="widget-container widget_recent_entries"> <span class="widget-title">Recent Posts</span> <ul> + <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/08/fixing-wrong-type-argument-characterp-return-in-emacs/" title="Fixing “Wrong type argument: characterp, return” in !Emacs">Fixing “Wrong type argument: characterp, return” in !Emacs</a></li> + <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/" title="[Emacs] autopair problems when using term-mode">[Emacs] autopair problems when using term-mode</a></li> + <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/" title="Why `sed -i’ exists">Why `sed -i’ exists</a></li> + <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/02/questions-about-copyright-of-the-deceased/" title="Questions about copyright of the deceased">Questions about copyright of the deceased</a></li> + <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/" title="Pointers in Java">Pointers in Java</a></li> + </ul> + </li><li id="recent-comments-2" class="widget-container widget_recent_comments"><span class="widget-title">Recent Comments</span><ul id="recentcomments"><li class="recentcomments"><a href='http://lukeshu.ath.cx/1/wordpress/2011/08/fixing-wrong-type-argument-characterp-return-in-emacs/' rel='external nofollow' class='url'>Fixing “Wrong type argument: characterp, return” in !Emacs | ltsBlog</a> on <a href="http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/#comment-94">[Emacs] autopair problems when using term-mode</a></li><li class="recentcomments"><a href='http://lukeshu.ath.cx' rel='external nofollow' class='url'>lts</a> on <a href="http://lukeshu.ath.cx/1/wordpress/2010/09/hello-world/#comment-58">Lesson 1: Bourne Shell Scripting</a></li><li class="recentcomments"><a href='http://lukeshu.ath.cx' rel='external nofollow' class='url'>lts</a> on <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/#comment-56">Pointers in Java</a></li><li class="recentcomments">Ari Consul on <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/#comment-54">Pointers in Java</a></li><li class="recentcomments">Jade Parsons on <a href="http://lukeshu.ath.cx/1/wordpress/2010/09/hello-world/#comment-52">Lesson 1: Bourne Shell Scripting</a></li></ul></li><li id="archives-2" class="widget-container widget_archive"><span class="widget-title">Archives</span> <ul> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/08/' title='August 2011'>August 2011</a></li> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/05/' title='May 2011'>May 2011</a></li> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/02/' title='February 2011'>February 2011</a></li> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/01/' title='January 2011'>January 2011</a></li> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2010/11/' title='November 2010'>November 2010</a></li> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2010/10/' title='October 2010'>October 2010</a></li> + <li><a href='http://lukeshu.ath.cx/1/wordpress/2010/09/' title='September 2010'>September 2010</a></li> + </ul> +</li><li id="categories-2" class="widget-container widget_categories"><span class="widget-title">Categories</span> <ul> + <li class="cat-item cat-item-8"><a href="http://lukeshu.ath.cx/1/wordpress/category/computers/" title="View all posts filed under Computers">Computers</a> +</li> + <li class="cat-item cat-item-7"><a href="http://lukeshu.ath.cx/1/wordpress/category/school-2/essays/" title="View all posts filed under Essays">Essays</a> +</li> + <li class="cat-item cat-item-12"><a href="http://lukeshu.ath.cx/1/wordpress/category/morning-pages/" title="View all posts filed under morning-pages">morning-pages</a> +</li> + <li class="cat-item cat-item-9"><a href="http://lukeshu.ath.cx/1/wordpress/category/computers/programming-lessons/" title="View all posts filed under Programming Lessons">Programming Lessons</a> +</li> + <li class="cat-item cat-item-6"><a href="http://lukeshu.ath.cx/1/wordpress/category/school-2/" title="View all posts filed under School">School</a> +</li> + <li class="cat-item cat-item-1"><a href="http://lukeshu.ath.cx/1/wordpress/category/uncategorized/" title="View all posts filed under Uncategorized">Uncategorized</a> +</li> + </ul> +</li><li id="meta-2" class="widget-container widget_meta"><span class="widget-title">Meta</span> <ul> + <li><a href="http://lukeshu.ath.cx/1/wordpress/wp-login.php?action=register">Register</a></li> <li><a href="http://lukeshu.ath.cx/1/wordpress/wp-login.php">Log in</a></li> + <li><a href="http://lukeshu.ath.cx/1/wordpress/feed/" title="Syndicate this site using RSS 2.0">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li> + <li><a href="http://lukeshu.ath.cx/1/wordpress/comments/feed/" title="The latest comments to all posts in RSS">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li> + <li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li> + </ul> +</li><li id="ltshomewidget-3" class="widget-container widget_ltshomewidget"> <ul class="lts_sidebar"> + <li><a href="http://www.defectivebydesign.org/intel"><img src="http://static.fsf.org/nosvn/dbd/stop-intel-med.png" alt="stop Intel" /></a></li> + <li> +<!-- Beginning of Project Wonderful ad code: --> +<!-- Ad box ID: 51613 --> +<script type="text/javascript"> +<!-- +var pw_d=document; +pw_d.projectwonderful_adbox_id = "51613"; +pw_d.projectwonderful_adbox_type = "4"; +pw_d.projectwonderful_foreground_color = ""; +pw_d.projectwonderful_background_color = ""; +//--> +</script> +<script type="text/javascript" src="http://www.projectwonderful.com/ad_display.js"></script> +<!-- End of Project Wonderful ad code. --> +</li> + </ul> +</li> + </ul> + </div><!-- .sidebar --> + + + + + <div class="main"><a class="nocss" id="content"></a> + + <div id="nav-above" class="navigation"> + <div class="nav-previous"><a href="http://lukeshu.ath.cx/1/wordpress/2010/11/fuse-is-crazy/" rel="prev"><span class="meta-nav">←</span> FUSE is crazy</a></div> + <div class="nav-next"><a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/" rel="next">Pointers in Java <span class="meta-nav">→</span></a></div> + </div><!-- #nav-above --> + + <div id="post-49" class="post-49 post type-post status-publish format-standard hentry category-computers"> + <h2 class="entry-title">Java has issues</h2> + <div class="entry-meta"> + <span class="meta-prep meta-prep-author">Posted on</span> <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/" title="22:47" rel="bookmark"><span class="entry-date">2011/01/03</span></a> <span class="meta-sep">by</span> <span class="author vcard"><a class="url fn n" href="http://lukeshu.ath.cx/1/wordpress/author/lts/" title="View all posts by lts">lts</a></span> + </div><!-- .entry-meta --> + <div class="entry-content"> +<p class="aside">This was originally posted to Facebook by me at 2010-09-02 23:19. It was edited by me there 2010-07-03.</p> +<p>Java is an alright language. There are a lot of things it does right, but there<br /> +are a few things it doesn’t.</p> +<ol> +<li>Distinction between classes and packages. I should be able to create<br /> + sub-classes the same way as I add classes to a package; a package should<br /> + just be an empty class.</li> +<li>Too many primitives. I should be able to (re-)construct more of the<br /> + language.</li> +<li>No preprocessor/inlines. OO isn’t an excuse for this, make me do it at the<br /> + class level (or rather, source file, not supporting `#include’ is fine). I<br /> + should at least be able to add `#define int8=byte’ like in C. This<br /> + wouldn’t be as much of an issue if all these things weren’t primitives; I<br /> + could just do “public class int8 extends byte”. (yes, I could extend the<br /> + `Byte’ class, but it wouldn’t come with all the syntactic sugar primitives<br /> + get.)</li> +<li>Numbers: names. Yes the names used are long-standing convention in CS.<br /> + These include some of the worst short-sighted mistakes in all of<br /> + hackerdom… because they stuck. Yet, most reasonable languages can still<br /> + support them, and sane equivalents.</p> +<ul> +<li>byte -> int8</li> +<li>short -> int16</li> +<li>int -> int32</li> +<li>long -> int64</li> +<li>float -> float32</li> +<li>double -> float64</li> +</ul> +<p> This would easily be fixed if they weren’t all primitives (point 2), or if<br /> + I had a preprocessor (point 3).</li> +<li>Numbers: unsigned. How about unsigned integers (uint16)? This would be<br /> + easy to implement, if everything weren’t a damn primitive.</li> +<li>Give me an actual `struct’, like in C. I’m not asking for full manual<br /> + memory management, just the ability to organize a chunk of it; you can<br /> + still manage it for me. It would make serialization hellofalot<br /> + easier.</li> +<li>It’s inconsistent about whether it uses the system encoding or it’s<br /> + internal encoding. The String object just became worthless to anyone<br /> + wanting to do any amount of I18N.</li> +<li>It’s internal encoding is junk. It maps UTF-16 symbols onto the `char’<br /> + primitive, which is 16 bits.</p> +<ol> +<li>UTF-16 is junk, use UTF-8</li> +<li>With any UTF encoding you must allow for a dynamic bit-length, for<br /> + UTF-16 it’s 16-32 bits, UTF-8 is 8-32 bits</li> +</ol> +<p> I understand how/why it arrived at the solution it uses; at the time Java<br /> + was designed, it was using UCS-2, which is a 16-bit encoding, and was<br /> + superseded by UTF-16 in 1996 with Unicode 2.0. However, this is one of<br /> + those things where you specify a new JVM version, and switch to UTF-8. You<br /> + can even leave a legacy mode in the JVM that still uses UCS-2.</li> +<li>Octal prefix: `0′ is used as the prefix to specify an octal literal. Any<br /> + third-grader can tell you why using a 0 as a prefix to a number is a bad<br /> + idea; the number might just have padded zeros. Let’s look at the prefix<br /> + used for hexadecimal: `0x’. This is great:</p> +<ol> +<li>It starts with a numeric character, which means that it must be a<br /> + literal. If it started with an alphabetic character, it might be a<br /> + variable name.</li> +<li>The second character is a alphabetic character that is not used in<br /> + any number system that is used in computer science. This allows it<br /> + to serve a a unique identifier.</li> +</ol> +<p> Given these reasons, let’s think of a new prefix for octal… how about<br /> + `0o’. That took literally less than 10 seconds for me to realize why `0′<br /> + sucked, and to think of a better one.<a href="#java-problems-f1">*</a></li> +</ol> +<p>All-in-all, its still better than C++</p> +<p><span id="java-problems-f1">*</span> although, writing this gave me an even<br /> +better idea, but it would break `0x<value>’ for hex, which is incredibly<br /> +common among many languages:<br /> +`<base-in-decimal>x<value>’<br /> +so octal would be `8x<value>’<br /> +and hex would be `16x<value>’<br /> +It would be incredibly understandable, and, depending on implementation allow<br /> +simple arbitrary-base literals.</p> + + </div><!-- .entry-content --> + <div class="entry-links"> + + </div> + + <div class="entry-utility"> + This entry was posted in <a href="http://lukeshu.ath.cx/1/wordpress/category/computers/" title="View all posts in Computers" rel="category tag">Computers</a>. Bookmark the <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/" title="Permalink to Java has issues" rel="bookmark">permalink</a>. + + </div><!-- .entry-utility --> + </div><!-- #post-## --> + + <div id="nav-below" class="navigation"> + <div class="nav-previous"><a href="http://lukeshu.ath.cx/1/wordpress/2010/11/fuse-is-crazy/" rel="prev"><span class="meta-nav">←</span> FUSE is crazy</a></div> + <div class="nav-next"><a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/" rel="next">Pointers in Java <span class="meta-nav">→</span></a></div> + </div><!-- #nav-below --> + + + + <div id="comments"> + <div id="respond"> + <h3 id="reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/1/wordpress/2011/01/java-has-issues/#respond" style="display:none;">Cancel reply</a></small></h3> + <form action="http://lukeshu.ath.cx/1/wordpress/wp-comments-post.php" method="post" id="commentform"> + <p class="comment-notes">Your email address will not be published. Required fields are marked <span class="required">*</span></p> <p class="comment-form-author"><label for="author">Name</label> <span class="required">*</span><input id="author" name="author" type="text" value="" size="30" aria-required='true' /></p> +<p class="comment-form-email"><label for="email">Email</label> <span class="required">*</span><input id="email" name="email" type="text" value="" size="30" aria-required='true' /></p> +<p class="comment-form-url"><label for="url">Website</label><input id="url" name="url" type="text" value="" size="30" /></p> + <p class="comment-form-comment"><label for="comment">Comment</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p> <p class="form-allowed-tags">You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> </code></p> <p class="form-submit"> + <input name="submit" type="submit" id="submit" value="Post Comment" /> + <input type='hidden' name='comment_post_ID' value='49' id='comment_post_ID' /> +<input type='hidden' name='comment_parent' id='comment_parent' value='0' /> + </p> + </form> + </div><!-- #respond --> + + </div><!-- #comments --> + + </div> +<div class='footer'><a class='nocss' id='footer'></a> + <div class="site-generator">
+ <a href="http://wordpress.org/" title="Semantic Personal Publishing Platform" rel="generator" class="site-generator">Powered by WordPress.</a>
+ </div>
+<p class="valid">Valid <a href="http://validator.w3.org/check?uri=http%3A%2F%2Flukeshu.ath.cx%2F1%2Fwordpress%2Findex.php" id="link_validate_html">XHTML</a> + and <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Flukeshu.ath.cx%2F1%2Fwordpress%2Findex.php" id="link_validate_css" >CSS</a>. + <br /><a href="/0/wordpress/index.php">Show (server side) source</a> +</p> + <p class='copyright'>Copyright © 2010, 2011 Luke Shumaker</p> + <p class='license'>Verbatim copying and distribution of + this entire article are permitted worldwide, without + royalty, in any medium, provided this notice, and the + copyright notice, are preserved.</p> +</div> +
+</body>
+</html>
+ + |