学習体験のための新しいスクリプト言語を作成しますか?[閉まっている]


13

私自身の個人的な学習経験のためにスクリプト言語を作成する価値はありますか?

私が尋ねる理由は、すでに非常に多くのプログラミング言語が利用可能であることです。私は、良い学習体験を提供する以外に、私の実際の使用は決してないことを知っています。ただし、スクリプト言語を学習体験として作成しようとすることには欠点があります。より「生産性の高い」何かをするためには多くの時間と労力が必要になります。

プログラミング言語(その目的、構文、哲学、インタープリターなどのドラフトの作成を含む)を作成することは、時間、労力、および学習経験に値するでしょうか?それとも、もっと恩恵を受けることができる他のプロジェクトはありますか?


3
別のオプションは、既存の言語を実装することです。1 年以上かけてMacheteと呼ばれるECMAScript方言をゆっくりと開発し、多くのことを学びました。
ChaosPandion

興味深いことに、私はそれを考えていませんでした。
イヴァン

2
1)これを学ぶ... www1.idc.ac.il/tecs 2)そしてこれを... mitpress.mit.edu/sicp
ジョーインターネット

既存のプロジェクトv8、SpiderMonkeyまたはPythonへの貢献を検討することもできます
-treecoder

3
私見、新しいプログラミング言語を学ぶための最良の方法は、それらのコンパイラを実装することです(少なくとも、元の言語の重要なサブセットに対して)。それで、はい、それは確かに有用な学習経験です。
SKロジック

回答:


15

スキルとポートフォリオを構築する

私の意見では、それは非常に良い学習経験になるでしょう:

  • ボンネットの下見るように強制する、
  • 物事が内部的に行われる方法学ぶためにあなたを導く、
  • 他の実装を見て比較することをお勧めします。
  • あなたを保つ アルゴリズムのスキルを最新の
  • コードを作成する(そして、できれば文書)のいずれか悪いことではありません多く、
  • あなたがオンラインで共有できる重要なプロジェクトとコードベースを提供します:
    • 個人的な楽しみと満足
    • スキルを披露潜在的な雇用主にを、
    • 通信し、 同じ分野に興味のある仲間交換する
    • 潜在的にそれをさらに何かに成長させる...

だから、私はこれを生産的で、有用で、全体として「価値がある」と考えています。

始めましょう

これに費やす時間に応じて、異なるアプローチを使用できます...:

  • 期間が限られている場合は、飛び込んでコーディングしてください。
  • より長い時間枠がある場合、あなたは確かに長い道のりを行き、仕様、チュートリアル、マニュアルなどを書くことができます...

スモールスタート

私はむしろ小さく始めることをお勧めします。私が知っている限り、このような素晴らしい言語を直接書いた人はいません。あなたはつまずき、倒れ、失敗し、失敗し、失敗します。その後、あなたは成功しますが、それは機能しますが、それでもまだひどいので、もう一度やり直します。そして、新しい機能を追加すると、ようやくクールになりますが、突然、最初に台無しにした基本的な概念があることに気づきます。あなたはそうもう一度やり直します ...

私にとって非常に教育的なようです。

先に進んでください(そしてリンクを私たちと共有してください)。

「短い」のように小さい

しかし、再び、私はあなたが小さく始めることを勧めます。多くのコードと時間がかかると人々が言うのを恐れないでください。必ずしも、複雑な言語を目指していない場合。アラン・ケイや他の ゼロックスPARCの技術者は、容疑者の初期のバージョンが開発 のSmalltalkを 1枚の用紙に収まる(読み簡潔さのための目標として、:雷のディーラーゼロックスPARCの歴史についての詳細は、PARCが)。(読みやすさを犠牲にしない限り)良い、教育的で、制約のあるアプローチのようです。

「制約」のように小さい

高度な型システム、高次関数、42の異なるパラダイムの組み合わせをすぐにサポートする必要はありません。それは単に数式言語かもしれません。

他人の知識を再利用(および覗き見)する

また、言語をゼロから作成するために使用されるツールを確認することもできます。自分ですべてを再実装することもできますが、たとえば既存のレクサーやパーサージェネレーターを調べる価値があるかもしれません。

そして、明らかに、コンパイラの構築全般を読んでみたいと思うかもしれません。


さて、質問を「あなたの時間を最も生産的に使用するでしょうか?」それはまったく別の問題になります:)

あなたが取り組むことができる他のたくさんの学習プロジェクトがあります、そして、それはあなたのスキルを同等によく訓練し、紹介します。何を目指したいかによります。


2
「それから、成功しますが、それでも機能しますが、まだひどいです」
イヴァン

1
@Ivan:ありがとう:)それはおそらく学習体験のもう一つの良い部分です:内省、謙虚さと忍耐力!
ヘイレム

1
私はヘイレムに同意します。一般的なプログラミング、言語の仕組み、さまざまな実装方法を学ぶ価値は十分にあります。はい、おそらくあなたはそれを見た唯一の人ですが、それはあなたがあなた自身を改善するために取り組むあなたの小さなペットプロジェクトになります。
RJay75

3

先に行くと言います。

