http://pc12.2ch.net/test/read.cgi/tech/1274015781/l50 の継続スレのかたわれです。
低水準言語にこだわる人は「低水準言語を開発したい」のほうへどうぞ。
探検
新言語を開発したい
■ このスレッドは過去ログ倉庫に格納されています
2010/05/30(日) 21:52:01
616デフォルトの名無しさん
2020/03/01(日) 04:56:07.46ID:KJRyWF55 構文解析のほうで実装してみた
しばらく様子見\(^o^)/
しばらく様子見\(^o^)/
617デフォルトの名無しさん
2020/03/01(日) 12:08:03.80ID:rykl778t 1--1
1-+1
1+-1
1++1
これが全部エラーにならなければOK
1-+1
1+-1
1++1
これが全部エラーにならなければOK
618デフォルトの名無しさん
2020/03/01(日) 12:11:42.19ID:7BIH7/M6 むしろエラーにすべき
619デフォルトの名無しさん
2020/03/01(日) 17:04:58.63ID:KJRyWF55620デフォルトの名無しさん
2020/03/01(日) 17:16:02.26ID:uCYLr/KI そういうのも含めて自分で開発するメリットなんじゃないの
621デフォルトの名無しさん
2020/03/01(日) 18:27:06.13ID:wjTinnpB622デフォルトの名無しさん
2020/03/01(日) 20:07:05.56ID:KJRyWF55 オペレーターオーバーロードか
それを実装できるまで開発できればいいな
それを実装できるまで開発できればいいな
623デフォルトの名無しさん
2020/03/02(月) 11:24:05.89ID:glnmwhpK C++で「.」を置き換えたいときってあるよね
624デフォルトの名無しさん
2020/03/04(水) 15:07:44.77ID:OVwEz4W2625デフォルトの名無しさん
2020/04/20(月) 22:56:31.96ID:RmTF1U13 import文実装した
これでモジュールが作れるようになった
これでモジュールが作れるようになった
626デフォルトの名無しさん
2020/04/23(木) 02:45:15.33ID:/FC0LGbb おめでとう。私は未だに脳内妄想言語でプログラミング中。そろそろ仕様が固まってきたけど,知り合いに「コーディング規則を構文に持ち込んだだけじゃん」言われた。それでもさくさくプログラム組めるのはうれしい。
627デフォルトの名無しさん
2020/04/23(木) 02:46:50.44ID:/FC0LGbb 未完なのでハンドアセンブルでC++に変換して実行。これが面倒。しかも自分の都合の良いようにハンドアセンブルなので先は遠い。
628デフォルトの名無しさん
2020/04/23(木) 03:55:23.89ID:/FC0LGbb 私は良いと思ったが批判された仕様。
var n=10
{
var n=n
pl #(1)$n
set n=5
pl #(2)$n
}
pl #(3)$n
(1)10
(2)5
(3)10
var n=10
{
var n=n
pl #(1)$n
set n=5
pl #(2)$n
}
pl #(3)$n
(1)10
(2)5
(3)10
629デフォルトの名無しさん
2020/04/23(木) 04:29:51.79ID:lusTU/GG630デフォルトの名無しさん
2020/04/23(木) 08:54:54.35ID:lusTU/GG たぶんprint lineか
631デフォルトの名無しさん
2020/04/23(木) 12:15:18.28ID:7IPPlwOj >>628
変数のシャドーイング?をやりたいんだろうけど、専用の文法を用意するより無名関数を使う方が応用範囲が広がると思う
n=10
function(n) {
pl(n)
n=5
pl(n)
}(n)
pl(n)
をもうちょっといい感じの文法になるように
変数のシャドーイング?をやりたいんだろうけど、専用の文法を用意するより無名関数を使う方が応用範囲が広がると思う
n=10
function(n) {
pl(n)
n=5
pl(n)
}(n)
pl(n)
をもうちょっといい感じの文法になるように
632デフォルトの名無しさん
2020/04/24(金) 02:45:59.69ID:PbpLsPOI 「意味は同じだけど値を変えちゃうから後で戻さないと」ってことが良くあって,C++だと変数名を変えるか,保存して元に戻すかなんだけど,これが面倒。で言語仕様に入れたら,コーディング規則を…て言われた。
方法1.{int k=n
while(k-->0){k?kって何?nじゃないの?}
}
方法2.{int save_n=n
while(n-->0){nだよねやっぱり}
n=save_n // 保存して戻すの面倒くせー
}
方法3(妄想).{int n=n
while(n-->0){nだよねやっぱり}
}判りやすいけどC++だとダメって言われる。
方法1.{int k=n
while(k-->0){k?kって何?nじゃないの?}
}
方法2.{int save_n=n
while(n-->0){nだよねやっぱり}
n=save_n // 保存して戻すの面倒くせー
}
方法3(妄想).{int n=n
while(n-->0){nだよねやっぱり}
}判りやすいけどC++だとダメって言われる。
633デフォルトの名無しさん
2020/04/24(金) 02:48:29.29ID:PbpLsPOI634デフォルトの名無しさん
2020/04/24(金) 03:36:21.85ID:C8KCXRw9635デフォルトの名無しさん
2020/04/24(金) 21:24:00.48ID:PbpLsPOI >>634
↓これも考えたけど他にも仕様があったので,n=n 方式に落ち着いた。
方法4(妄想).{save n
while(n-->0){nだよねやっぱり}
}block を外れたら元に戻す
私は見やすいと思ったけど見難いって思う人もいるんだね。多分作っても自分以外使う人はいないだろうから自分の使いやすさを優先。
↓これも考えたけど他にも仕様があったので,n=n 方式に落ち着いた。
方法4(妄想).{save n
while(n-->0){nだよねやっぱり}
}block を外れたら元に戻す
私は見やすいと思ったけど見難いって思う人もいるんだね。多分作っても自分以外使う人はいないだろうから自分の使いやすさを優先。
636デフォルトの名無しさん
2020/04/25(土) 12:36:22.20ID:8zx+uG+T オブジェクトの代入をコピーから参照に変更した
ガーベジコレクション実装したからコピーじゃなくても良くなった
ガーベジコレクション実装したからコピーじゃなくても良くなった
637デフォルトの名無しさん
2020/04/28(火) 16:36:13.39ID:0ndGBSxH bool値が計算式の文脈で整数に暗黙的に変換される言語ってけっこうある?
pythonとかCはそうだけど
pythonとかCはそうだけど
638デフォルトの名無しさん
2020/04/28(火) 17:25:19.84ID:ZNkTbKCD javascript perl ruby
639デフォルトの名無しさん
2020/04/29(水) 04:58:37.79ID:OU7gofh4 >>638
javascriptもそうか
javascriptもそうか
640デフォルトの名無しさん
2020/04/29(水) 08:35:38.20ID:SQgN1Iil rubyは違うんじゃないかな
641デフォルトの名無しさん
2020/05/08(金) 03:15:45.15ID:axHleTaa >>637
個人的には、論理値は論理演算の結果であって欲しいことが多い。I/Oの時だけ関数を使って変換すれば良いのにと思う。
論理値はたまに true false だけじゃなく unknown が欲しくなる。4値を欲しくなったことはまだない。
個人的には、論理値は論理演算の結果であって欲しいことが多い。I/Oの時だけ関数を使って変換すれば良いのにと思う。
論理値はたまに true false だけじゃなく unknown が欲しくなる。4値を欲しくなったことはまだない。
642デフォルトの名無しさん
2020/05/08(金) 09:53:46.10ID:I+XSb0yz 型が無いBCPLあたりが整数と論理値を区別しない仕様を導入
↓
Cがその特徴を引き継いだまま大ヒットしてしまう
↓
これじゃまずいとboolを導入したけど後の祭り
Cの真似する言語も出てきて収拾不能
↓
Cがその特徴を引き継いだまま大ヒットしてしまう
↓
これじゃまずいとboolを導入したけど後の祭り
Cの真似する言語も出てきて収拾不能
643デフォルトの名無しさん
2020/05/08(金) 10:05:18.77ID:oIDbptWL boolがintでも特に問題は無い
Cの時点では崩壊はしていない
崩壊を決定的にしたのはperl
Cの時点では崩壊はしていない
崩壊を決定的にしたのはperl
644デフォルトの名無しさん
2020/05/08(金) 10:45:08.57ID:0sjMHJ2y Rubyは、整数の1だけでなく、0もtrue扱いになってしまうのが衰退した1つの原因
だと思う。
後は複数行コメントの書きにくさ。
だと思う。
後は複数行コメントの書きにくさ。
645デフォルトの名無しさん
2020/05/08(金) 11:34:24.30ID:I+XSb0yz Cのやり方が普通だと刷り込まれてしまった人がそれだけ多いってことかも
646デフォルトの名無しさん
2020/05/08(金) 13:17:31.24ID:0sjMHJ2y ・trueとfalseは、キーワードの長さが違っているので面倒。
むしろ、0/1 の方が楽。
・トグル動作などは、
bXxx = 1 - bXxx;
と書くと楽だし分かり易い。
しかし、これは、true/false ではなく、0,1 であるからこそ出来るテクニック。
・逆に、bXxx = 2 などと 0/1 以外を入れてしまった場合には問題となるが。
むしろ、0/1 の方が楽。
・トグル動作などは、
bXxx = 1 - bXxx;
と書くと楽だし分かり易い。
しかし、これは、true/false ではなく、0,1 であるからこそ出来るテクニック。
・逆に、bXxx = 2 などと 0/1 以外を入れてしまった場合には問題となるが。
647デフォルトの名無しさん
2020/05/08(金) 13:18:36.96ID:0sjMHJ2y #if 0
・・・
#endif
でコメントアウトできるのは凄くありがたい。
Ruby だと、
if false
end
と書かざるを得ないのが凄く辛い。
・・・
#endif
でコメントアウトできるのは凄くありがたい。
Ruby だと、
if false
end
と書かざるを得ないのが凄く辛い。
648デフォルトの名無しさん
2020/05/08(金) 13:21:11.70ID:0sjMHJ2y >>647
#if 0 だと、#if 1 に変更するのが 1 文字変えるだけだから簡単。
Ruby だと、false を true に書き換えなくてならないのでとても辛い。
グローバル変数で、
$bXxxSwitch = false
を
$bXxxSwitch = true
に書き換えることが面倒なこといったらこの上ない。
#if 0 だと、#if 1 に変更するのが 1 文字変えるだけだから簡単。
Ruby だと、false を true に書き換えなくてならないのでとても辛い。
グローバル変数で、
$bXxxSwitch = false
を
$bXxxSwitch = true
に書き換えることが面倒なこといったらこの上ない。
649デフォルトの名無しさん
2020/05/08(金) 13:36:55.88ID:0sjMHJ2y 昔から、Cだと、TRUE/FALSEなどは余り使わずに、コンパイルスイッチをマクロで
#define XXXX 0
と
#define XXXX 1
で切り替える文化だった。
これだと、0と1を切り替えるのがわずか1文字の修正ですぐに出来るので
開発効率が上がる。
それに対して、Rubyだと、true/false と書き換えなければならないので面倒な
ことこの上ない。Rubyだと
if false
・・・
elsif true
・・・
elsif false
・・・
elsif false
・・・
end
となっているところを、trueの位置を変えようとしたときにすこぶる面倒になる。
それに対してCのやり方はとても効率的だ。
#define XXXX 0
と
#define XXXX 1
で切り替える文化だった。
これだと、0と1を切り替えるのがわずか1文字の修正ですぐに出来るので
開発効率が上がる。
それに対して、Rubyだと、true/false と書き換えなければならないので面倒な
ことこの上ない。Rubyだと
if false
・・・
elsif true
・・・
elsif false
・・・
elsif false
・・・
end
となっているところを、trueの位置を変えようとしたときにすこぶる面倒になる。
それに対してCのやり方はとても効率的だ。
650デフォルトの名無しさん
2020/05/08(金) 14:11:41.56ID:Fn4yfVbS 各型に、真偽値を持ってる言語は、テストがやっかい。
JavaScript, Python, PHP など
0, 0.0, 空文字列、空配列、空辞書とか、
こういうのは各型で、true?, false? みたいなメソッドを作るべき!
各型において、真偽値の意味は決まっていないから、メソッドで定義すべき。
"abc".true?
標準で、真偽値に変換されるのは迷惑。
真偽値は、true/false のみ。例外的に、nil
テストで気づかずに、パスしてしまったら大変!
Ruby だけは、間違わないようにしてる
JavaScript, Python, PHP など
0, 0.0, 空文字列、空配列、空辞書とか、
こういうのは各型で、true?, false? みたいなメソッドを作るべき!
各型において、真偽値の意味は決まっていないから、メソッドで定義すべき。
"abc".true?
標準で、真偽値に変換されるのは迷惑。
真偽値は、true/false のみ。例外的に、nil
テストで気づかずに、パスしてしまったら大変!
Ruby だけは、間違わないようにしてる
651デフォルトの名無しさん
2020/05/08(金) 17:00:38.05ID:iOEjZYuS C# の & とか | (一個の方) って bit 演算かと思ったら
論理演算もこれなんだな
二個の方は論理演算と言わずに実行時の最適化で短縮とか違う目的で使うんだな
論理演算もこれなんだな
二個の方は論理演算と言わずに実行時の最適化で短縮とか違う目的で使うんだな
652デフォルトの名無しさん
2020/05/08(金) 19:49:26.61ID:I3Mp5evD >>651
そういえば、もともと、マシン語レベルで見れば、and や or という命令で、
本当は、bit演算も論理演算も、真の値を1、偽の値を0としている限りは
評価結果に限定すれば同じ。
ただ違うのは、&& や || は、以後の値を副作用も含めて完全に SKIP して
全く評価し無い事があるかもしれないということ。
このことは、ANSI Cの仕様には書いて無いかも知れないが、MSが決めた
Standard Cには書いてある。
そういえば、もともと、マシン語レベルで見れば、and や or という命令で、
本当は、bit演算も論理演算も、真の値を1、偽の値を0としている限りは
評価結果に限定すれば同じ。
ただ違うのは、&& や || は、以後の値を副作用も含めて完全に SKIP して
全く評価し無い事があるかもしれないということ。
このことは、ANSI Cの仕様には書いて無いかも知れないが、MSが決めた
Standard Cには書いてある。
653デフォルトの名無しさん
2020/05/08(金) 19:53:32.82ID:59El8zT0 個人的には真偽値と整数は別物で暗黙の型変換もしない方が好み
利便性より読みやすさ
利便性より読みやすさ
654デフォルトの名無しさん
2020/05/09(土) 07:00:49.65ID:LY1UFL2t >>653
言語仕様とは関係ないが、最近
if( a!=b) {
...
}
のようなコーディングをしないで
if( a==b) {
}
else {
...
}
と書くことが増えてきた。
昔はやらなかったけど、最近この方が見やすく感じることがある。年のせいかな。
言語仕様とは関係ないが、最近
if( a!=b) {
...
}
のようなコーディングをしないで
if( a==b) {
}
else {
...
}
と書くことが増えてきた。
昔はやらなかったけど、最近この方が見やすく感じることがある。年のせいかな。
655デフォルトの名無しさん
2020/05/09(土) 09:31:34.54ID:3rxWY8lS if( a==b) else {
...
}
とか
if( a==b) ; else {
...
}
って描けないんだっけ
...
}
とか
if( a==b) ; else {
...
}
って描けないんだっけ
656デフォルトの名無しさん
2020/05/09(土) 11:30:27.77ID:G1m2Vl9B rubyにはunlessがあるね
657デフォルトの名無しさん
2020/05/09(土) 13:44:34.03ID:LY1UFL2t658デフォルトの名無しさん
2020/05/09(土) 13:46:24.94ID:LY1UFL2t 以下のような文を書きたいと常々思っている。
int a[]={5,2,3,7,2};
int imax=, imin=;
for( int i=0; i< 5; i++) {
if( a[i]< imin) {
imin=a[i];
}
if( a[i]> imax) {
imax=a[i];
}
}
未定義との比較は true にしてくれる言語ってあるのかな。
int a[]={5,2,3,7,2};
int imax=, imin=;
for( int i=0; i< 5; i++) {
if( a[i]< imin) {
imin=a[i];
}
if( a[i]> imax) {
imax=a[i];
}
}
未定義との比較は true にしてくれる言語ってあるのかな。
659デフォルトの名無しさん
2020/05/16(土) 06:19:12.59ID:Sb1DC7SK >>656
undef って日常生活の中で使わないと思っていたが,
雨が降らなければ外出する
というような使い方をすることがある。
この場合
晴れたら外出する
ような言い方もするけど,曇りや雪とかの色々場合分けすると
ライトついてますか?
みたいになってしまうので,言語云々の話では無く設計の問題になってしまう。
undef って日常生活の中で使わないと思っていたが,
雨が降らなければ外出する
というような使い方をすることがある。
この場合
晴れたら外出する
ような言い方もするけど,曇りや雪とかの色々場合分けすると
ライトついてますか?
みたいになってしまうので,言語云々の話では無く設計の問題になってしまう。
660デフォルトの名無しさん
2020/05/16(土) 06:20:35.38ID:Sb1DC7SK >>659
undef じゃなくて unless だった
undef じゃなくて unless だった
661デフォルトの名無しさん
2020/06/30(火) 21:17:21.34ID:M4U6Kwpw 自作言語の新機能を考えてるけど、いまいち確信が持てず実装がはかどらない
662デフォルトの名無しさん
2020/07/01(水) 11:03:25.24ID:IfUrt5hg 無いものを創るのってそんなもんだろ
とりあえず進めて間違ったらやり治せば良い
とりあえず進めて間違ったらやり治せば良い
663デフォルトの名無しさん
2020/07/01(水) 14:51:57.49ID:xctfYLeY そうだな
Gitもあるしな
Gitもあるしな
664デフォルトの名無しさん
2020/10/09(金) 05:25:08.17ID:bdkjFn4I 自己参照ってどうやるんだろう
2回パースさせるのか?
2回パースさせるのか?
665デフォルトの名無しさん
2020/10/09(金) 22:44:45.83ID:bdkjFn4I 解決した
666デフォルトの名無しさん
2021/01/22(金) 23:33:09.87ID:hRbCIOLy ・言語もデータにならんかな?
→全コードがDBの1テーブルに入る
・テキストエディタもうやめない?
→GUIで作成可能
・メタ的にコードからコードを作れる
・誰でもどこからでも読み込める
・誰でもどこからでも実行可能
・言語のパーサ仕様はCSV
・GUIで見るとc言語っぽく見える
・他言語から容易に呼べる
よっしゃ、作るぜ
→全コードがDBの1テーブルに入る
・テキストエディタもうやめない?
→GUIで作成可能
・メタ的にコードからコードを作れる
・誰でもどこからでも読み込める
・誰でもどこからでも実行可能
・言語のパーサ仕様はCSV
・GUIで見るとc言語っぽく見える
・他言語から容易に呼べる
よっしゃ、作るぜ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★8 [ぐれ★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- いじめ後遺症 15年前のトラウマに苦悩する当事者「夢の中に出てくる」「された側は一生ものの傷」 [♪♪♪★]
- 【実況】博衣こよりのえちえちダンガンロンパ6🧪
- 【実況】博衣こよりのえちえちダンガンロンパ5🧪
- 【高市速報】毎日の調査で衆院投票先、自民2.4維新7.2立憲14.5国民6.0公明8.4参政4.8共産21.7れいわ19.3保守1.2社民3.6みらい10.8 [369521721]
- 高市政権「な、なぜだ?なぜレーダー照射問題でもアメリカは日本を助けてくれないんだ!?」 [805596214]
- 🏡パン🍞つー✌まる👌見え👊😅👊
- 【正論】検察「山上よ、どんな事情があろうと暴力が許されない」 [442080748]
