新言語を開発したい

■ このスレッドは過去ログ倉庫に格納されています
2010/05/30(日) 21:52:01
http://pc12.2ch.net/test/read.cgi/tech/1274015781/l50 の継続スレのかたわれです。
低水準言語にこだわる人は「低水準言語を開発したい」のほうへどうぞ。
235デフォルトの名無しさん
垢版 |
2012/10/29(月) 00:14:11.35
>>231
なぜ区別しないといけないのか?
頭が硬すぎる。

2012/10/29(月) 00:23:10.93
言語と実行・開発環境をセットにしたくてしたくてしょうがない人が少し前から居ついちゃったねw
2012/10/29(月) 00:30:45.17
つ 目の前のものしか考えられない頭
238デフォルトの名無しさん
垢版 |
2012/10/29(月) 00:50:09.87
まあ言語と環境は完全に切り離せないからな。

動的型付け言語で、まともに静的コード補完が出来ないのは
言語仕様のせいなわけだし。

開発環境を補完するための言語仕様があってもいいでしょ。
2012/10/29(月) 02:26:26.12
くっつけると新しいものが生まれてくると思い込んでる頭がいるね
240デフォルトの名無しさん
垢版 |
2012/10/29(月) 02:49:40.72
>>239
それは正しいよ。
たとえばVisual StudioとかEclipseとかね。
2012/10/29(月) 03:20:57.64
うわべだけ別の話を持ち込まれても何にもならないね
242デフォルトの名無しさん
垢版 |
2012/10/29(月) 03:32:52.84
そのコメントも意味が無いねw
2012/10/29(月) 10:53:37.81
とりあえず使える文字決めようぜ
2012/10/29(月) 10:59:39.79
プログラムの最後は.にするか。
2012/10/29(月) 16:21:20.58
begin end でプログラムを区切ると、使える記号増えるけど、begin end という名前の関数と変数が使えない
2012/10/29(月) 16:44:21.43
環境込みの言語を開発するのは良いよ。
でも、その前に何故Smalltalkではダメなのか
はっきりさせないと、車輪の再発明になるだけだよ。

>>224
>>223の方法でemacsやvimでコード補完できる言語(コンパイラ)あるよ。
2012/10/29(月) 17:14:41.12
Smalltalkの良さを語ってくれ。
2012/10/29(月) 17:14:55.67
OCamlとかな
2012/10/29(月) 17:19:13.55
「環境込みの言語」ってのは、なに言ってるのかさっぱり分からん。
単に開発環境と実行環境を統合した環境のことを言っているのだろうか、
それともさらにリフレクション機能がを持った環境のことを言っているのだろうか。

いずれにせよ言語仕様と言語処理系実装を区別して考えられない人らしい。
2012/10/29(月) 17:36:58.60
環境込みの言語とは、これの事じゃ!
http://www.runexy.co.jp/personal/ultra_c/outline/

C言語という独立した仕組みがあるんじゃ…という突っ込みは無し。
2012/10/29(月) 20:03:40.10
環境を実装と直結した形でしか考えられないほうが
どうかしてるよ。
環境というものを抽象化する能力が欠如してるだけじゃなく、
その発想すら無いってことだからね。
252デフォルトの名無しさん
垢版 |
2012/10/29(月) 23:19:47.19
ぷw 今までと同じやり方の
発想しか出来な人がなんか言ってるよw
2012/10/29(月) 23:27:54.98
このスレに今までと違う発想なんて
一片たりとも存在してないけど……
254デフォルトの名無しさん
垢版 |
2012/10/29(月) 23:41:07.44
一片たりとも存在していないのであれば、
一体何に対して反論していたというのか?
2012/10/29(月) 23:46:17.57
このスレって要するに

・Haskell, OCamlレベルの型推論があって
・Visual Studio並みのコード補完がEmacsやvimのようなエディタからも使えて
・馬鹿でも使いこなす事ができる