プログラミング言語の実装は幅広いトピックをカバーし、内部で物事がどのように機能するかについて多くを学びます。あなたはおそらく半ダースかそこらの失敗した試みを生きますが、学習経験は非常に貴重です。


2

(おもちゃですが完全な)プログラミング言語の設計と実装は、実際には私の上位部門のCSクラス(コンパイラクラスまたはプログラミング言語調査のいずれか、いずれかを忘れて...)

そのため、少なくとも1人のCS教授がそう考えました。

あなたは、他の言語が持っているすべてのそれらの「癖」に対するはるかに良い感謝に終わるでしょう。


1

しばらく時間がかかります。維持する予定はありますか?

プログラミング言語(その目的、構文、哲学、インタープリターなどのドラフトの作成を含む)を作成することは、時間、労力、および学習経験に値するでしょうか?それとも、もっと恩恵を受けることができる他のプロジェクトはありますか?

私はあなたの財政状態が無限ではないと仮定しているので、それは時間の価値がないと言うでしょう。あなたはお金を稼ぐことができる他の有用なプロジェクトに時間を費やすことができます。これはあなたが探している答えではないかもしれないことを覚えておいてください。しかし、論理的な観点から、あなたのプログラミング言語は現時点では適切なプロジェクトではないかもしれません。あなたが退職したコンピューター科学者であり、業界に貢献する必要性を感じた場合、私はそれを検討します。あなたはプログラミングに強い情熱を持っているようですが、それは素晴らしいことです。しかし、まったく新しいスクリプト言語を構築するのでしょうか?それは非常に長いプロジェクトになります。その間に、ポートフォリオに放り込める多くのアプリケーションを構築することができました。私の質問は:


2
私は知りません...愛の1つの大きな労働は、あなたがそれぞれ100ドルを作るかもしれない20の捨てられたアプリに勝ちます。
ChaosPandion

ドメイン固有の言語を実装すると、実際のプロジェクトの開発が大幅にスピードアップする可能性があります。ですから、金銭的にも見た目も良いだけでなく、経済的にもやりがいがあります。
SK-ロジック

1
物を作るのが好きだから物をつくる人もいますが、言われた創作行為が彼らにいくらかの現金をもたらすからではありません。
ジェッティ

@ジェッティ。はい、知っています。だから、この答えはあなたが探しているものではないかもしれないと言ったので、プログラミングに情熱を持っていると言えます。あなたがこの答えについてあなたが言ったことのような何かを誰かが言うのを待っていたので、私はあなたの入力に感謝します。
ライアン

@ライアン-すみません、私はその部分を逃しました。
ジェッティ

-2

あなたへの私のアドバイスは

車輪を再発明しないでください

このイディオムの比phorのインスピレーションは、ホイールがユーザーに与える力と柔軟性の両方のおかげで、そしてすべてではないにしても多くの根底にある古代の起源の両方で、ホイールが人間の創意工夫の原型であるという事実にあります、最新のテクノロジー。すでに発明されており、運用上の欠陥があるとは考えられていないため、それを再発明する試みは無意味であり、オブジェクトに価値を追加せず、時間の無駄であり、調査者のリソースをおそらくより価値のある目標からそらす彼または彼女のスキルをより大幅に向上させることができます。

自問するべきです:

  • なぜスクリプトを作成する必要があるのですか?既存のスクリプトは十分ではありませんか?
  • あなたはそれを維持して公開しますか、そしてあなたのスクリプトは他のプログラマーによって使用されると確信していますか?あなたの答えがノーの場合、それをしないでください。

私はあなたがより多くの学習経験を持ちたいと思っていることを理解しています。そのため個人的には、フレームワーク作成するとより多くの学習経験が得られ、スクリプトを作成するよりもあなた/あなたのチーム/コミュニティが後でそれを再利用できるボーナスがあると思います。

また、このxkcdコミックは少し関連性があり、「標準」も「言語」に変更するだけです。

ここに画像の説明を入力してください


-1、彼はこれが個人的な学習経験のためであることを明確に言った。
GrandmasterB

スクリプトを作成しても、自分やコミュニティに本当の個人的な学習経験や利益がもたらされるわけではないことを率直に言いたいだけです。また、フレームワークを作成することが実際に彼とコミュニティに利益をもたらすという私の答えを追加しました。あなたがそれが真実でないと感じるならば、私はより多くの反対票を得ることを気にしません。
ルディ

2
ええ、あなたは正しいです-新入生のプログラマーが彼の最初の「Hello、World!」を書くことはありません。-結局のところ、既存のものをダウンロードする方がはるかに良いでしょう。この文脈での「フレームワーク」とは何ですか?
SKロジック

5
コンパイラーまたはインタープリターを実装する@Rudyは、「Hello、World!」に非常に近い、些細で基本的なスキルです。まともなCSコースでは必須である理由です。そして、些細なことであるにもかかわらず、このタスクは、ほとんどすべての分野で実際に適用できる多くの非常に有用なスキルを教えます。DSLを実装する非常に重要であることは言うまでもない(あなたを気に- Hibernateはあなたが言及したブツこと DSL、および非常に悪い実装されているそのうちのいくつかは、その中に埋め込まれたインタプリタとコンパイラの数は、そこにあります)。
SKロジック

3
@ SK-
logic-
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.