ヘミングウェイがJavaScriptで書いたらどうなるでしょう

If Hemingwayの翻訳はJavaScriptを書きました



この記事は私の良き友人で同僚のAgnus Krollによって書かれました。 AgnusはTwitterの基本機能の開発チームで働いており、あらゆる種類の会議に参加し、JavaScriptに関する素晴らしいブログを持っています。 さらに、彼はフィクションの大ファンであり、彼が文学の観点からプログラミングについて何かを書いたらクールだと思いました。



コードの最初の行を書くずっと前から、フィクションが大好きでした。 今、私はJavaScriptでたくさん書いており、さらに、これについての本も書いています。



それで、非常に多くの文学ファンを引き付けるJavaScriptについてはどうでしょうか? 私は、限られた構文の表現力の可能性に関連するいくつかの愚かな理論を持っていますが、それについてはまた別の時に。 偉大な作家を見てみましょう:もし彼らがJavaScriptで書いたらどうでしょう? ヘミングウェイの経験豊富なファンとして、彼はプログラミング(およびプログラマー)を嫌う可能性が最も高いと言えます。 しかし、私は一般的な軽midの最中に、JavaScriptの小さな温かい場所があると確信しています。それはある種の言語だからです。 その下に本質とドラマを隠す表面上の無料で一見シンプル。



すべてのコードレビューの祖先







私は最近、ヘミングウェイと文学界の他の4人の著名人に、与えられた長さのフィボナッチ数列を返す小さな関数を書くように依頼する夢を見ました。 各作家は自分の道を進むことを決めましたが、全体的には良い仕事をしました:



アーネスト・ヘミヌゲイ



function fibonacci(size) { var first = 0, second = 1, next, count = 2, result = [first, second]; if(size < 2) return "the request was made but it was not good" while(count++ < size) { next = first + second; first = second; second = next; result.push(next); } return result; }
      
      







驚きはありませんでした。 最も必要なものだけ。 余分な単語は1つではありません。 単一の追加変数ではありません。 これは、コードが美しいと言うことではありません。 彼は少し教訓的ですが、それが作家としてのヘミングウェイのポイントです。 思慮深い論理や変数の表現力豊かな名前は必要ありません。 コードは簡潔でシンプルで、本来の目的を果たし、それ以上のことはしません。



ヘミングウェイは精神に愚か者を連れてこなかったので、もしあなたが2つ未満の数字の連続について尋ねると、彼はあなたを単に無視します。 「私は疲れており、この質問はばかげています。」