そんな言語が欲しいってことでしょ?
2012/10/29(月) 23:53:49.53
> 馬鹿でも使いこなす事ができる
これさえ満たしていれば後はどうでもいい
2012/10/29(月) 23:58:58.53
じゃあVBとPHPを参考にすれば良い
258デフォルトの名無しさん
垢版 |
2012/10/30(火) 01:51:16.57
それは馬鹿なら使いこなせる言語。
馬鹿でも使いこなせる言語は別物。
2012/10/30(火) 07:11:53.07
じゃあJavaだな
馬鹿用に設計され、初心者も熟練者も一律して冗長なコードになる
2012/10/30(火) 10:38:26.24
馬鹿には、汎用言語すらむいてない。
261デフォルトの名無しさん
垢版 |
2012/10/30(火) 11:23:12.35
馬鹿にも分かってほしい最低要素

・プログラムカウンタとスタックカウンタ
・フラグレジスタと、その他のレジスタ
・スタティック領域、ヒープ領域、スタック領域の違い。
・関数と変数のポインタ

・ポリモーフィズムとインターフェース
・コンパイル時リンクと、実行時リンクの違い

・GUIとCUIの最大の違い
2012/10/30(火) 12:10:17.93
COBOLでいいじゃん
2012/10/30(火) 12:44:48.36
たし算すら統一されてない言語のどこがいいんだ。
2012/10/30(火) 18:09:03.82
ぶっちゃけ制作中だが宣伝してもいいかい?Cベースの図形言語なんだけど
2012/10/30(火) 21:31:42.64
>>264
IDE言語統合厨がいるから、何でもいいから話を作ってくれ
2012/10/30(火) 22:41:06.79
ぶっちゃけIDEのコード補完が重要なのは冗長な言語だけ
他は「あったら良いけど、無くても問題無い」レベル
2012/10/31(水) 00:55:10.11
>>234
それ、型を宣言するのと何が違うん?

ああ、実行時に異なる変数を代入すれば違う型として扱えるってことか。

んでも、違う型になりえる変数を使うことにイマイチメリットが見いだせないなぁ。
268264
垢版 |
2012/10/31(水) 05:12:16.46
>>265

んじゃ、「12」っていうんだが・・・

http://d.hatena.ne.jp/programmingshape12/20121028/1351384322
2012/10/31(水) 05:56:51.98
>>267
例えば、関数の引数なんかが何でも代入できたら便利って思わない?
でも、実行コードは、テンプレートと同じように膨れ上がるけど。
2012/10/31(水) 07:27:27.96
それって只の多相型じゃん
静的型付け関数型言語なら大抵あるぞ
テンプレートのように実行コードが膨れ上がったりもしない
271デフォルトの名無しさん
垢版 |
2012/10/31(水) 12:39:22.97
テンプレート関数って、多相型あればいらなくね?
272デフォルトの名無しさん
垢版 |
2012/10/31(水) 22:03:32.83
>>269
> 例えば、関数の引数なんかが何でも代入できたら便利って思わない?

例えば、fooという関数があって、intとstringを引数に取れるとする。

それはfoo(int value)とfoo(string str)の2つの関数を定義するのと同じ事。
オーバーロードって呼ばれる機能のことね

君がそういう意図で書いたのではないということはわかっているが、
つまり、「関数の引数なんかが何でも代入できる」というのは
オーバーロードを備えている言語、Javaなども当てはまる。
273デフォルトの名無しさん
垢版 |
2012/10/31(水) 22:08:49.25
そう、オーバーロードやテンプレートで関数の引数は
なんでも代入できるってのは実装できる。

ここで比較するべきことは、
「オーバーロードやテンプレートを使ってなんでも代入できる」と
「型がないがゆえになんでも代入できる」の2つの違い。

型が違えば、処理もわずかながら違ってくる。
つまり、後者は引数に何が入っているかで処理を切り替えないといけなくなる。
そして想定外のものが入っている可能性もあるので、引数チェックも必要になる。

