他のプログラミング言語にはあまりない特徴を持ったプログラミング言語を知っていたら教えてください。

その特徴がどんなものかという説明も添えてください。
その特徴がある程度有効なものに限ります(例えばBrainf**kは特徴的ですが、だから何かができるというわけではないので、このようなものは外してください)。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2007/08/19 21:55:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答8件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント17pt

■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/

日本語でプログラムが組めます。

id:GokiburiZ

関数型プログラミングは現在メジャーですね。

オフサイドルールは単体で意味のある機能ではないと思います。

ひまわりには日本語を使っているということ以上に特別な機能があるのでしょうか?

2007/08/18 14:52:18
id:cooper0524 No.2

回答回数296ベストアンサー獲得回数4

ポイント17pt

日本語プログラミング言語「なでしこ」はどうでしょうか?

http://nadesi.com/

特徴はとにかく日本語であるということがメインだと思いますが、Windows環境での簡単な定型処理には使えるかと思います。

id:GokiburiZ

なでしこには日本語を使っているということ以上に特別な機能があるのでしょうか?

2007/08/18 14:52:23
id:noocyte No.3

回答回数21ベストアンサー獲得回数3

ポイント16pt

> 他のプログラミング言語にはあまりない特徴を持ったプログラミング言語


何といっても 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 では有理数も扱うことができる.)


  • 自己言及的:データとプログラムが同じ形式 (S式).

したがって LISP プログラムが LISP プログラムをデータとして

解析・操作・生成し,さらにそれを実行することが簡単にできる.

他にこの特徴を備えている言語としては機械語 (笑) があるが,

LISP はバイナリよりもはるかに抽象度の高いレベルで実行可能.


また,プログラムの実行中にそのプログラム自身のパッチや新バージョンを

読み込んで,プログラムを停めずにバージョンアップするという使い方も可能.(笑)


  • リフレクション

http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%83%AC%E3%82%A...

プログラムが,自分自身に関する情報を取得・操作することができる.


  • LISP インタプリタを LISP 自身で記述することができる.(しかも非常に簡単に!)

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

id:GokiburiZ

Lispの機能のほとんどは現代のプログラミング言語が持っていると思いますが。

Lispが他と比べて強力なのは自己記述性くらいではないでしょうか?

2007/08/18 14:55:42
id:yishin No.4

回答回数33ベストアンサー獲得回数1

ポイント16pt

Pascal

http://ja.wikipedia.org/wiki/Pascal

1プログラム、1ファイル構成。

メインルーチンは最後にあり、サブルーチンや関数は上に行けば見つかる。

ローカルな関数、サブルーチンが使える。

id:GokiburiZ

1プログラム1ファイル構成が変わっているかどうかはともかく、これは役に立たないと思います。

ローカル関数、サブルーチンは案外見かけない気もしますが(Schemeにはありますね)。

2007/08/18 15:00:25
id:Z9M9Z No.5

回答回数343ベストアンサー獲得回数11

ポイント16pt

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(ガードつきホーン節)ベースの論理プログラミング言語。

id:garyo No.6

回答回数1782ベストアンサー獲得回数96

ポイント16pt

*Erlang について

http://jp.rubyist.net/magazine/?0017-Legwork

Erlang は元々電話交換機のような信頼性が要求される環境のために設計されたプログラミング言語なので、エラーによってプログラム全体の動作が停止しないように設計されています。あるプロセスで発生した例外はそのプロセスだけを停止させ、デバッガーを起動させます。そこでプログラムを修正し、そのモジュールを再ロードさせてから続きを実行させることもできます。

非常に軽量なプロセスを多数安定して実行できる点が注目されています。

id:noocyte No.7

回答回数21ベストアンサー獲得回数3

ポイント16pt

> Lispの機能のほとんどは現代のプログラミング言語が持っていると思いますが。

現在ではそうだと思いますが,LISP が最初かつはるかに早く

実現したという意味で書きました.


> Lispが他と比べて強力なのは自己記述性くらいではないでしょうか?

どんな計算モデル (関数型,論理型,オブジェクト指向,…) でも

取り込める懐の深さ,というのはどうでしょうか?

「どう転んでもLisp」で「泥の玉」と表現されているものです.

http://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeu...

id:GokiburiZ

申し訳ございませんが歴史の話は今回の質問の趣旨から外れてしまいますので。

Lispが任意のパラダイムを取り込める柔軟な言語であるという指摘に関しては了解です。

2007/08/18 16:08:08
id:KUROX No.8

回答回数3542ベストアンサー獲得回数140

ポイント16pt

■アッセンブラ

機能だけでお話されるなら、これですね。

これさえあれば、なんでも可能です。

■PL/SQL(ピーエル・エスキューエル)

Oracle社が、Oracle Database のためにコンピュータの

データベース言語 SQL を独自に拡張したプログラミング言語

である。

■Basic

-----------------------

>関数型プログラミングは現在メジャーですね。

関数型プログラミングの意味を取り違えてるのでは?

http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%8...

------------------------

>オフサイドルールは単体で意味のある機能ではないと思います。

単体ってどういう意味で使ってるでしょうか?

------------------------

>ひまわりには日本語を使っているということ以上に特別な

>機能があるのでしょうか?

自然言語感覚でプログラミングできます。

id:GokiburiZ

関数型プログラミングはWikipediaに出ている通りの意味で使っています。

オフサイドルールは単にそういう文法だとしか思えないので、空白が区切り以上の意味を持たない言語に対するオフサイドルールを採用する言語の優れた点を教えてもらえればと思います。

単に正しいインデントを強制できるだけであれば意味のあるものだとは思えません。

ひまわりについては納得です。

2007/08/19 03:33:55
  • id:GokiburiZ
    疑問に思ったことなどをコメントで質問してみました。
  • id:KUROX
    そうですね、疑問は解決してたほうが気分すっきりしますから。
  • id:KUROX
    >関数型プログラミングはWikipediaに出ている通りの意味で
    >使っています。

    ここにあげられている言語はメジャーですか?
    C/C++,JavaとかC#とかこのあたりは関数型プログラミングで
    ないんですよ。
    ---------------------------------------------
    >単に正しいインデントを強制できるだけであれば意味のあるもの>だとは思えません。
    >ひまわりについては納得です

    ひまわりがなっとくできるなら、上記も納得できるのでは。
    英語圏に人々にとっては、自然言語感覚でプログラミング
    できるということです。

  • id:GokiburiZ
    >ここにあげられている言語はメジャーですか?

    実際の業務で使われていないという点では全くメジャーではないですね。
    私としては教育や学術的な研究まで含めてメジャーと言いたかったのですが、これは最初に明確にしておくべきでした。
  • id:KUROX
    教育や学術的な研究まで含めてですか。
    納得はできました。
    Lisp系の処理がないと研究には向かない分野もありますから。
  • id:lunlumo
    ・Ruby - Mixin
    クラス階層を横断して実装を共有できる
    http://www.namaraii.com/rubytips/?%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB

    ・Haskell - Monad
    参照透明性と実用性を両立
    http://www.sampou.org/haskell/a-a-monads/html/introduction.html#why

    ・Eiffel - 表明
    書く処理の役割をコード内で表明できる
    http://kapibara.hp.infoseek.co.jp/eiffel/assertion.htm

    ・C - ポインタ演算・メモリ操作
    参照及びメモリを直接弄る事が出来る
    http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

    ・D - コンパイラ屋さんが作った言語
    既存の言語のおいしい所をつまみ食いしている
    http://www.kmonos.net/alang/d/overview.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません