私は自分の大学でコンピューター サイエンスの勉強を始めたばかりで、Scheme でのプログラミングを教えてくれます。
私は過去 6 年間 C++ を学んできたので、Scheme は少し奇妙に思えます。私のインストラクターは、C や Java で書けるプログラムなら何でも書けると言っています。
本当にこの言語を使っている人はいますか?
私は自分の大学でコンピューター サイエンスの勉強を始めたばかりで、Scheme でのプログラミングを教えてくれます。
私は過去 6 年間 C++ を学んできたので、Scheme は少し奇妙に思えます。私のインストラクターは、C や Java で書けるプログラムなら何でも書けると言っています。
本当にこの言語を使っている人はいますか?
私が知っているように、多くの人がそれを使用することはありませんが、それは間違いなく一見の価値があります(別のパラダイムでプログラミングを試してみて、別の考え方を学ぶ場合でも)。最近のほとんどの大学がJavaを教えているので、Schemeを使用するクラスを受講できるのは幸運です。MITからの講義を見たり、サンプルの問題などに取り組みたい場合は、ここに良いリンクがあります。
MITオープンコースウェア-コンピュータプログラムの構造と解釈
オンラインで無料で入手できる付属の本もあります(コンピュータプログラムの構造と解釈)。
アップデート:
JVMを利用し、Javaライブラリにアクセスできる(多くの大学がJavaを使用しているため)スキームに類似した言語に興味がある場合は、 Clojureをチェックしてください。たぶん、これはコンピュータサイエンスの紹介のための新しい選択言語になるでしょう(私たちは皆期待できます!)。
Square USA は映画Final Fantasyの制作に使用しました。
これは彼らが公開した論文です: Gluing Things Together - Scheme in the Real-time CG Content Production .
その論文から:
SIGGRAPH 2000 と 2001 で、Square USA R&D チームは、完全なコンピュータ生成映画「ファイナル ファンタジー: 内なる魂」のシーンのリアルタイム レンダリングを示しました。
[...]
リアルタイム レンダリング エンジンに組み込まれた Scheme インタープリターが非常に役立つことがわかりました。
Scheme は、プログラミングについての考え方を変えさせてくれます。心を開いてみてください!
「本当にこの言語を使っている人はいますか?」
有名なポール・グラハム。
JavaScript は、Scheme と多くの点で非常によく似ています (ただし、Scheme の継続と高度な数値システムが欠けています)。
「ECMAScript言語概要」(PDF)より。2007-10-23。pp. 4. 2009 年 5 月 3 日閲覧。
ES3 は、Self 言語と Scheme 言語から主要なアイデアを取り入れた、シンプルで非常に動的なオブジェクトベースの言語です。プログラミング スタイルは、オブジェクト ベースのプログラミングと関数型プログラミングの混合です。ES3 の主な抽象化メカニズムは、レキシカル スコープの高階関数と変更可能なオブジェクトです ...
私は現在、Abelson と Sussman が 1986 年に Hewlett-Packard で行った SICP レクチャーと、Brian Harvey によって行われたCal-Berkeley CS61A ポッドキャスト(同じ本から教えられたもの) に取り組んでおり、Scheme に従っています。私にとってまったく新しい考え方。私のように、正式な CS の高等教育を受けていない人には、ぜひお勧めします...
私は本番環境でスキームコードを使用したプロジェクトに取り組んできましたが、それはかなりクールなものになる可能性があります。Scheme には、実行を自己最適化するために動的に再コンパイルするという優れた機能がありました。スカイネットから一歩離れたようなものだと思います。
個人的な経験を超えて、客観的な推測に最も近いのはTIOBEインデックスであり、これは現在LISP / Scheme 21位で0.470%の市場シェアを誇っています。TIOBEは、検索エンジンの結果を使用してリストを作成します。明らかに、あなたは一粒の塩でリスト(そしてSchemeの使用法に関する他の推測)を取りたいと思うでしょう。
恥知らずなプロモーション: PLTスキームをチェックしてください。彼らは素晴らしいコミュニティを作成し、多くのプラットフォームにIDEを提供し、すぐに使える優れたライブラリの選択肢を提供します。
商用アプリのPLTスキームについて説明している記事は次のとおりです:http://www.untyped.com/downloads/icfp068-welsh.pdf。
大学で使っていましたが、それ以来あまり使っていません。
再帰に不安がある場合は、SchemeまたはLispを学ぶことを強くお勧めします。あらゆる種類のことについて再帰的に考えることを学びます。再帰は常に正しい方法ですか?もちろん違います。ただし、ツールボックスに含めると便利なツールです。
私は常に開発者に新しい言語を学ぶことを勧めています。習得して習熟する言語が多ければ多いほど、問題についてより抽象的に考えるようになります。特定の言語に縛られることが少なければ少ないほど、問題に最も適した言語を選択する可能性が高くなります。
ここロシアでは、PLT スキームを使用してソフトウェアを開発しています。そしてよく売れます(;_;)
ClojureはScheme/Lispのような言語であり、JVMで機能し、並列処理に非常に適しています(おそらく)。Clojureを使用することの素晴らしい点は、JavaAPI全体とその他のJavaライブラリーにアクセスできることです。
Clojureは、Scalaとともに、言語オタクの間でかなり人気が高まっています。
Java プラットフォームにはかなりの数のスキーム実装があり、それらは Java アプリケーションのスクリプト作成とプロトタイピングに使用されます。SISCWebと呼ばれる方式の J2EE 用の継続ベースの Web フレームワークが存在します。
Guile スキームは、一部の GNU アプリでスクリプト言語として使用されます。たとえば、GnuCash はほとんどが Scheme で記述されています。
また、 TinySchemeは GIMP のスクリプト言語として使用されており、そのいくつかのバリエーションが組み込みシステムで使用されています。
Jazz Scheme は、Gambit Scheme に基づいて構築されたオープンソースのスキーム環境であり、積極的に産業利用を促進しているようです。チェックしてみてください。
彼らはニュースで新しい使用法を報告しています。
このページによると、Scheme は DEC、TI、Tektronix、HP、および Sun で使用されています (または使用されていました)。
この男のLinkedInの履歴書はディズニーでChez Schemeを使って報告しています。
少しググるだけで、多くのことが明らかになります。この場合、Scheme の使用はかなりユビキタスであり、あまり一般的ではないということを私がかつて聞いたことを裏付けています。
はい!スキームは非常に興味深いものです。ウォータールー大学の最初の年にそれを学びました。特に OOP/命令型のバックグラウンドを持っている場合は、最初は少し異なります。
それはあなたにとって多くの素晴らしいことをしてくれます。機能的パラダイムは間違いなく探求すべきものです。
また、非常に便利です。たとえば、C の超単純化バージョン用のコンパイラを作成したばかりで、関数型言語なしでそれを行うことは想像できませんでした (:
十分な努力をすれば、すべての言語を使用して何でも書くことができます:)
しかし、Scheme はかなりクールです。私の経験では、Scheme を知っていると、他の言語でのプログラミングに影響を与える傾向があります。
Scheme マクロは非常に強力で、call-with-current-continuation はマインドワープ関数です。
古典的なテストは、コンピュータ プログラムの構造と解釈 (「SICP」) です。一読の価値あり。
絶対。スキームは、さまざまな種類の問題に適しています。Jim Blandy はMinor と呼ばれるバージョンの Scheme に取り組んでいます。このバージョンは、ネイティブ システムとより緊密に統合され、パフォーマンスが向上することを目的としています。
LilyPond が拡張性のために Guile を使用していることは理解していますが、LilyPond が私の OS X インストールに深刻なダメージを与えたので、LilyPond をソフトウェアの理想的な輝かしい例として保持するかどうかはわかりません...
最近、stackoverflowポッドキャストで、Redditは元々LISPで書かれていると聞きました。
私は最近IronSchemeで遊んでいますが、実際の作業にSchemeを使用している人は誰も知りません。
スキームは主に教育目的で使用されます。これが、(物議を醸す)RSR6システムまで標準のモジュールシステムがなかった理由の1つです。宿題用の小さなプログラムを作成する場合、多くの大きなライブラリが必要になることは珍しいことです。
スキームは、SmalltalkのようなOOPをLispに追加するための実験として始まりました。それは最終的にマクロシステムを変更し、call/cc
(およびdynamic-wind
、dynamic-unwind
)を追加し、かなり成長しました。
スクリプト言語としてGuileを使用しているGNUプロジェクトを除いて、Schemeを使用している本番システムについては知りません。しかし、私はLispを使用している少数の本番システムを知っています(Orbitzの予約システムにはLispコードがあります)。
私は2年以上Schemeを学んでおり、プログラマーとして大いに役立っています。考え方を変え、より深い概念とプログラミング言語間のつながりを理解する方法を教えてくれました。Java や C のように、Scheme で任意のプログラムを作成できることは事実ですが、かなり困難です。Java または C コードとして解釈できるようになる前に、一連のプログラム変換を行う必要があります。少なくとも基本を学ぶ価値はあります。
私はプログラム言語デザインのクラスでそれについて学んでいます、それはいくつかのきちんとした使用法を持っています。私はそれを末尾再帰に簡単に役立つ問題にのみ使用します。