つまり、後者は劣った方式。
2012/11/01(木) 07:35:35.91
Javaにはジェネリクスもあるのに
何でオーバーロードで例えるんだよ
ほんとに分かってんのか?
275デフォルトの名無しさん
垢版 |
2012/11/01(木) 08:12:04.58
型無しの変数だけ、型名にvarと宣言させれば、
オーバーロードと同時に使えるかもしれない
2012/11/01(木) 08:31:08.44
メソッドのオーバーロードの話をしているのか
型システムでいう多相型の話をしているのか
(動的型付け言語で見られる)型の無い変数の話をしているのか
277275
垢版 |
2012/11/01(木) 12:04:05.92
多相型を予約語一つで実装しながら、オーバーロードも実装したいという話。
2012/11/01(木) 19:51:37.37
多相型って、OCamlとかにあるアレのこと?
それともVBのVariantのこと?
2012/11/01(木) 21:26:13.92
OCamlとかのアレのことです
2012/11/01(木) 21:57:59.59
>>271
C++のtemplateは、
・クラスごとに実装を別に出来る
 (実装を別にしたくない場合は、templateでなくvirtual関数を駆使する)
・クラスだけでなく整定数ごとに別の実装を持てる
・再帰的に定義できる (コンパイル時に原始帰納関数が計算できる)
という特徴がある。
後者2つのせいでtemplate meta-programmingが炸裂した。
2012/11/01(木) 22:18:20.16
多相型を実現する機能とメタプログラミングを実現する機能、
それぞれ分かれてる方が良いんじゃないかな
2012/11/01(木) 23:18:52.66
>>277
型クラス
283デフォルトの名無しさん
垢版 |
2012/11/01(木) 23:21:02.71
多相とオーバーロードって
関数のエントリポイントが
同一か型ごとに分かれてるかの違いだろ?
2012/11/01(木) 23:33:37.05
型推論しないなら、多相型とオーバーロードの共存も難しく無いよ
2012/11/02(金) 00:07:04.19
>273
そういうのはダックタイピングで対応できる。
完全には行かないけどね。
286デフォルトの名無しさん
垢版 |
2012/11/02(金) 01:42:15.26
C++のtemplate、メタプログラミングは発展途上だと思う。
もっと使い易くしてほしい。
2012/11/02(金) 02:25:21.11
それはconceptでFA.
288デフォルトの名無しさん
垢版 |
2012/11/02(金) 08:09:55.62
ダックタイピングってインターフェースを
定義しないインターフェース。

型安全性をなくしたインターフェースなんだよね。
2012/11/02(金) 09:58:23.85
いやインターフェイスだけを定義したといった方がいいだろ。
型安全がないから例外は必須だよね
2012/11/02(金) 13:55:01.46
テンプレートもインターフェースも多用すると
マクロ展開多用したコードみたいになる。何事も
バランスというか節度は大切やね
2012/11/03(土) 01:39:59.40
で、その多層型のメリットは何?
2012/11/03(土) 07:45:42.44
map :: (a -> b) -> [a] -> [b] とか、もし多相型が無かったら
全ての型a,bに対してmapを定義する必要があるじゃん?

動的型と違うのは、map f xs としたときに
fの引数の型とxsの要素の型が一致してないと
型エラーになるところ
293264
垢版 |
2012/11/03(土) 08:17:49.03
仕様ができたので公開します。

http://d.hatena.ne.jp/programmingshape12/searchdiary?word=%2A%5B12%B4%D8%CF%A2%5D
294デフォルトの名無しさん
垢版 |
2012/11/03(土) 10:51:58.53
>>292
> 全ての型a,bに対してmapを定義する必要があるじゃん?

