summaryrefslogtreecommitdiff
path: root/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.html')
-rw-r--r--web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.html266
1 files changed, 266 insertions, 0 deletions
diff --git a/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.html b/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.html
new file mode 100644
index 0000000..99e751c
--- /dev/null
+++ b/web/lukeshu.ath.cx/1/wordpress/2011/01/java-has-issues/index.html
@@ -0,0 +1,266 @@
+<?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 &raquo; Feed" href="http://lukeshu.ath.cx/1/wordpress/feed/" />
+<link rel="alternate" type="application/rss+xml" title="ltsBlog &raquo; Comments Feed" href="http://lukeshu.ath.cx/1/wordpress/comments/feed/" />
+<link rel="alternate" type="application/rss+xml" title="ltsBlog &raquo; 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 &#8220;Wrong type argument: characterp, return&#8221; in !Emacs">Fixing &#8220;Wrong type argument: characterp, return&#8221; 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&#8217; exists">Why `sed -i&#8217; 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 &#8220;Wrong type argument: characterp, return&#8221; 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">&larr;</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">&rarr;</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&#8217;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&#8217;t an excuse for this, make me do it at the<br />
+ class level (or rather, source file, not supporting `#include&#8217; is fine). I<br />
+ should at least be able to add `#define int8=byte&#8217; like in C. This<br />
+ wouldn&#8217;t be as much of an issue if all these things weren&#8217;t primitives; I<br />
+ could just do &#8220;public class int8 extends byte&#8221;. (yes, I could extend the<br />
+ `Byte&#8217; class, but it wouldn&#8217;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&#8230; because they stuck. Yet, most reasonable languages can still<br />
+ support them, and sane equivalents.</p>
+<ul>
+<li>byte -&gt; int8</li>
+<li>short -&gt; int16</li>
+<li>int -&gt; int32</li>
+<li>long -&gt; int64</li>
+<li>float -&gt; float32</li>
+<li>double -&gt; float64</li>
+</ul>
+<p> This would easily be fixed if they weren&#8217;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&#8217;t a damn primitive.</li>
+<li>Give me an actual `struct&#8217;, like in C. I&#8217;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&#8217;s inconsistent about whether it uses the system encoding or it&#8217;s<br />
+ internal encoding. The String object just became worthless to anyone<br />
+ wanting to do any amount of I18N.</li>
+<li>It&#8217;s internal encoding is junk. It maps UTF-16 symbols onto the `char&#8217;<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&#8217;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&#8242; 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&#8217;s look at the prefix<br />
+ used for hexadecimal: `0x&#8217;. 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&#8217;s think of a new prefix for octal&#8230; how about<br />
+ `0o&#8217;. That took literally less than 10 seconds for me to realize why `0&#8242;<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&lt;value&gt;&#8217; for hex, which is incredibly<br />
+common among many languages:<br />
+`&lt;base-in-decimal&gt;x&lt;value&gt;&#8217;<br />
+so octal would be `8x&lt;value&gt;&#8217;<br />
+and hex would be `16x&lt;value&gt;&#8217;<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">&larr;</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">&rarr;</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>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt; </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 &copy; 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>
+
+