ウィリアム・シェークスピア



 function theSeriesOfFIBONACCI(theSize) { //a CALCKULATION in two acts. //employ'ng the humourous logick of JAVA-SCRIPTE //Dramatis Personae var theResult; //an ARRAY to contain THE NUMBERS var theCounter; //a NUMBER, serv'nt to the FOR LOOP //ACT I: in which a ZERO is added for INITIATION //[ENTER: theResult] //Upon the noble list bestow a zero var theResult = [0]; //ACT II: a LOOP in which the final TWO NUMBERS are QUEREED and SUMM'D //[ENTER: theCounter] //Commence at one and venture o'er the numbers for (theCounter = 1; theCounter < theSize; theCounter++) { //By divination set adjoining members theResult[theCounter] = (theResult[theCounter-1]||1) + theResult[Math.max(0, theCounter-2)]; } //'Tis done, and here's the answer. return theResult; //[Exuent] }
      
      





吟遊詩人は真剣に別れたが、そうでなければできなかった。 コメント(つまり、コメントではなく、コメント、行為の名前)は5フィートのアンビックで構成されていることに注意してください-足の1音節ごとにストレスがかかる双子葉の詩的なサイズです。 シェークスピアは、劇中に5フィートのiambaからわずかに外れて、余分な音節を追加したり、単語を強調したりして、劇的なアクセントを追加することがよくあります。 そして、彼はここで同じトリックを使用しているように見えます。 行く方法、ウィル。



アンドレ・ブルトン



 function Colette(umbrella) { var staircase = 0, galleons = 0, brigantines = 1, armada = [galleons, brigantines], bassoon; Array.prototype.embrace = [].push; while(2 + staircase++ < umbrella) { bassoon = galleons + brigantines; armada.embrace(brigantines = (galleons = brigantines, bassoon)); } return armada; }
      
      





シュルレアリスムの創始者として、ブレトンは夢は現実よりもはるかに興味深いものであり、私たちの創造的な努力の基礎を形成すると信じています。 一致する名詞が選択されます。 ブレトンの作品は批判しやすいという事実にもかかわらず、永遠であり、常に心がこもっていて美しく、想像力の深みの無意識の上昇です。



おそらく、ブルトンは彼の元に敬意を表して関数に名前を付け、結果は古代の船で構成される艦隊の助けを借りて得られました。 コード自体は、特徴的なエレガントなロジックによって区別されます。Bretonは、コンマ演算子を使用して、配列の要素の値を同時にシフトします。 アンドレ。



ロベルト・ボラーニョ



 function LeonardoPisanoBigollo(l) { if(l < 0) { return "I'd prefer not to respond. (Although several replies occur to me)" } /**/ //Everything is getting complicated. for (var i=2,r=[0,1].slice(0,l);i<l;r.push(r[i-1]+r[i-2]),i++) /**/ //Here are some other mathematicians. Mostly it's just nonsense. rationalTheorists = ["Archimedes of Syracuse", "Pierre de Fermat (such margins, boys!)", "Srinivasa Ramanujan", "Rene Descartes", "Leonhard Euler", "Carl Gauss", "Johann Bernoulli", "Jacob Bernoulli", "Aryabhata", "Brahmagupta", "Bhaskara II", "Nilakantha Somayaji", "Omar Khayyám", "Muhammad ibn Mūsā al-Khwārizmī", "Bernhard Riemann", "Gottfried Leibniz", "Andrey Kolmogorov", "Euclid of Alexandria", "Jules Henri Poincaré", "Srinivasa Ramanujan", "Alexander Grothendieck (who could forget?)", "David Hilbert", "Alan Turing", "von Neumann", "Kurt Gödel", "Joseph-Louis Lagrange", "Georg Cantor", "William Rowan Hamilton", "Carl Jacobi", "Évariste Galois", "Nikolay Lobachevsky", "Rene Descartes", "Joseph Fourier", "Pierre-Simon Laplace", "Alonzo Church", "Nikolay Bogolyubov"] /**/ //I didn't understand any of this, but here it is anyway. return r /**/ //Nothing happens here and if it does I'd rather not talk about it. }
      
      





あなたの人生でボローニャの本を少なくとも一冊も読んでいないなら、あなたはそれを無駄に生きてきた。 彼の本は注目に値します。同時に、それらは気楽に複雑で魅力的に素朴であり、ナレーションのスタイルは、武装解除して魅力的な誠実さによって特徴付けられます。



ボローニャオは自分自身に忠実であり続け、不安、恥ずかしさ、無知の自白でコードをフレーバー化しました。 問題自体の解決策、そしてその解決策は素晴らしいもので、まるで思考のように提示されます。 常に強迫観念を持ち、常に疑念を抱いているボローニャは、それほど面白くなく、まったく役に立たない天才数学者のリストを喜んで提供します。



しかし、コードには、ボローノーの作品のより特徴的な特徴がいくつかあります:短い段落と長い段落の共生、セミコロンの欠如(彼の作品に引用符がないことを反映)、およびグローバル変数の明示的な使用は、各変数が次の部分で複数回使用されることを示唆しています。



チャールズ・ディケンズ



 function mrFibbowicksNumbers(enormity) { var assortment = [0,1,1], tally = 3, artfulRatio = 1.61803; while(tally++ < enormity) { //here is an exceedingly clever device assortment.push(Math.round(assortment[tally-2] * artfulRatio)); } //should there be an overabundance of elements, a remedy need be applied return assortment.slice(0, enormity); }
      
      





私はディケンズの大ファンではありませんが、ほとんどの場合、ヘンリー・ジェームズの非常に正確な推定に同意します。



「彼の文学的な性格をあえて定義する場合、彼を偉大な表面的な小説家と呼ぶ必要があります。 私たちは、そのような定義が彼を飾る執筆ワークショップの下位レベルに彼を置くことを理解していますが、私たちの仮定の結果を認識しています。 私たちの意見では、ディケンズを最高の小説家に匹敵させることは人道に対する罪となるでしょう。 彼はイメージだけを作成したからです。 私たちの人間性の理解に何も追加しませんでした」-チャールズ・ディケンズのヘンリー・ジェームズ、小説「私たちの共通の友人」のレビュー、国家雑誌、1865年12月21日。



結論の代わりに



Douglas Crockfordの防御メカニズムであろうと、コンピューターサイエンスの教科書からの辛dryで偏狭な制限であろうと、教義と教義は常に優れたJavaScriptコードの敵になります。 ルールブックやパターンが好きなプログラマーもいます。だからこそJavaがあります。 JavaScriptの喜びは、柔軟性とJavaScriptが提供する膨大な数の機能にあります。 自然言語にも同じ特性があります。 JavaScriptの最高のライターと開発者は、言語に魅了され、毎日勉強して実験し、独自のスタイル、イディオム、表現を作成する人です。



それだけです このナンセンスを楽しんだことを願っています。



All Articles