ないよ。その為のinterfaceでありgenericsだろ。
2012/11/03(土) 10:59:01.58
>>294
Javaのgenericsは多相型(パラメータ多相)
2012/11/03(土) 11:05:05.30
JavaのGenericsはびっくりするくらい不完全なゴミだけど
一応多相型
2012/11/03(土) 15:12:20.67
そもそも、多相型を使うメリットは何?
298デフォルトの名無しさん
垢版 |
2012/11/03(土) 15:56:29.22
型ごとに関数やクラスを作らなくていいし、
対応している型が何かが、関数の定義としてすべて簡単にわかる。
2012/11/03(土) 18:05:16.70
コードを書く量が減るってことか?

対応してる型が何かが分かるというのは、型ごとに作る場合も一緒だろ?
それは多相型のメリットではない。

型により挙動が変わるコードを書くことができるので便利ということなら
逆に動作が分かりにくいコードを書けることにも繋がるので
邪魔な機能という気がするがなあ。
2012/11/03(土) 18:14:41.66
びっくりした。
コレクションごとにfor文も別に用意するか?
2012/11/03(土) 18:29:28.79
それならCのキャストでも良いだろ?
動かしてみないと実際の中に見合った型が分からないのはバグの温床。
302デフォルトの名無しさん
垢版 |
2012/11/03(土) 18:48:54.98
>>299
例えば配列があったとするよね?

数値用配列と文字用配列はどちらも配列だから
配列として作りたい。

だけど数値用配列には数値しか入れたくない。
数値しか入らないのであれば、数値以外を間違っていれようとしたらエラーにできるし
配列から取り出したものは必ず数値だから高機能エディタは数値用のメソッドだけを
コード補完できるようになる。
2012/11/03(土) 18:58:55.25
まったく多相型のメリットになってないけど、それがどうした?
304デフォルトの名無しさん
垢版 |
2012/11/03(土) 19:09:50.89
>>303
多相型ってわかってる?
ちょっと説明してみせて。
2012/11/03(土) 19:25:03.09
>>304
日常的に使われる加算演算子‘+’が
整数・実数・複素数等、型を意識しなくとも同様に使えるように、

コンピュータ言語において、変数や関数の型を意識しなくても同様の挙動をするものを
まとめて扱う機能のこと。
2012/11/03(土) 20:01:53.45
馬鹿な意見が出てくるわけだ…
307デフォルトの名無しさん
垢版 |
2012/11/03(土) 21:42:26.80
>>305
それは「型」じゃねぇ。
308264
垢版 |
2012/11/04(日) 07:24:51.99
で此処の人たちは能書きばかりで実際に言語作る気あるのん?
2012/11/04(日) 11:43:24.67
>307
複数の型を同じように処理できるって言う正しい説明だ思う。
2012/11/04(日) 12:09:13.65
多相型は最初に書きやすくてもメンテしづらい。
作り捨てプログラマなら平気なんだろうけど。
メンテしづらい言語仕様は糞だよ糞。
311デフォルトの名無しさん
垢版 |
2012/11/04(日) 13:48:44.52
>>310
動的型付け言語はもっとダメだろうなw
2012/11/04(日) 17:24:12.16
>>305
それはオーバーロード
2012/11/04(日) 22:55:33.65
>>310
お前の使って言語は型推論もしてくれないようなクソ言語なわけだ
2012/11/04(日) 23:20:07.69
型だけ違ってアルゴリズムが同じコードを
コピペしまくった方がメンテしやすいとは
>>310は面白い奴だなぁ
2012/11/04(日) 23:35:28.72
>>314
そこで void * ですよ
2012/11/04(日) 23:40:56.78
型安全なコードより
キャストを使ったコードの方がメンテしやすいとは
>>310は面白い奴だなぁ
2012/11/05(月) 00:50:23.41
そこで始原クラス
class Object
ですよ
2012/11/05(月) 01:14:51.74
Objectも元の型に戻すのにキャストいるだろw
2012/11/05(月) 02:54:14.83
幸せなやつばかりでいいな。

多相型を使っても使わなくても、ポリモーフィズムは実現できるし
メンテしやすいように書くこともできる。

しかし、よりメンテしづらいものを書けてしまうのが多相型。

