その特徴がどんなものかという説明も添えてください。
その特徴がある程度有効なものに限ります(例えばBrainf**kは特徴的ですが、だから何かができるというわけではないので、このようなものは外してください)。
■LISP(リスプ、LISt Processingの略)
関数型プログラミング言語である。
-------
■Python
オフサイドルールを採用してる(空白に意味がある)
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%95%E3%82%B5%E3%82%A...
-------
■Smalltalk(スモールトーク)は、Simulaのオブジェクト
(およびクラス)、Lispの機能、LOGOのエッセンスを組み合
わせて作られたクラスベースの純粋オブジェクト指向プログ
ラミング言語、および、それによって記述構築された統合化
プログラミング環境の呼称
--------
■LOGO
コンピュータを使用して児童の思考能力向上の訓練を目的とした
言語。図形の描画を、画面上の絶対座標ではなく、タートル
(亀)と呼ばれるカーソルを基準点とした相対座標(回転角度と
進行距離で指定)で行う点で他のプログラミング言語とは一線
を画する。元々は単純なリモコン・ロボットに対する操作をコ
ンピュータ上で再現した物で、ロボット操作の上での親和性が
非常に高い事でも知られる。
-------
■ひまわり
http://kujirahand.com/himawari/
日本語でプログラムが組めます。
日本語プログラミング言語「なでしこ」はどうでしょうか?
特徴はとにかく日本語であるということがメインだと思いますが、Windows環境での簡単な定型処理には使えるかと思います。
なでしこには日本語を使っているということ以上に特別な機能があるのでしょうか?
> 他のプログラミング言語にはあまりない特徴を持ったプログラミング言語
何といっても LISP ですね.
http://ja.wikipedia.org/wiki/LISP
LISP は2番目に古い高級言語 (1番目は FORTRAN) ですが,今見ても古さを
感じさせない機能が目白押しです.最近は色々な言語が流行っているようですが,
それらが備えている機能の多くは LISP がとっくの昔 (1960年頃,C言語よりも
はるか昔) に実現していたというのは驚きです.時代を数十年先取りした言語
だと思います.
今ではほとんどのプログラム言語は再帰呼び出しができるが,当時 FORTRAN は
そうではなかった (今はどうか知らない).そもそも最初の LISP は,(数学的な
意味での) 再帰関数の研究のために (FORTRAN を使って) 開発されたものらしい.
つまり LISP は,数学的な概念である「再帰」を最初にプログラム言語として実現した.
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B...
http://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%9...
http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%8...
これらも LISP が最初.
http://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E9%96%A2%E6%95%B...
関数を関数の引数として渡したり,関数を実行時に生成して戻り値として返したり
することができる.つまり関数がファーストクラスオブジェクトである.
http://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%A...
(メモリ容量が許す限り) 事実上無制限の桁数の整数を扱うことができる.
(Common Lisp では有理数も扱うことができる.)
したがって LISP プログラムが LISP プログラムをデータとして
解析・操作・生成し,さらにそれを実行することが簡単にできる.
他にこの特徴を備えている言語としては機械語 (笑) があるが,
LISP はバイナリよりもはるかに抽象度の高いレベルで実行可能.
また,プログラムの実行中にそのプログラム自身のパッチや新バージョンを
読み込んで,プログラムを停めずにバージョンアップするという使い方も可能.(笑)
http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%83%AC%E3%82%A...
プログラムが,自分自身に関する情報を取得・操作することができる.
Perl や Python にも eval があるようだが,(その名前も含めて) LISP が元祖.
Lisp プログラマのための Python 入門
http://www.unixuser.org/~euske/doc/python/python-lisp-j.html
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%AF%E3%83%AD_%28%E3%...
C言語のマクロは文字列レベルの単純な置き換えだが,LISP のマクロはS式
(LISP プログラムなど) を別のS式に変換する LISP プログラムである.
これによりプログラマが言語の構文を (自由かつ簡単に) 拡張することができる.
これは言語の特徴というより応用分野の特長だが,FORTRAN が数値計算用なのに
対し,LISP はS式を使って複雑な構造を持つ非数値データを簡単に表現・処理
することができる (記号処理).このため,昔から人工知能の研究に盛んに
用いられている.例えば,
(1) 定理証明システム (論理式を表現・操作)
(2) 数式処理システム (数式を表現・操作)
(3) シリコンコンパイラ
(ハードウェア化したいアルゴリズムを表現 → VLSI のパターンを自動生成)
先日偶然,次の一文を見つけた.
> Lisp:S式の理由
> Lisperは、解き方がわかっている問題を楽に解くよりも未だ見ぬ
> 問題に楽に対応できる方を重要と考えているフシがあります
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Lisp%3aS...
(↑改めて全文を読みたいと思ったがつながらない….orz)
http://b.hatena.ne.jp/entry/3784761 (↑のはてブ)
なるほどうまいことを言う,と思った.だから 人工痴呆 人工知能の
研究に用いられているのだろう.業務システムなどをオブジェクト指向言語で
開発する場合,新しいアルゴリズムを考えるなんてことはほとんどなくて,
「いかにわかりやすく保守性の良いプログラムを書くか」ということに主眼が
置かれる.ネットでも,既に解き方がわかっている問題を流行りの××言語で
書いてみた,というのをよく見かける気がする.
他にも色々ありますが,とりあえずこの辺で.
十数年前 Java が流行し始めた頃,「Java? ああ,C++ 風の文法で
書けるようにした機能制限版 LISP のことね」と思ったものです.(笑)
(ちなみに Java の開発には,LISP 界の大物としても知られる
Guy L. Steele Jr. も参加しています.)
どう転んでもLisp (竹内郁雄,東京大学教授,Lisp福音伝道者補佐?)
http://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeu...
しかし私は,ここ20年ほど LISP を使う機会がほとんどない….orz
Lispの機能のほとんどは現代のプログラミング言語が持っていると思いますが。
Lispが他と比べて強力なのは自己記述性くらいではないでしょうか?
Pascal
http://ja.wikipedia.org/wiki/Pascal
1プログラム、1ファイル構成。
メインルーチンは最後にあり、サブルーチンや関数は上に行けば見つかる。
ローカルな関数、サブルーチンが使える。
1プログラム1ファイル構成が変わっているかどうかはともかく、これは役に立たないと思います。
ローカル関数、サブルーチンは案外見かけない気もしますが(Schemeにはありますね)。
http://q.hatena.ne.jp/1173540773
IRIS Explorer http://www.nag-j.co.jp/IRISExplorer.htm
絵というかブロック図でプログラミング。面白いけど、さすがに敷居高いと感じました。
ESP, CESP
オブジェクト指向の概念が入ったProlog。
KL1, KLIC http://www.klic.org/software/klic/lang/lang.html
並列処理記述用、GHC(ガードつきホーン節)ベースの論理プログラミング言語。
*Erlang について
http://jp.rubyist.net/magazine/?0017-Legwork
Erlang は元々電話交換機のような信頼性が要求される環境のために設計されたプログラミング言語なので、エラーによってプログラム全体の動作が停止しないように設計されています。あるプロセスで発生した例外はそのプロセスだけを停止させ、デバッガーを起動させます。そこでプログラムを修正し、そのモジュールを再ロードさせてから続きを実行させることもできます。
非常に軽量なプロセスを多数安定して実行できる点が注目されています。
> Lispの機能のほとんどは現代のプログラミング言語が持っていると思いますが。
現在ではそうだと思いますが,LISP が最初かつはるかに早く
実現したという意味で書きました.
> Lispが他と比べて強力なのは自己記述性くらいではないでしょうか?
どんな計算モデル (関数型,論理型,オブジェクト指向,…) でも
取り込める懐の深さ,というのはどうでしょうか?
「どう転んでもLisp」で「泥の玉」と表現されているものです.
http://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeu...
申し訳ございませんが歴史の話は今回の質問の趣旨から外れてしまいますので。
Lispが任意のパラダイムを取り込める柔軟な言語であるという指摘に関しては了解です。
■アッセンブラ
機能だけでお話されるなら、これですね。
これさえあれば、なんでも可能です。
■PL/SQL(ピーエル・エスキューエル)
Oracle社が、Oracle Database のためにコンピュータの
データベース言語 SQL を独自に拡張したプログラミング言語
である。
■Basic
-----------------------
>関数型プログラミングは現在メジャーですね。
関数型プログラミングの意味を取り違えてるのでは?
http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%8...
------------------------
>オフサイドルールは単体で意味のある機能ではないと思います。
単体ってどういう意味で使ってるでしょうか?
------------------------
>ひまわりには日本語を使っているということ以上に特別な
>機能があるのでしょうか?
自然言語感覚でプログラミングできます。
関数型プログラミングはWikipediaに出ている通りの意味で使っています。
オフサイドルールは単にそういう文法だとしか思えないので、空白が区切り以上の意味を持たない言語に対するオフサイドルールを採用する言語の優れた点を教えてもらえればと思います。
単に正しいインデントを強制できるだけであれば意味のあるものだとは思えません。
ひまわりについては納得です。
関数型プログラミングは現在メジャーですね。
オフサイドルールは単体で意味のある機能ではないと思います。
ひまわりには日本語を使っているということ以上に特別な機能があるのでしょうか?