最近の大変動のパラダイムシフトから何を学べるでしょうか。

paradigms

ごくまれに、私たちの仮定をひっくり返すソフトウェア学習経験を通して、私たちはまったく新しい視点からソフトウェア開発を見ます。 私たちが暫く経っていると私が思う最も明白なものは、ハードコアOOPへの移行でした。 そのような他の地震を経験したことがありますか。

編集:多分あなたが学んだこと、そしてそれがあなたのプログラミングをどのように変えたかについてのいくつかの提案はありますか?

  3  0


ベストアンサー

最新ではありませんが、私は趣味人としてプログラミングを始めました。 私はそれに夢中になり、私が自習によって知る必要があるすべてを学びました。 私は大学でコンピューターサイエンスの2年の学位を取得するために出かけ、クラスを通って航海しましたが、まったく新しい情報は得られませんでした。 それはあまりにも簡単で、メッセージボードに貢献し、他の人が苦労しているのを見て、少なくとも10年のベテランと同じくらい良いプログラマーであると自己評価しました。

それで、私は私の最初のプログラミング仕事を得ました。 私が最初のコード行を他の人に実際に使われるようにするために打ち出しに行くとき、それは私を本当に強く襲いました:私はコードを書くのを吸います

他の人のコードを見たり、DLL、バージョン管理、アセンブリをGACにまとめる、デザインパターン、テスト駆動開発など、大学では特に言及しないような他のすべての概念について話す機会があります。私は、プログラミングについてはほとんど何も知っていなかったことを理解しています。 大学と自習は私に本物の取引の準備をするために何もしませんでした。 結局、私は自分のやりたいことをするためにコードを打ち出すことができたのですが、私は高レベルの思想家ではありませんでした。

実世界での6か月間の経験がそれを修正し、いくつかの悪い習慣を取り除くのに役立ち、コードが実際にどのように見えるべきかについて良い感じを与えてくれました。 それで、ここで私は自分自身について気分が良くなります、しかし私は解決できない問題に遭遇します:私はオブジェクトが他のオブジェクトの深く5つのレベルの中に入れ子にしています。 それを実行するための明白な方法を見つけることができなかったので、私は私にJavaデザインパターンに関する本を貸し出す同僚に相談します。 私はその本を読み、私が見逃していた量についての私の目を開いた。私は今まで見たことがなかったデザインパターンの全世界がありました。

それから、私は大したことを見逃していましたが、私は高レベルの思想家ではありませんでした。そして、GoFの本で説明されているのと同じ問題を解決するために書いたハッキン​​グは、明らかに:私はコードを書くのをやめます

あと6ヶ月、私はデザインパターンの達人でした。 私は、MVCがMVPより非常に優れている理由を詳しく説明し、私のベッドサイドの隣にあるMartin Fowlerの黄金の偶像に祈って、抽象的な工場に住んで息を吐きました。 それで、いずれにせよ、私はいくつかの追加の言語を学ぶことによって私の履歴書を後押ししたかったです。 私はリストにPython、C#、Perlを追加しましたが、構文を微妙に変更するだけで、同じことを何度も繰り返し学ぶことに飽きました。 私は変な言語を見ることにしました、そして私はHaskellのいくつかの断片に出会いました。 その言語が何であるかを知らずに、私は関数型プログラミングと呼ばれる全体のプログラミングパラダイムについて読み、発見しました。 ただの楽しみのために、私は関数型プログラミング言語(私はHaskellとLispよりOCamlを選んだ)を学びました、そしてそれは私がプログラミングについて考える方法を完全に変えました。

その小さな実験を実行した後、それは再び私を襲った。

私がこれまで知らないうちに、この関数型プログラミングの世界はどのように存在したのでしょうか。 なぜ誰もがそれについて早く私に話さなかったのですか? 考えてみると、私は数十から数十のJavaクラス、文字通り抽象ファクトリ、具体的ファクトリ、訪問者などの階層を作成する1000行のコードを汲み出す能力に誇りを持っていました。 OCamlに習熟すると、アプリケーションの行数は20分の1に減少しました。 何十ものJava階層がいくつかのOCaml共用体にまとめられ、それらはすべて1つの画面に収まります。 それ以来、関数型プログラミングの列車に乗ってきました。

ここでのレッスンは簡単です。あなたが自分が最高のプログラマーであると思うなら、あなたはやめてください。 「知っておくべきことはすべてわかっている」という考え方は素朴で、本当に優れたプログラマーになるための能力を制限します。

12


http://www.agiledata.org/essays/tdd.html[テスト駆動開発]

6


これらがパラダイムシフトとしてカウントされるかどうかわからないが…​

私はまだ大学にいたとき、昨年少数のアイオープナーです。

2


私達は多くの派手な名前がちょっと元気づけられ、形式化された古風なアイデアに与えられた単なる名前であることを学ぶことができます。

2


クロージャ、 ラムダ関数 …​

1


依存性注入と私のための制御の逆転

1


http://en.wikipedia.org/wiki/MapReduce[*_Map_* and * _Reduce_ *]

1


3GLから4GL;)

0


推論を入力します。 Javaの面倒で官僚的な型仕様の解釈に信じられないほどにイライラした後、SMLを発見し、静的な型付けがほとんど楽になることができたことを実感しました(そして私はさらにJavaにイライラしました…​)。 あなたは、(一般的に、私は言語を選択することができないか、私はPythonを選択するかのどちらかとして)私は_型推論言語を使用しませんでした。

0


タイトルとURLをコピーしました