共通する動作を1か所にまとめ、異なる動作をする部分は別々に記述する。
これが、バグを作り込まないための言語としてあるべき姿。

異なる部分が、共通する部分の中に取り込まれる形では
(プログラムの正しさではない)仕様の正しさを人間が検証するのに不向き。

お気楽プログラムしか書かないなら気にしないんだろうけど。
いや、そういうのしか書かないなら本当に気にしなくていいことだよ。
320デフォルトの名無しさん
垢版 |
2012/11/05(月) 05:10:38.83
内容がない文章だな。
俺が反論を書いてやろう。


多相型を使っても使わなくても、ポリモーフィズムは実現できるし
メンテしやすいように書くこともできる。

しかし、よりメンテしづらいものを書けてしまうのが多相型を使わない方式

共通する動作を1か所にまとめ、異なる動作をする部分は別々に記述する。
これが、バグを作り込まないための言語としてあるべき姿。

異なる部分が、共通する部分の中に取り込まれる形では
(プログラムの正しさではない)仕様の正しさを人間が検証するのに不向き。

お気楽プログラムしか書かないなら気にしないんだろうけど。
いや、そういうのしか書かないなら本当に気にしなくていいことだよ。
321デフォルトの名無しさん
垢版 |
2012/11/05(月) 05:11:49.36
なぜこのような反論が成り立ってしまうかというと
>>319に”理由”が書いてないからだ。

理由がなくて主張だけするのであれば、
ほらこのように言葉を入れるだけで成り立ってしまう。
322デフォルトの名無しさん
垢版 |
2012/11/05(月) 05:18:15.45
>>319は次レスするときは、
多相型を使った場合と、使わなかった場合の
実装例を出すべきだな。

それ以外に反論する方法はなかろう。
323デフォルトの名無しさん
垢版 |
2012/11/05(月) 16:45:44.46
荒らしと思われると困るのでレス無用だが、現金より強力な最強プログラミング言語を拳固以外で何かあれば手に入れたい。
2012/11/06(火) 03:14:21.92
反論になってないものに反論することは出来ないし
俺も困らないからどうでもいいや。
少なくとも俺の作ってるのには含まれない機能だしね。
2012/11/06(火) 07:19:46.53
int用リスト、double用リスト、string用リスト、その他ユーザ定義型用リストを作って
それぞれにsort関数書く方がメンテしやすいんですよね?www
2012/11/06(火) 08:23:12.14
多相型ってパターンマッチングとかで使うものじゃなかった?
今話されているような使い方されることもあるの?

C++0xにconceptが入らなかったことが悔やまれる
327326
垢版 |
2012/11/06(火) 08:50:05.39
326のことは忘れてください
2012/11/06(火) 13:19:39.00
>312
多層型を実現するのにオーバーロードを使ってるんだろ。
ソート関数いくつも書くより比較演算子をオーバーロードした方が楽だって事。
2012/11/06(火) 19:44:16.39
Parametric polymorphism
Inclusion polymorphism
Ad-hoc polymorphism

全部違うものなのに、区別しないで議論しても仕方ない
2012/11/06(火) 19:57:09.25
何を言っているのかわかりづらいので、
Adhoc polymorphism
Parametric polymorphism
Subtype polymorphism
という用語を使って話してもらえますか?

オーバーロードというのは、型ごとに別の定義を持つ(組み込みのものを含む)
adhoc polymorphismのことを言っているということでいいですか?
2012/11/06(火) 19:57:50.51
>>329
めっさかぶった!w
inclusion = subtypeね。
2012/11/06(火) 22:01:55.60
>>328
とりあえずソート関数の型を書いてみようか
2012/11/06(火) 23:35:26.36
sort[T <: Comparable] : Seq[T] => Seq[T]
2012/11/07(水) 00:01:27.20
sort :: Ord a => [a] -> [a]
2012/11/07(水) 00:03:29.58
haskellはList限定なのね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況