質問

長時間のかの異なる言語、特集-設定したいと思いることができなティへ簡単にアクセスできます。私は言語のフ周辺)のさまざまなプロジェクトの鉱山もっち交差点それらの言語ができることになったとしても99.9%の私のプロジェクトを単一言語です。以下のような:

  • ットです。売です。●純実装
  • 少ない依存関係はます。NETランタイムでコンパイル時や実行時のことが必要となるが、主要な利用の場合は組込み開発がきます。NETランタイムを完全にカスタム)
  • してコンパイラは100%になっています。純コードがないでポリシー依存関係
  • 支援の任意の表現の営巣(下記参照)
  • 対応カスタムオペレーターの定義
  • 支援型推測の基礎理論
  • 最適なテール電話
  • は明確な不変の/変更可能な定義です(nicety--私の愛することができなく生活で)
  • ポリマクロのための強いmetaprogramming(絶対必)

第一の二つの言語ができないかなぁ、とおもってはブとNemerleんも遊F#.

主に対する苦情Nemerle:のコンパイラは、horridエラー報告の実装は、バギーなど地獄(コンパイラやライブラリのマクロに対してのみ適用できることに内部の機能または属性として、かなり重量依存的には十分なされるとのことdealbreaker).
主に対する苦情ブー:任意表現の営巣(dealbreaker),マクロは書くのはたいへん難しいで、カスタムオペレーター定義可能性dealbreaker).
主に対する苦情F#:醜い構文、理解に苦しmetaprogramming、無料ライセンス(epic dealbreaker).

でんすけのことを思うと発展、自分の言語です。

メリット:

  • の正確な構文をしたい
  • を取得し時間の短い取引高速化;定量化の難しいものはなに注目していただきたいx1.5開発者の生産性は、特により、試験インフラで有効にする一定の事業
  • 私は簡単に追加カスタム機能をコンパイラの遊びも自分のランタイム
  • を取得しまう設計され、作品 正確に にしたい--などのことがNIH、私の人生や

連結:

  • ない限り、できるtweetは、こだわったの負担のメンテナンス。いま以上、もしくはNemerle人で誰にでもあると思いたいものより専門的では村があります。
  • による初のコン、私は警戒を有するものであってプロフェッショナル設定あり。とってNemerleとを使ってユーザーインターフェイス変更のコンパイラからではありませんが維持できます。
  • っていることを確認してください人気を得る、開発者は、より困難とならない程度に ポール-グラハム ない場合があっても容認.

に基づく照会を受け、これらすべてがどの一般的なコンセンサスはいいアイデアや不良が考えたんですか?かりhelpfullyてだったので買ってきた大手や連結実績?

編集:忘れの追加、入れ子の例--この場合Nemerle:

def foo = 
    if(bar == 5)
        match(baz) { | "foo" => 1 | _ => 0 }
    else bar;

編集#2:ゃるのではなく、傷つすべてに自信と勇気を与えてくれるタイプのコードに変換されるこの言語の場合は存在して(田Lottの答えだけでは十分なのかもしれません怖いからやっています。このコードを多く使書式のカスタム(opcode,:=,quoteblockなど、表現の営巣など。チェックできの良い例はこちら こちらの.

役に立ちましたか?

解決

残念ながら、失敗した言語に関するメトリックやストーリーはありません。成功した言語。明らかに、失敗は成功を上回る。

