問題タブ [programming-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - シンプルなインタープリターの構築
軽量インタープリターを実装する必要があるプロジェクトを開始しています。インタプリタは、単純な科学的アルゴリズムを実行するために使用されます。このインタプリタが使用するプログラミング言語は、ソフトウェア以外の開発者 (数学者など) を対象としているため、単純なものにする必要があります。
インタープリターは、基本的なプログラミング言語機能をサポートする必要があります。
- 実数、変数、多次元配列
- バイナリ (+、-、、/、%) およびブール (==、!=、<、>、<=、>=) 演算
- ループ(for、while)、条件式(if)
- 機能
MathWorks の MatLabは、私が目指すところの良い例です。インタープリターは、アルゴリズムを実証するための環境として使用されます。データセット/配列の平均を見つけるなどの単純なアルゴリズム、またはガウス消去法やRSAなどの少し複雑なアルゴリズム。
この件に関して私が見つけた最良/最も実用的なリソースは、Ron Ayoub の Code Project に関するエントリ ( Parsing Algebraic Expressions Using the Interpreter Pattern ) です。これは、私の問題の縮小版の完璧な例です。
紫龍の本は多すぎるようですが、もっと実用的なものはありますか?
インタープリターは、C# を使用して .NET ライブラリとして実装されます。ただし、この問題の設計とアーキテクチャの部分が最も難しいため、どのプラットフォームのリソースも歓迎します。
実用的なリソースはありますか?
(「これは些細なことではない」または「なぜ車輪を再発明するのか」という回答は避けてください)
language-agnostic - タイプセーフとは?
「タイプセーフ」とはどういう意味ですか?
multithreading - 「スレッドセーフ」という用語の意味は何ですか?
2 つのスレッドが基になるデータを同時に変更できないということですか? それとも、複数のスレッドがそのコード セグメントを実行しているときに、特定のコード セグメントが予測可能な結果で実行されるということですか?
python - Python 3.0 と言語の進化
Python 3.0 は以前のバージョンとの後方互換性を壊し、言語を (少なくとも一時的に) 2 つのパスに分割します。成熟期にこのような主要な設計段階を経た言語を他に知っていますか?
また、これがプログラミング言語の進化の仕方だと思いますか、それとも支払うべき代償が高すぎると思いますか?
programming-languages - 関係パラメトリック性とは何ですか?
複雑な響きの用語で、単純な Google 検索では適切な説明がありません... これを説明できるアカデミック志向の人は他にいますか?
programming-languages - 好きな言語の嫌いなところを 5 つ挙げてください。
最近、スタック オーバーフローで Perl 嫌いの集団が発生しているので、「好きな言語について嫌いな 5 つのこと」という質問をスタック オーバーフローに持ち込もうと思いました。好きな言語について、嫌いなところを 5 つ教えてください。それらは、あなたを悩ませているもの、認められた設計上の欠陥、認識されたパフォーマンスの問題、またはその他のカテゴリである可能性があります. あなたはそれを嫌う必要があり、それはあなたの好きな言語でなければなりません.
他の言語と比較したり、すでに嫌いな言語について話したりしないでください。好きなことを好きな言葉で話さないでください。私はあなたが嫌いだけど許容できるものを聞きたいだけで、他のすべてのものを使うことができます.
誰かが自分の好きな言葉を私に押し付けようとするたびに、そして時にはインタビューの質問として、私はこれを尋ねます. 誰かがお気に入りのツールについて 5 つの不満点を見つけられない場合、その人はそのツールを支持したり、それを使用して大金を稼いだりできるほど十分にそのツールを理解していません。彼はそれを十分に探求するのに十分な異なる状況でそれを使用していません. 彼はそれを文化または宗教として提唱している.
あなたがどの言語を使っているかはあまり気にしません。特定の言語を使いたくないですか?それからしないでください。十分な情報に基づいた選択を行うためにデューデリジェンスを行いますが、それでも使用しませんか? 罰金。場合によっては、「優れたプラクティスと Bar での豊富な経験を備えた強力なプログラミング チームがいる。Foo に変更するのはばかげている」というのが正しい答えです。
これは、コード レビューにも適した質問です。コードベースをよく知っている人は、コードベースについてあらゆる種類の提案をしますが、よく知らない人は具体的でない不満を持っています。「このプロジェクトを最初からやり直せるとしたら、何を変えますか?」などと尋ねます。このファンタジーの世界では、ユーザーとプログラマーは、気に入らないことすべてについて文句を言うことができます。「より良いインターフェースが欲しい」、「モデルをビューから分離したい」、「このモジュールの代わりにこのモジュールを使用したい」、「このメソッドのセットの名前を変更したい」、またはそれらが実際に必要としないものは何でも今の状況は好きじゃない。これが、特定の開発者がコードベースについてどれだけ知っているかを把握する方法です。それはまた、プログラマーの
人々がどれだけ知っているかを理解するのは憎しみだけではありませんが、私はそれがかなり良いものであることを発見しました. 彼らが嫌いなことは、彼らがその主題についてどれだけよく考えているかの手がかりにもなります.
language-agnostic - データを最大化し、コードを最小化 - 限界と問題とは?
クライアント (おそらく C# gui) とサーバー コンポーネント (Java、C++、Perl) の両方を備えた非常に高い可用性 (サーバーを停止しない、再起動せずに機能をロールアウトするなど) のアプリケーションを設計したいと考えています。
( minimize-code-maximize-data.htmlとYegge ) からアドバイスをもらいました。ほとんどのロジックをデータベースから動的に読み取り可能にして、すべての構成 (すべての GUI 構成、テキスト翻訳など、ビジネス ルール、およびデータ) は、実行可能メモリに読み込むために再起動が必要なコードではなく、サーバー上のデータベースに存在します。
クライアントまたはサーバーを再起動せずにアプリケーションのあらゆる側面をカスタマイズし、できるだけ短いラグで変更をアプリケーションに反映できるようにしたいと考えています (動的クラスのロードなど)。
このような「決して殺さない」システムを設計する際のパフォーマンスやその他の制限は何ですか? そのようなアプリケーションを作成できた人はいますか? 主な教訓は何でしたか? これが費用対効果が低く、より伝統的なビルド、リリース、qa、数時間のダウンタイムアプローチが必要になるのはいつですか?
programming-languages - C/C++/C#/Java などの命令型言語またはオブジェクト指向言語にスワップ/交換演算子が存在しないのはなぜですか?
2 つの変数の内容を交換するような単純で基本的な操作が、なぜ多くの言語に組み込まれていないのか、いつも疑問に思っていました。
これは、コンピューター サイエンスの授業で最も基本的なプログラミング演習の 1 つです。多くのアルゴリズム(ソートなど)で頻繁に使用されます。時々それが必要になり、一時変数を使用するか、テンプレート/ジェネリック関数を使用する必要があります。
これは、多くのプロセッサでは基本的なマシン命令であるため、一時変数を使用した標準的なスキームが最適化されます。
代入演算子 (たとえば += など、累積的なマシン命令を反映するために作成された可能性があります。たとえば、add ax,bx) や ?? C# の演算子。
それで、理由は何ですか?それとも実際に存在し、私はいつもそれを見逃していましたか?
web-applications - 言語の選択は、特に Web アプリケーションに関して、誰がアプリケーションを使用するかに影響しますか?
これは主に Web アプリケーションに当てはまると思います。なぜなら、Web アプリケーションに関しては言語やデータベース ベンダーなどをよく見かけますが、デスクトップ アプリケーションではあまり見かけないからです。
言語 X を使用して Web アプリケーションを作成した場合、そのアプリケーションをデプロイする人に顕著な影響がありますか? たとえば、.NET 製品を使用している企業は、ニーズを満たす Python アプリケーションの使用を検討するだろうか? それとも、使用できる .NET 製品を見つける傾向があるだろうか?
編集 1: 使用されるだけでなく、展開されることを意図したアプリを参照するように質問を絞り込みました。
compiler-construction - ローカライズされたバージョンのプログラミング言語を備えたコンパイラはありますか?
キーワードをローカライズされたバージョンに置き換えることができるIDEを提供するのが非常に簡単であると思われるのに、英語を話さないプログラマーがプログラミング時に別の言語を使用せざるを得ないのはなぜかとよく疑問に思います。ドイツ人が「während..macht」ループを使用できないのはなぜですか?
日本、ドイツ、フランス、スペイン、ボツワナのプログラマーは、マクロを多用し、ステートメントを定義して、人生をより許容できるものにしますか、それとも、印刷の機能的重要性に慣れますか? 、var、double、functionなど?
おそらく、フレームワーク(J2EE / .NET)の使用が増えると、これはより複雑になりますが、それでも価値があるようです。一方、クリンゴン語が米国で事実上のプログラミング言語になった場合、私はおそらくこれを提案したことを後悔しているでしょう。