これは何に基づいていますか? 2つの一般的な経験。

  1. 年に1〜2回、すべてを絶対に変える製品/言語/ツール/フレームワークの売り込みに耐えなければなりません。私の答えは、過去20年ほどずっと一定です。サポートが必要な人を見せてください。私の会社がサポートしてくれます。そしてそれはそれです。二度と彼らから聞くことはありません。これらのうち25件を聞いたとしましょう。

  2. 毎年1〜2回、孤立したテクノロジを持つ顧客と協力する必要があります。過去のある時点で、いくつかの巧妙なプログラミングが、いくつかのプロジェクトで内部的に使用されるツール/フレームワーク/ライブラリ/パッケージを構築しました。それからそのプログラマーは去った。他の誰もそれを理解することができず、彼らは私たちにそれを置き換え/書き直してほしいと思っています。悲しいことに、私たちもそれを理解することができず、私たちの提案はゼロから書き直すことです。そして彼らは、彼らの天才が数週間のうちにアプリのセットを構築したと文句を言います。Java/ Python / VB / C#でそれらを書き換えるのに数ヶ月かかることはありません。この種の提案を25ほど書いたとしましょう。

それは私だけのコンサルタントです。

本当に悲しい状況の1つは、ITソフトウェアポートフォリオ全体が、プライベートな言語とツールを備えた1人の賢い男によって書かれた会社でした。彼は去っていませんでしたが、彼の言語とツールセットが時代に遅れをとっていたことに気づいていました-最先端技術は進歩し、彼はそうではありませんでした。

そして、その動きは-もちろん-予想外の方向でした。彼の言語とツールは大丈夫でしたが、世界はリレーショナルデータベースを採用し始めており、ジャンクをアップグレードしてフラットファイルから移動する方法はまったくありませんでした。それは彼が予見していなかったものでした。確かに、それは彼が予見できなかったものでした。 [あなたはこのtrapに陥ることはないでしょうか?]

だから、話しました。彼は、Plain-Old VAX Fortranの多くのアプリケーションを書き直しました(そうです、これはかなり前です)。

1年のコーディングの後、パフォーマンスの問題が発生していました。彼らは私に電話をかけて、自作の言語を置き換えるために行ったすばらしいことをすべてレビューしました。悲しいことに、彼らは可能な限り最悪のリレーショナルデータベース設計を行っていました。最悪。彼らは、ファイルのコピー、マージ、並べ替えなどを実行し、SQLを使用して各低レベルファイルシステム操作を実装し、データベースの行を左、右、中央に複製しました。

彼は完璧な言語という私的なビジョンに夢中になっていたため、比較的一般的で普及している新しい技術に適応できませんでした。

他のヒント

私はそれのために行くと言います。

  • 天気に関係なく、それが生産されるかどうかに関係なく、素晴らしい経験になるでしょう。
  • ILにコンパイルする場合、コンパイル済みのアセンブリをC#で再利用できないことを心配する必要はありません
  • 上記の言語について有効な苦情があると思われる場合、多くの人があなたのように考える可能性があります。もちろん、関心のある人1000人ごとに、あなたがそれを維持するのを手伝ってくれる人が1人いるかもしれませんが、それは常にリスクです

ただし、次の点に注意してください。

  • 開発前にSTONEで言語仕様を入手してください。すべての言語機能が事前に把握されていることを確認してください-将来的にのみ必要になるものであっても。私の意見では、C#はゆっくりと「もう1つだけ言語を拡張」に陥っています。最終的な運命につながるトラップ。
  • 必ず最適化してください。私はあなたがすでに知っていることを知らない。しかし、知らない場合は学習してください;)素晴らしい構文を持っているがIEのjavascript実装と同じくらい遅い言語は誰も欲しくないでしょう。

幸運:D

私が90年代初頭に私のキャリアを始めたとき、誰もが独自の社内言語を開発しているというこの流行があったようです。私の最初の 3 の仕事は、これを行った会社でした。ある会社は独自のオペレーティングシステムを開発していました!

経験から、これは次の理由から悪い考えだと思います。

1)その上にあるコードベースに加えて、言語自体のデバッグに時間を費やします
2)あなたが雇う開発者は言語の学習曲線を経験する必要があります
3)プロプライエタリな言語で作業することは誰かのキャリアの行き詰まりであるため、開発者を惹きつけて維持するのは難しいでしょう

これらの3つの仕事を辞めた主な理由は、独自の言語を使用していたためです。

もう1つの議論として、ほとんどの言語にはチーム全体があり、そのフルタイムの仕事は言語の開発です。たぶんあなたは例外かもしれませんが、パートタイムの言語のみで作業することで、そのレベルの開発に匹敵することができたら非常に驚かされるでしょう。

  

Nemerleに対する主な不満:   コンパイラには恐ろしいエラー報告があり、   実装は地獄のようにバグが多い   (コンパイラとライブラリ)、マクロ   関数内でのみ適用できます   または属性として、それはかなりです   依存度が高い(ただしそうではない   契約を破るのに十分です)。

あなたの投稿は2年以上前に書かれたようです。 今日はネメル語を試してみることをお勧めします。 コンパイラは安定しています。今日のブロッカーのバグはありません。 VS統合には多くの改善があり、SharpDevelop統合もあります。

機会があれば、失望することはありません。

決してあなた自身の言語を開発することはありません。

独自の言語の開発はバカのわなであり、さらに悪いことに、想像力が提供できるものに制限され、開発環境と実際のプログラムの両方を作成することも要求されます。

これが当てはまらないケースは、あなたがラリーウォール、AWKの仲間、またはプログラミングの境界をテストすることに専念している実質的なグループの一部である場合です。これらのカテゴリのいずれかに属している場合、私のアドバイスは必要ありませんが、タスクに適したプログラミング言語やタスクを実行する人々の特徴がないニッチをターゲットにしていることを強く疑います。

あなたがあなたのように賢い場合(可能性が高い)、私のアドバイスは先に進んで言語の設計を行い、それを数回繰り返して、あなたがスマートに信頼するスマートフェローに尋ねることですあなたが思いついた具体的な設計についてのプログラミング言語関連のコミュニティで、それから決定を下します。

たとえば、デザインを作成する過程で、Nemerleを簡単にハックするだけで必要なものがすべて得られることがわかります。問題について一生懸命考えていると、多くのことが起こります。最終的な解決策は、プロジェクトを開始するときに実際に考えていたものではないかもしれません。

最悪のシナリオでは、実際に設計を実装することに固執しますが、それまでにそれを読み、成熟させることができます。 / p>

関連するアドバイス。小さなことから始めて、絶対に必要な機能を定義し、それを基に残りを取得します。

あなた自身の言語を書くことは簡単なプロジェクトではありません。特に、あらゆる種類の「プロフェッショナルな設定」で使用されるもの

これは膨大なの作業量であり、独自の言語を作成し、それを使用する大規模なプロジェクトを作成できるとは思わないでしょう。バグの修正、および一般的な言語設計のもの。

私は強く、あなたが望むものに最も近い言語を選択し、必要なことを行うためにそれを拡張することをお勧めします。望みどおりになることは決してありませんが、自分の言語を書くのに費やす時間と比較すると、それは小さな妥協だと思います。

Scalaには.NETコンパイラがあります。しかし、この状況はわかりません。これは、Scalaの世界(JVMに重点を置いている)の一種の二流市民です。しかし、新しい言語をゼロから作成するのではなく、.NETコンパイラを採用するのは良いトレードオフかもしれません。

Scalaは、メタプログラミング部門のATMに弱点があります。メタプログラミングの必要性は、他の言語機能によっていくらか軽減される可能性があります。いずれにせよ、メタプログラミング機能を実装したとしても、誰もが悲しいとは思わないでしょう。また、途中にコンパイラプラグインインフラストラクチャがあります。

思いのほとんどの言語のない全ての請求されます。

するために組み合わせ2気に入りの言語の私の場合はC#と スキーム 利用されていったといわれている。

プロフェッショナルな視点は、こういうものです。

既存の言語ではできないと思うことのいくつかを聞くのは面白いでしょう。 C#ではできない、どのようなプロジェクトに取り組んでいますか?

私はただの好奇心です!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top