「コンパイラ・スクリプトエンジン」相談室16

2016/02/01(月) 16:11:44.37ID:aq9Mx2ga
そんなあなたにスタンディングマスターオベーション
375デフォルトの名無しさん
垢版 |
2016/02/02(火) 10:57:23.41ID:9eq1u0GM
>>371
「C言語をマスターしました」
という奴の化けの皮をはがすのは、意外に簡単だからな。
簡単な計算機プログラムを書かせるか、あるいは、ピタゴラスの定理の
コードでも書かせるか。もっとも、そこで化けの皮がはがれるようなら、
とてもコンパイラの領域まで、進むことは出来ないだろうな。
2016/02/02(火) 11:36:11.92ID:7f7wf/mW
コンパイラを書ける最低レベルに達しているかどうかの判定がしたければ
「入力された多項式を微分する関数書くならどう書く?」ってくらいは聞きたいけど。
C言語云々じゃなくてデータ構造とアルゴリズムの問題だけど、
Cでやるならポインタと再帰とラムダ算法について知ってなきゃ答えられない。
2016/02/02(火) 20:19:50.93ID:WkrnCzmR
>>376
単純な多項式に限定していいなら再帰いらんでしょ
最終的に多項式に変換できる式と言うなら別だけど
2016/02/02(火) 22:20:22.51ID:7f7wf/mW
>>377
すまん
素で項数無限だったり微分不能な関数が入ってたりしないって意味で多項式って言っとったわ。
log(x^2+8*x)とかsin(kx+wt)とかも多項式(笑)
379デフォルトの名無しさん
垢版 |
2016/02/03(水) 11:44:18.92ID:tCheJck0
面接時「Cを三年ほど仕事で使っていました」
   ↓
採用後「誰だ。あいつを採用したのは!」

「最低、Cを仕事で三年間使っていること」
を条件に採用した会社で、こんなこともないわけではないからな。
本人の申告ほどあてにならないものはない。コンパイラ作成に到達する
など、夢のまた夢。
2016/02/03(水) 11:59:22.08ID:uEOUJl1K
他人の突っ込んだバグを直せるのが中級者
自分の突っ込んだバグを直せるのが上級者
それ以外は何の参考にもならない
2016/02/03(水) 12:36:45.52ID:Gb259GwX
それ以外っつーとどんなバグも直せない奴か
そりゃ確かに考慮に値しないな
382デフォルトの名無しさん
垢版 |
2016/02/03(水) 13:57:01.05ID:WaqhOfMD
まあもともとCはコンパイラを書くには向いてないからな
GADTとかある関数型言語で書くのが一番楽

あとコンパイラが糞になるのは大抵対象言語の糞文法と糞デザインのせい
2016/02/03(水) 13:57:40.61ID:WaqhOfMD
Rubyがなぜあんな巨大な糞なのかというと(お察しください
2016/02/03(水) 14:06:49.98ID:uEOUJl1K
実用性を求められそれに応えるごとに汚れていくのさ
ピュアでいられるのはお子様だからさ
2016/02/03(水) 14:17:35.65ID:WaqhOfMD
残念だがルビーの文法とデザインが腐ってるのは初期からだw
386デフォルトの名無しさん
垢版 |
2016/02/04(木) 01:55:33.07ID:VXt+BkjY
        ∩___∩                     ∩___∩
    ♪   | ノ ⌒  ⌒ヽハッ    __ _,, -ー ,,    ハッ   / ⌒  ⌒ 丶|
        /  (●)  (●)  ハッ   (/   "つ`..,:  ハッ (●)  (●) 丶     今、どんな気持ち?
       |     ( _●_) ミ    :/ MZうy  ::::::i:.   ミ (_●_ )    |        ねぇ、どんな気持ち?
 ___ 彡     |∪| ミ    :i        ─::!,,    ミ、 |∪|    、彡____
 ヽ___       ヽノ、`\     ヽ.....:::::::::  ::::ij(_::●   / ヽノ     ___/
       /       /ヽ <   r "     .r ミノ~.    〉 /\    丶
      /      /    ̄   :|::|    ::::| :::i ゚。     ̄♪   \    丶
     /     /    ♪    :|::|    ::::| :::|:            \   丶
     (_ ⌒丶...        :` |    ::::| :::|_:           /⌒_)
      | /ヽ }.          :.,'    ::(  :::}            } ヘ /
        し  )).         ::i      `.-‐"             J´((
          ソ  トントン     Darkなんちゃら…              ソ  トントン
387デフォルトの名無しさん
垢版 |
2016/02/04(木) 13:25:41.80ID:+rC6IKS8
優れた文法を手本とするには、どの言語が良いんだ?
どれもこれも長所と短所があるし。
2016/02/04(木) 15:53:27.61ID:69F/iNHk
優れた文法とは。
2016/02/04(木) 16:18:01.49ID:ri7+Aiuk
5色のうちからユーザーが好みのものを選べるのがいいんじゃないか
2016/02/04(木) 16:29:33.62ID:69F/iNHk
5色か

Whitespace
H9Q+
brainfuck
Lazy K
INTERCAL
あたりの文法を参考に・・・・・・
2016/02/05(金) 13:29:53.12ID:BBqIJr5G
フロントエンドとミドルエンドとバックエンドに分けてフロントエンドはユーザーが作れるようにしておけばいいんじゃないのか?
392デフォルトの名無しさん
垢版 |
2016/02/05(金) 20:10:50.78ID:um7ZPY3u
>>388
言語仕様に「整合性がある」言語の事だが。
一長一短だからな。
2016/02/05(金) 21:49:15.21ID:hmTKeVMY
でもテンプレートの奥深くみたいな訳の分からないエラーメッセージとか無しでな
2016/02/05(金) 22:53:24.24ID:AF25xcuE
ミドルにエンドは無いと思うんだが、LLVMがそんな呼び方してるのはなんか意図があるんだろうか
2016/02/06(土) 00:48:13.75ID:utAdfs60
>>392
大概の言語仕様は無矛盾だと(=整合性があると)思うけど。
2016/02/06(土) 10:06:04.94ID:XRyA0EjL
最強言語(キリッ
でも標準ライブラリも効率的なデバッグの仕組みも考えたことすらありません
2016/02/06(土) 12:37:09.68ID:4z0/BkxB
そもそも文法がマトモにパーズできるようなものでないと
処理系がバグりまくる(C++やRubyの惨状を見よ)

静的型を用意するなら型理論に沿ったマトモな型システムでないと
処理系がバグりまくる(C++テンプレートやSwiftの惨状を見よ)
オブジェクト指向と関数型の変な折衷をするとこれまた型が
アレになって走査パスが増えて処理系が超遅くなる(Scalaの惨状を見よ)

人間が読めて、他のプログラムから容易に生成できて
(これは文法が糞だと目も当てられない事になる)、
マトモな言語機能を持った言語以外を作るなと言いたい
CやLispより退化してどうするんだ
2016/02/06(土) 15:40:31.20ID:lxi6Zpfn
手段が目的になってる人はそう思うんだろう
399デフォルトの名無しさん
垢版 |
2016/02/07(日) 11:42:14.16ID:CwVox+Js
かなり昔の事だが、C++のANSI規格作成で、携わっていた委員の一人が、
C++の文法の一部を誤解して覚えていたことが発覚し、周りに苦笑された
事もあったらしいからな。
「言語仕様を作る側」の頭のレベルも念頭に置かないと。
それでなければ整合性には程遠い。
2016/03/09(水) 17:29:58.75ID:ISN2ur/+
gccですら実装を見送る規格は止めてほしい
CとC++の中間ぐらいの言語が欲しい
プリプロセッサとテンプレートは採用で
401デフォルトの名無しさん
垢版 |
2016/03/14(月) 22:18:27.17ID:5P+EA/8R
名前空間付きC言語程度の言語つくってみようかしらん
特に目的はないけどこれなら作れそうくらいな動機で
2016/03/15(火) 19:07:41.78ID:RIoPtDsj
>>401
前方参照OKにしてくれ
2016/03/15(火) 23:33:07.78ID:8e1lo7mI
前方宣言のことだよね?
名前空間のインターフェースみたいなのできたら面白いかも
2016/03/16(水) 21:23:00.37ID:ejdJRW9Z
いや、多分、前方宣言じゃなく、前方参照のことだろう
2016/03/17(木) 11:20:18.13ID:U4keFPtS
前方参照でC++でもいまだにエラーとしてる理由って何だっけ
2パスを嫌ってる?
でもC++って何パスもしてる気がするよね
2016/03/17(木) 11:51:54.16ID:go3n9QI1
Java「クラスの外に宣言書けないようにすればいいのに」
2016/03/17(木) 19:00:40.54ID:HqjZona4
ヘッダーファイルという糞文化
2016/03/19(土) 04:08:08.77ID:YkVYTtmN
ポインタは*がなんかダサくて嫌だ
2016/03/22(火) 01:20:09.95ID:rf8iBlA4
3大OSで動くようにjavaでランタイム書こうと思うんだがポインタないのが不便だね
C言語ソースに変換するほうが楽だと思うけどもう少し粘る
2016/03/22(火) 02:43:19.96ID:p3cxKPtY
LLVMの話はここでいいんだよな?

LLVM+Clangを仮想Ubuntuでビルドしているが、かなり時間が掛かる。
三日間以上か。やはりC++コンパイラを仮想環境でビルドするのは無理があるのか。
実機なら数時間でビルドできるのだろうか。
2016/03/22(火) 06:20:07.57ID:2k6rwd23
>>409
もうC#でよくね?
2016/03/22(火) 13:27:29.78ID:YJW8F40f
>>410
仮装マシンの設定間違ってるだけじゃないの?(メモリ配分とかCPU割り当てとか、Networkドライブでコンパイルしちゃったとか)
2016/03/23(水) 03:14:26.98ID:o57PmMMS
とりあえず関数の外側までパースしつつJVMのバイトコードを勉強してる
helloworldするためのprintln()はどうやって作ればいいのだろう?
2016/03/23(水) 10:56:44.60ID:fhNbIMvx
>>413
JVM にはI/Oはない。 ネイティブコードのライブラリに投げる。
2016/03/25(金) 00:41:07.93ID:LUc1dGhA
>>414
つまり最初にネイティブコードを呼ぶ仕組みが必要なのだろうか?
難しそうだし、暫定的に組み込み関数を標準APIとして用意するに留めたいなあ
2016/03/25(金) 06:42:35.83ID:IRDGuB0e
その組み込み関数=ネイティブコードのライブラリなんでは・・・
2016/03/26(土) 08:43:48.51ID:drxQ1xsy
何がしたいのか分からん
JVM を呼ぶフロントエンドとグルーを作るだけなんでしょ
418デフォルトの名無しさん
垢版 |
2016/03/31(木) 23:33:53.46ID:m6GiZo6g
業務ソフト開発用のコンパイラと、ゲーム開発用のコンパイラは、
当然、分けて考えないとダメだよな?
2016/04/01(金) 03:11:11.66ID:38psm3gC
>>418
だめとは何が?
成果物によっては業務だと下手すると死人が出る
ゲームだと下手するとクレームで会社が倒産する
でもその成果物はコンパイラ以外にも色んな工程を経て作られたものだから
最終的にコンパイラが原因だったとしてもコンパイラやその開発者が追及を受ける謂れはない
例えばキミの作ったゴミコンパイラで死人が出たとして責任とれますか?
2016/04/01(金) 12:33:03.11ID:EVZZ0pNr
そのときは体で詫びます
2016/04/01(金) 13:14:37.42ID:TsVr6Gke
業務なら信頼性と生産性重視
ゲームなら実行時の性能重視 欲を言えばGPUのデバッグしやすければ勝つる

つうか強みをわかりやすくバーンと出して後は選んでもらうだけだべ
422デフォルトの名無しさん
垢版 |
2016/04/02(土) 11:20:43.68ID:5nWyUO1B
30年以上前に出た、ゲームセンターにあるゲームは、
意外にバグを多く含んでいたんだよな。それを承知で、
みんな遊んでいたから。コンパイラのせいには出来ないだろうが。
初期のナムコ製品なんて、バグ発見と、それを悪用した点数稼ぎが
やたら多かった。
2016/04/02(土) 12:06:49.67ID:pO9IxWzb
支障のあるバグだけど修正困難なので放置されていた
というのが正しい

ゲーセンのインカムに影響するようなバグは回収されるはず

数年前にサ○ラ大戦のパチのバグで回収になって
50億の損害が出たとかあったな
2016/04/02(土) 12:24:29.40ID:k2fP1WMZ
>>422
その頃のアーケードゲームはコンパイラつかってないだろ、8ビットでz80、良くて6809の時代でコンパイラはi8080向けの LSI-Cが出たか出ないかの時代だぞ
>>423
サクラ大戦ってそんなに売上げあったん?
2016/04/02(土) 19:15:30.37ID:P1i243h5
>>424
> サクラ大戦ってそんなに売上げあったん?
ゲームじゃなくてこう言う話でしょ
http://slosoku.com/archives/5072231.html
2016/04/02(土) 22:12:51.38ID:k2fP1WMZ
>>425
パチスロかパチンコなのね
2016/04/03(日) 02:39:40.29ID:iadWYSqN
千円の物が百万個売れると10億なので
ゲームの方も50億くらいはあるんじゃないの
428デフォルトの名無しさん
垢版 |
2016/04/03(日) 21:47:29.31ID:2hoiGC6I
その昔、ナムコのゲーム開発部隊では、OSを作っていたのが二人いたそうだ。
苦心惨憺の末、ギャラガというゲームを作ったライトサイドプログラマー
の大森田氏。一方、ダークサイドプログラマーとして名高い島岡弘氏。
今ではコンパイラ作りの情報はありふれているが、やはり、当時としては
相当凄かったらしく、一目置かれていたとか。

今だと、コンパイラ作るだけでは、誰も誉めてくれないからな。
中身を見るまでは、お褒めの言葉にも預かれない。
2016/04/03(日) 21:57:18.40ID:YoKWiOlG
ヘイジャックども、英語の重要な技術文書をどんどん翻訳して
WikiBookやGitHubに上げていこっぜ、ベイベー。
430デフォルトの名無しさん
垢版 |
2016/04/04(月) 01:03:07.07ID:DatNOwTQ
>>429
MSの技術解説部分も、昔は翻訳するのに制限がかかっていなかったか?
そのためにVC++を使いこなすために英文マニュアルとの格闘に
なって苦労したぜ。C++特有のわかりづらさと、英文マニュアルと、
初めて使う統合開発環境に戸惑い、ドえらく時間がかかった経験が...。
2016/04/04(月) 08:31:57.12ID:P4S1l6wk
>>430
翻訳権ってMSDNにもあるんかいな。
いい加減、日本の著作権法にもフェアユースを
明記してほしいよな。
2016/04/04(月) 16:51:18.37ID:nzuN3Nfl
MindのUnicodeとか版コンパイラ作りたい
433デフォルトの名無しさん
垢版 |
2016/04/04(月) 21:22:22.97ID:DatNOwTQ
VC++のWindowsAPIの説明がわかりづらかったので、Delphiを使い始め
たら、同じく日本語化がまったくされておらず、詳しい人に聞いたら、
「翻訳してはならない」と聞かされて唖然としたよw
今では、遠い昔の話だが。
2016/04/06(水) 23:25:48.22ID:WLNAeUhL
やっと関数の外側をパースできたわ
435デフォルトの名無しさん
垢版 |
2016/04/09(土) 04:04:13.10ID:NXdWBRID
「豊富なライブラリやツール群を用意した、高額のコンパイラ」と、
「格安のコンパイラだが、別売オプションのライブラリも用意しないと、
たいしたソフトは作れない」ものでは、商売上、どちらが賢いだろうか?
436デフォルトの名無しさん
垢版 |
2016/04/09(土) 04:51:56.27ID:u1ofpue+
どっちも無理
2016/04/09(土) 07:04:44.02ID:FoBfIIvs
頭いい大学行くとコンパイラ理論とか習えたのかな?

独学してるけどさ、あらゆる犠牲を払わなきゃ理解、応用するまでいかなくない?
2016/04/09(土) 09:51:43.80ID:VHmuSaPj
京大はCコンパイラを全員に書かせるって聞いた
2016/04/09(土) 10:55:12.53ID:yIzAT5uL
コンパイラを自作するのは意味があるけど
Cが引きずるクソ設計を知ったら二度とC/C++をつかわなくなるはず
2016/04/09(土) 16:46:46.79ID:NknyIt7s
PascalのコードをCのコードに変換するプログラムを作れとかいう
何も考えずに出題されたとしか考えられない課題にはマジで困った

まず、関数内関数とかCに無いですしお寿司
適当な名前付けてグローバルに放り出すとしても
それだけではローカル変数のキャプチャが出来ないから
どうすんだこれ?って感じで、まぁ引数で渡すしかないんだけど
課題提出までの時間も全然足りてないし、誰も出来なかった
2016/04/09(土) 17:17:55.52ID:yIzAT5uL
>>440
しかるべきところにぶち上げて資質を問うべき
2016/04/09(土) 17:43:08.14ID:YNau7unG
ローカル変数は参照渡しすればいいだけじゃね?
2016/04/09(土) 21:34:08.79ID:YC7vrxdl
>>440
要するに p2c 作れってことだろ
パクれとは言わんけどコード参考にすればいいだけ
2016/04/10(日) 02:18:39.46ID:tVvAXki7
>>440
それ何日でやれと言われたんだ? 不可能では無いけど課題と言うにはレベル高すぎてビックリ
2016/04/10(日) 03:55:26.52ID:DcOaBboz
昔の事でよく覚えてないが、一か月ぐらいじゃなかったかね、良くわからんが

笑えるのが、そのソフトを作ること自体は前座でしかなく
その後、作ったソフトを持ち寄って、レビューか何かをするのが本題の講義であって
ソフトは皆で議論をする上での、ほんの話題のための「種」にすぎないってのがね
よくあるじゃない、プロジェクトマネンジメントとかコードレビューとかの
ちょっと実際のプロジェクトを模範した感じの、実戦風のワイワイガヤガヤ系の講義
あんな感じのやつだった
これがコンパイラの講義の課題ならまだわかるんだけどねぇ
どちらにせよ、プログラミング覚えたての学部生には酷な課題
二年生でC習って、三年生でいきなりこれ作れって、そりゃ無理ですって
普通にPascalのインタプリタ作るのだって、実力的にまだ厳しいのに
そこからさらにCに変換しろだなんて

いくつかのチームに分かれていて、チームごとに与えられる課題は違っていたんだけど
俺は最も簡単な課題が当たったから何でもなかったけど
2016/04/10(日) 09:23:24.83ID:fTRAmtFw
関数内関数ってトランスレーター的には別に難しくないだろ
3日もあればできるんじゃね
2016/04/10(日) 09:34:58.78ID:372ncJJS
>>440 > マジで困った
>>445 > 何でもなかったけど
痴呆症乙
2016/04/10(日) 10:26:51.59ID:hSypwT6Y
誰も提出できなかったけど本題じゃないから授業は進んだってことだろ
2016/04/10(日) 11:06:35.40ID:jQD3kWDp
ただのホラフキ―じゃん
450デフォルトの名無しさん
垢版 |
2016/04/11(月) 11:50:30.22ID:3nONGRtl
大昔のMacはpascalでの開発を前提にしていたからな。
(Macツールボックスは、Pascalで呼び出しを前提にしていた)
途中からはCやC++用にツールは変貌していったが。
2016/04/11(月) 17:10:55.05ID:suuESVM3
>>450
なつかしすぎるなぁ、light speed Cとか買ったとき「ああ、これでCで書ける」などと感動したわ
2016/04/11(月) 18:25:37.58ID:8c5Uimxv
C言語より動的型付け言語の方が先に広まってたって意外だなあ
453デフォルトの名無しさん
垢版 |
2016/04/12(火) 02:21:49.83ID:0eQ6kuw9
AppleのMPW。あるいはハイパーカード。
Think Cや、Code Warriorなど、一時は、Macで夢のようなソフト作りに
あこがれた時期もあった。でも、遠い昔の話だ。
2016/04/12(火) 09:22:22.73ID:Pd8H+utR
静的型付けのほうが高度なんだよ
2016/04/13(水) 01:10:21.79ID:inw4nZY2
俺もアセンブラ→静的型→動的型の順で作られてきたと思ってたけど
ジョブスの伝記漫画でウォズがアセンブラでBasic作る話があったような気がする
2016/04/13(水) 01:14:40.21ID:rXMD6+sH
基本文字列だけでいいんだよ
型なんて文字列をどう解釈するかの話だよ
2016/04/13(水) 01:23:46.16ID:2h1lI58Z
>>455
しらないのか?Microsoft
458デフォルトの名無しさん
垢版 |
2016/04/13(水) 13:34:00.12ID:a0UNLavD
もっとも愛着のあるコンパイラは、Quick BASICだった。
遠い昔の話。でも、凄く使いやすかったんだよな。
2016/04/13(水) 17:57:30.26ID:V3wVZgaP
コンパイラの初心者本?

「Tiny BasicをCで書く」
出版社: ソシム (2016/4/22)
ISBN-10: 4802610203
ISBN-13: 978-4802610209
460デフォルトの名無しさん
垢版 |
2016/04/14(木) 00:25:42.75ID:Nyx2HJFW
関数の先頭にfunctionキーワードを付けるとして長すぎるから変えようと思うんだけど
doとかjobではおかしいかなあ?
2016/04/14(木) 01:10:11.46ID:FsF2j7W4
>>460
fnじゃだめなん?
Clojureだと(fn [arg] brabrabra)な感じ
462デフォルトの名無しさん
垢版 |
2016/04/14(木) 01:29:14.13ID:Nyx2HJFW
>>461
rustのfunc, iface, modとかもそうだけど省略形はいまいちだなと思う
rubyにfor() do {}構文があるんだけど、それで関数やラムダ式の記号に
do良さげかなと思うんだけどどうかな?
2016/04/14(木) 02:42:08.95ID:co1HctEv
コンパイラの醍醐味は式の展開だから、ここを自分で書ければあとはそれほど難しくないw
2016/04/14(木) 08:30:10.02ID:BY7gxQ6D
define ならわかるが do はないだろう
2016/04/14(木) 09:12:23.12ID:d9D6y2bX
dogazer
2016/04/14(木) 09:35:38.15ID:HeHUqy+f
関数も変数もletで
467デフォルトの名無しさん
垢版 |
2016/04/14(木) 12:27:04.84ID:kJxBjGsl
予約語テーブルに何を入れるかが難しい。
何でも詰め込みすぎると、肥大化しすぎたC++になってしまうし。
2016/04/14(木) 18:04:51.72ID:FsF2j7W4
>>462
そうかなぁ?
一般名詞や動詞とかぶりそうも無い省略形ってコンピュータ言語には向いているとおもうのだ。
defunとかdefnとか
無名関数作るのにはUnicode圏が一般化した今ならλ一文字とか
2016/04/14(木) 20:06:31.03ID:VC8/A0Ig
略語もセンスがいるよな
ところで、defunって何の略?
どうでも良いけどλなんか変換しなきゃ出てこないし入力速度最悪だな
2016/04/14(木) 20:21:19.82ID:gC/abIq/
>>469
> defunって何の略?
DEfine FUNction じゃね?
2016/04/14(木) 20:43:14.68ID:FsF2j7W4
>>469
>>470氏が書いているけどdefine functionの略だよ、common lispとかemacs lispとかでつかわれてる
λ自体は”lambda”をテキストエディタ側で差し替えるとか一文字入力のマクロをバインドすればいいだけだと思うのだよね(IDE作り込みの一環)

どっちかっつーとワタシの一押しは関数定義の宣言句に省略形を許せば良くない?ってだけなのでスレ違いではある。
2016/04/17(日) 00:39:50.58ID:SCILLDG5
letはconstの代わりに使う言語があるね

関数宣言にdoがないとなると色々と候補に悩んでしまうぜ
job, fun, flow, verb, work, act(action)
2016/04/17(日) 01:15:23.96ID:iuB497/s
>>472
再代入を許さない言語だとletがconstと等価になるからじゃないのかな?

>>460
関数宣言がfunction hoge(args)と言う形をとる事をやめて予約語(function)無しでも可能な感じはしないでもないのだけど文法に制限って起きうるかな?

(Return型) function-name(Args....)
とか
function-name(Args):Return-Type
前者はCだし、後者はJScriptの宣言形式だけど、これじゃイヤな理由も思いつかない。
グローバル変数の定義とか外部変数定義とかのvar,static,externやら名前空間のnamespaceとかpackageとかimport等の特殊な予約語彙だけ文の開始から除外すれば後者の方法で関数は定義できると思うのだけど。
2016/04/17(日) 03:41:30.77ID:SCILLDG5
>>473
>予約語なくせば?
変数宣言でも関数宣言でも先頭に予約語が付いてIDEが色つけてくれた方が見やすいじゃない?

もしくは関数宣言をすべて関数ポインタ(クロージャ?)のみにして、変数化してしまうか?
var function-name = ->(args...){ ... }
2016/04/17(日) 16:43:33.52ID:3szJoJiC
基本的に、普通のブロックと、関数(クロージャ)との、区別をどうするかという問題が有るからね
普通のブロックは大体{ something }こんな感じだろうけど、これは呼び出しなしで即座に実行するのが普通
一方でクロージャは呼び出さない限りは実行されない
関数やクロージャなどを引数に取る関数が有ったとして
func_name( { something } );
こんな感じに呼び出した場合、{ something }を実行した結果を関数に渡すのか
{ something }その物を関数に渡すのか、コンパイラはよくわからない
func_nameの呼び出し引数の型がクロージャであることをコンパイラが分かっていたとしても
{ something }を実行した結果がクロージャになり、それを関数に渡すという可能性もあるのでコンパイラは判断できない
そのため、明確にするためにfunc_name( function{ something } );のように
何か普通のブロックとクロージャを区別する文法が要るのだね
そうこうしていると、Javascriptが出来上がる
2016/04/17(日) 17:47:06.17ID:SCILLDG5
結局function代替ワードが必要だと気付く
ラムダ記号=>だと引数に使うときダサイもんね
477デフォルトの名無しさん
垢版 |
2016/04/18(月) 12:27:13.85ID:keXFBRJQ
新しいコンパイラを使うとき、「特有のクセのある」
のがグラフィック関数なんだよな。
個人的には、グラフィック関数も、ANSIで定めて欲しいくらい。
2016/04/18(月) 13:16:18.87ID:pknZG/q+
グラフィックなぁ
b800:0000らへんを好き勝手に弄らせてくれるなら歓迎するのだわ # ネタが古いか
2016/04/19(火) 13:33:12.70ID:6Wh9TF6d
8色でいいんか?
480デフォルトの名無しさん
垢版 |
2016/04/20(水) 02:49:26.81ID:dZcIDvSg
最近はいじっていないので、最新のツールはよくわからんが、
昔のツールでは、RGBの三原色を元に、すべてのグラフィックを
再現していたからなあ。今考えると、ずいぶん、原始的だった。
481デフォルトの名無しさん
垢版 |
2016/04/20(水) 05:43:15.95ID:wqKcWsga
>>480
最新をよくわかってないのによく原始的だと解るね?
2016/04/20(水) 06:55:13.29ID:XnBYIzBk
シマノのギアの仕組みをよくわかってない俺にもギアのないママチャリは原始的だと思う
483デフォルトの名無しさん
垢版 |
2016/04/20(水) 07:16:40.91ID:wqKcWsga
自転車に例えるなら車輪を回転させて走らせるのは原始的だったなぁって言ってるのが >>480 なんだけどね
2016/04/20(水) 07:52:09.40ID:UfNx2Znx
えっ今もRGBじゃないの?
2016/04/20(水) 08:22:02.22ID:r07pzD8i
>>483
それはお前が勝手にそう思ってるだけ
ギア付きのチャリより直結のチャリの方がより原始的なのはわかるだろ?
2016/04/20(水) 08:29:41.63ID:r07pzD8i
>>484
ツールって言うのか何を示すのか、グラフィックっと言うものの範囲にもよる
ディスプレイ表示機構に限定すれば RGB 以外のは見たことない
グラフィックツールの話なら HSB とかの他のカラーモデルを扱えるものはあるし、プリンタは CMYK だし
そもそもこのスレで長々引っ張る話でもないし
2016/04/20(水) 09:12:43.14ID:UfNx2Znx
CMYKなんて大昔からあった
488デフォルトの名無しさん
垢版 |
2016/04/20(水) 10:07:43.41ID:wqKcWsga
>>485
RGBっていうコンピューターグラフィックス上で今でも最も基本的な部分を指して原始的って言ってるからギア云々は的外れって言ってんの
489デフォルトの名無しさん
垢版 |
2016/04/20(水) 11:06:43.66ID:fkY4xDrs
グラフィック関数ってOpenGLとかそういうはなしじゃないのか・・・
2016/04/20(水) 12:29:24.43ID:r07pzD8i
>>488
だからそれってお前のちんけな知識で語ってるだけだろ w
どういう風に対応付けるかなんて色々あるのに知識のない奴ってそれしか思い付かないから自分の考えが一番って思ってるんだよな
2016/04/20(水) 14:01:09.01ID:ljSF0mgB
おまえのことか
492デフォルトの名無しさん
垢版 |
2016/04/20(水) 15:33:41.96ID:9SnFE2FG
例えが悪いって言ってんのにどういう風に対応付けするかは色々って何言ってるのか解りませんわ。
2016/04/20(水) 19:30:01.52ID:r07pzD8i
>>492
> 例えが悪いって言ってんの
お前かそう思ってるだけ
って何回言えば理解するんだ?
2016/04/20(水) 20:27:51.87ID:ljSF0mgB
いや、お前こそが、そう思っているだけだろ
車輪の話は分かりやすかった
2016/04/20(水) 22:17:47.57ID:iD79AHEd
どっちもどっち
下らんことでお山の大将になりたがるなよ
496デフォルトの名無しさん
垢版 |
2016/04/21(木) 01:56:58.28ID:q7849b+A
変な所を指摘したらお山の大将になりたがる猿呼ばわりか、めんどくせえスレだな
497デフォルトの名無しさん
垢版 |
2016/04/21(木) 02:20:43.14ID:mxlfT2Ft
スレ違いだから首釣って死ねって事だ
言わせんな
498デフォルトの名無しさん
垢版 |
2016/04/21(木) 12:57:39.05ID:DAo9Zovx
エプソンのプリンターも当然、CMYKだが、
「純正を使わないと、すぐに故障する」
ような構造にしてあったよな?

あれはハードの構造でそうしているのか。コードにも、純正な否かを
判断する部分を盛り込んでいるのかどうか。
499デフォルトの名無しさん
垢版 |
2016/04/21(木) 19:57:24.72ID:T4pmkcSw
エプソンに限らずプリンターは色の三原色持ってるのが当たり前
500デフォルトの名無しさん
垢版 |
2016/04/22(金) 00:36:11.07ID:2IHAQJXj
純正インク以外で壊れやすくなるのは単に質が悪いから
プリンター本体は採算度外視でインクで儲けるビジネスモデルだったのに本体壊したら元も子もない
501デフォルトの名無しさん
垢版 |
2016/04/22(金) 12:06:11.49ID:300wiAoM
プリンター本体も、五年もたって故障すれば、部品製造打ち切りで
修理不能で買わざるを得ないからな。キャノンはどうか知らんが、
エプソンはそうだった。とかいって、うちの勤め先の規模では、
プリンター市場に参入出来る資金力などない。
せいぜい、大手からおこぼれで仕事をもらい、コードをいじくるしか出来ない。
502デフォルトの名無しさん
垢版 |
2016/04/22(金) 18:41:13.87ID:U46HjcWC
ずいぶん横道にそれているが、おまえらスクリプトつくってるのか?
2016/04/22(金) 20:38:22.94ID:TT82zXSl
>>496
指摘が的はずれって言われてるんだろ
2016/04/22(金) 20:39:29.07ID:FoP6yTJa
誰がもこみちにそれているねん!!

(´・ω・`)b
2016/04/22(金) 20:40:58.67ID:FoP6yTJa
>>502
スクリプト言語を利用してスクリプトを作っているという意味か?
それとも自分でスクリプト言語の仕様決めて実装設計しているということか?
2016/04/22(金) 21:49:45.09ID:cAq2nbH2
スレタイ嫁
2016/04/22(金) 23:35:58.89ID:Eun++jyx
>>505
後者の実装にスクリプト言語使っても問題はないんじゃなかろうか?
508デフォルトの名無しさん
垢版 |
2016/04/23(土) 07:12:36.15ID:FJYQwL85
ここで産まれたスクリプトあんの?
509デフォルトの名無しさん
垢版 |
2016/04/23(土) 12:40:11.44ID:OaaA/Nov
秀丸は、スクリプトを自作するときの参考になるのかね?
一応、役に立ったことは事実だが。
510デフォルトの名無しさん
垢版 |
2016/04/23(土) 18:35:58.00ID:vG+aKQwy
禿丸エディタを何の参考にする気だ
511デフォルトの名無しさん
垢版 |
2016/04/24(日) 00:18:07.79ID:dKv+k22E
秀丸は、「作業の自動化スクリプト」を書くのに便利だからな。
その仕様を元にすれば、スクリプトを自作するのに役に立つのではないかと
思ったのだが。
512デフォルトの名無しさん
垢版 |
2016/04/24(日) 01:48:37.36ID:M7ZCbRga
「作業の自動化スクリプト」専用のスクリプトならgradleあたりが参考に良さそうだな
ちなみに俺はantは好きだけどmavenは大嫌い
2016/04/25(月) 02:57:23.38ID:ouB2BnTZ
まあ秀丸はテキスト処理に特化した
自動化スクリプトの参考にはなるかもね
あれはスクリプトっていうよりマクロだけど
514デフォルトの名無しさん
垢版 |
2016/04/25(月) 10:50:38.19ID:9hQeUDgV
しかし秀丸には、CやWindows APIの命令が、多数というか、
かなり含まれている感じだが。
515デフォルトの名無しさん
垢版 |
2016/04/25(月) 17:05:01.77ID:lstHaTya
だからなんだよって感じだが。
2016/04/25(月) 17:27:42.97ID:ouB2BnTZ
そのまま車輪の再発明をしてしまうと
元の秀丸を使った方が便利だから
自作スクリプトを秀丸と差別化する必要はある
517デフォルトの名無しさん
垢版 |
2016/04/26(火) 03:16:17.88ID:r83feNEN
そうか。秀丸に存在しない命令を考えなければならないな。
518デフォルトの名無しさん
垢版 |
2016/04/27(水) 00:31:37.93ID:Toh8P/+A
相変わらず手書きパーサー書いてるが、できるだけ1発でパースしつつ(LR法?)
外側から順に何度も段階分けながらパースする(LL法?)なコードも混じってる…
意味解析までたどり着くまでで力尽きそうw
2016/04/27(水) 06:02:05.40ID:vmi3tpS2
よほどの理由がないなら手書きなんかやめといた方が

Bison GLR 使ってた時は不自由さがなくてよかった
semantic predicate 機能は成熟しただろうか
2016/04/27(水) 07:02:50.92ID:h/kgFFlp
趣味でやってるんだろ
ほっといてやれや
521デフォルトの名無しさん
垢版 |
2016/04/27(水) 23:38:58.25ID:Toh8P/+A
手書きパーサー製作も残すは四則演算&関数呼び出しとなったが
ツリーの形状はこんな感じで良いのだろうか?
https://pastebin.mozilla.org/8868990

>>519
本よむところから始めるのはしんどいのでな・・・
522デフォルトの名無しさん
垢版 |
2016/04/28(木) 00:23:38.80ID:mWNt94gr
関数呼び出しだとこれでいけそう
https://pastebin.mozilla.org/8868995

小さな計算でもツリーが深くなってnew()するノードの数がもりもり増えるけど
何かもっと良い方法あったら教えてちょ
2016/04/28(木) 12:59:47.77ID:Jc879At1
手書きパーサなら
木構造にせずに操車場アルゴリズムかその亜種でLL(1)するのも手だぞ。

文法と文をそれぞれ入力したらテーブル作ってLR(1)するクラスを作るって手もあるけど
大真面目に書いてc++で500行〜1000行くらいにはなったと思う。
524デフォルトの名無しさん
垢版 |
2016/04/28(木) 14:16:09.66ID:7cooGRk/
lexとyaccは、既存のものを使うべきか、自作すべきか、悩ましいね。
2016/04/28(木) 15:44:59.86ID:Jc879At1
yaccは、やる気と暇があるなら
どういう文法なら曖昧性が無いか、とか、shift/reduce conflictとdangling elseとは何か、とか
いろんな事についてよく理解できるようになるって点で一度試しに書いてみる事をお勧めしたい
今までに俺が余暇でC実装した名の付いたアルゴリズムの内だとかなり難しい部類に入るけどな。

lexは文法全く固まってないなら使ったらどう?って程度じゃない?
割と簡単に使えるけど、同じくらいとは言わないものの簡単に自作できるし
ASCII範囲の文字は簡単に指定できるけどUnicodeなんかに対応する為にカスタムコードを挟むなら普通に全部組んだほうが楽な事もあるし。
2016/04/28(木) 15:46:10.30ID:Jc879At1
個人的にはPEGが気になるのですよー
2016/04/28(木) 18:30:43.97ID:FI1Tv7gT
コンパイラを作るはずがコンパイラジェネレーター作りがメインになってしまう不思議
2016/04/28(木) 18:36:57.28ID:Jc879At1
そして思うのだ

コンパイラジェネレータを書くのに向いてる言語とは・・・・・・
2016/04/28(木) 22:17:59.57ID:mWNt94gr
>>523
そうだな。ここだけツリーにしないで、再帰関数で直接出力すれば良さそうだ
530デフォルトの名無しさん
垢版 |
2016/04/29(金) 05:30:33.58ID:o23yQzXI
バイトコードのテキストを読み込んだら
バイトコードの1行と対の関係になる命令ノードを
行数だけ配列にして上から順に実行するイメージであってる?

なんか構文木のまま実行するのと大して変わらない気がするけど
メモリの節約とかどうなんだろう
2016/04/29(金) 10:04:10.82ID:GdtJdaFL
バイトコードのテキストってのが若干意味不明だが
バイトコードならアセンブル(バイナリ化)しておかないか普通

a = b + c * d
を二分木のASTで
(st (ldptr local[0]) (add (ld local[1]) (mul (ld local[2]) (ld local[3]))))
みたいに格納して、ポインタ1つあたり64 bits、ノード構造体のサイズが24 bytesと仮定して
glibc mallocを使うことを仮定して全部で32 bytes * 7 = 224 bytesのヒープを消費する。

一方でレジスタ型VMを仮定して、簡単の為に1命令32 bits固定長とすると、例えば
ldptr r0, local[0] / ld r1, local[1] / ld r2, local[2] / ld r3, local[3] /
mul r4, r2, r3 / add r5, r1, r4 / st r0, r5
の7命令で与式が表現できるから、
配列の中身の長さが2^nに拡大されて予約される事を仮定すると4 bytes * 8 = 32 bytes
これに配列の管理領域が2ワード16 bytes、
glibc mallocを使うことを仮定すると2箇所の領域の管理で2ワード16 bytes必要で
合計で64 bytesのヒープを消費する。

ただ、配列には配列の問題点と言うかでっかい領域を再確保するのが難しい事があるから
文単位ではリストや木を、式単位では配列を使うってのがインタプリタとしては良いんじゃないかなとは思う。
532デフォルトの名無しさん
垢版 |
2016/04/29(金) 13:14:44.61ID:mG1yRheY
コンパイラ作りって、インタプリタよりも、10倍の労力がかかるよな。
2016/04/29(金) 15:48:32.50ID:qwAEwLKu
この辺はlispやschemeで思索しながらやると楽なんだよ
2016/04/29(金) 17:57:56.98ID:ZvoRtCQG
コード生成の方は関数型の基礎だけでもやってないとかえって遠回りに
2016/04/29(金) 20:10:00.50ID:YATvpu7C
>>533
最終的になんで苦労してまで構文木をSchemeで生成するんだろう?っておもって結局そのままLispのMacroに化けるのである(割とマジで)
Lisperが他の言語取得者のタメにDSLを組むことはあってもLisperはLispのママ扱う方がよかったりするのよね。
536デフォルトの名無しさん
垢版 |
2016/04/29(金) 21:15:38.47ID:o23yQzXI
>>531
ありがたい。メモリが4倍くらい節約できるのね
もしかしたら構文木のまま動かした方が動的ロードで
面白いことが簡単に実現できるんじゃないかと迷ってたけど(evalとか)
パフォーマンスではバイトコードがかなり強力なのね
537デフォルトの名無しさん
垢版 |
2016/04/29(金) 23:41:20.66ID:o23yQzXI
>>531
>バイトコードならアセンブル(バイナリ化)しておかないか普通
たしかに普通は読み込み速度的にバイナリデータが望ましいのだけど、
手さぐりで試作するからメモ帳で読み書きできるテキスト形式でやってみるんだ
2016/04/30(土) 01:17:44.44ID:oV2mml7H
lispインタプリタって一番簡単な実装(pure lisp?)だと何行くらいで実装できる?
2016/04/30(土) 07:15:19.54ID:wSqWni75
>>538
基本関数だけならものすごい小さいよ
Lispが生まれた時代のマシンのメモリ量なんてアドレスのビット数が16以下だし。
2016/04/30(土) 10:02:54.88ID:oKKjAnDv
>>538
何で実装するかにも依る

swiftやrubyだと100行オーダーで書けるらしい
http://xavier.hateblo.jp/entry/2014/08/19/003609

C実装だと2000行くらいみたい
https://github.com/kototama/kml
2016/04/30(土) 16:03:06.15ID:ASEjigO2
行というかWin32で20KByteコアのそこそこ速いScheme処理系はCで作ったな
何行だったかは忘れたが数千行にはなる
ライブラリやフレームワークにどこまで対応するかだと毎回思う
542デフォルトの名無しさん
垢版 |
2016/04/30(土) 17:51:48.40ID:iJVuG7iJ
自作コンパイラでソフト作ろうとすると、やたらコアを吐くことに...。
2016/04/30(土) 19:28:20.97ID:wSqWni75
>>542
selfビルド可能になれば普通じゃ無いの?>>core吐かせてバイナリ生成
544デフォルトの名無しさん
垢版 |
2016/05/01(日) 13:17:14.33ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
2016/05/01(日) 17:25:31.50ID:EieRhQfe
スレ違いだから他所でやって
2016/05/01(日) 21:43:24.13ID:EieRhQfe
バイトコードのはずだったのに気づいたら
関数オブジェクトのツリーを作ってた
なにやってんだ俺・・・
547デフォルトの名無しさん
垢版 |
2016/05/03(火) 02:36:10.72ID:sSslXsw5
自作ソフトの暴走はたまにあるが、自作コンパイラの暴走はヤバイよな。
それで別のソフトを作成した日には、最悪の結果が待つことに...。
2016/05/04(水) 02:55:51.64ID:ug5Kipfy
function(機能)はrole(役割)にしよう
flowとかprocと悩んだがroleが一番良いと思う
549デフォルトの名無しさん
垢版 |
2016/05/04(水) 03:53:55.73ID:INW31x/s
昔のC言語みたいに、floatとdoubleに分けるメリットは、
今の時代にはないよな?
2016/05/04(水) 03:59:22.27ID:NIqCX6OH
むしろ half の出番さえ出てきてる時代。
2016/05/04(水) 10:09:50.25ID:wjUC1pj0
役割っていうのは受動的な考え方であり縦割り行政的でありfunctionの適切な代替表現ではない
roleは与えられた仕事をただこなすだけというイメージ
このとき、与えられる対象、つまりデータやオブジェクトがあり
担当個所をroleするという感じ
role ≒ class であり、role ≠ function

何にも縛られず自由なfunctionとroleでは思想が違う
functionは立場や部署間を飛び越えて連携して機能するイメージ
胸熱であり、自分の仕事をこなすだけのroleなどと一緒にされては困る

function( a, b, c, d );
a.role( b, c, d );
2016/05/04(水) 10:16:54.82ID:wjUC1pj0
例えば、日本は縦割り行政的であり、役人的であると言われ(role)
一方で、アメリカは横のつながりが強く、機能的だと言われる(function)
このように、機能と役割は対立する概念として扱われている言葉であり、思想が違う

日本の映画やドラマなんかでよく
「それは自分の仕事じゃないのでやりません」とか
逆に「自分たちの管轄だから余所者は入ってくるな」とか
役割的発想は悪いことのように扱われるのが常
逆に主人公たちは部署間を飛び越えて機能的に行動すると決まっている
2016/05/04(水) 12:07:39.94ID:p+LvbHBp
もうちょっとプログラマ的喩えにしようぜ。

procedure=大域環境に対して参照と破壊をするもの
function=環境を参照せず、戻り値は引数にのみ依存するもの
closure=固有の環境を持ち、その環境に対して参照と破壊をするもの
どれも意味が違う。

functionとroleはクラスとインスタンスくらい意味が違うと思う。
2016/05/04(水) 23:28:44.89ID:wjUC1pj0
歯車でいえば
複数の歯車が上手く連携して動いている様を機能していると言うし
個々の歯車に着目してそれぞれが自分の仕事をしている様を役割をこなしているという

手続き的に時系列に沿って考えると
個々が役割を果たした結果、全体として機能がもたらされて、また別の大きな役割を担う・・・という風に
卵が先か鶏が先か、みたいなところがあって、双方の視点はどちらも重要で
同時に扱ていかなければならないわけだけど
区別して扱われる別の視点であり、function = roleとしてしまうのは単純にセンスないというか早合点
functionとroleの考え方の微妙な違いは非常に重要で
最初の出発点が違うことで資本主義と社会主義など、時としては戦争が起こる場合もある
(つまりは、資本主義と社会主義は鶏が先か卵が先か、functionが先かroleがという思想の違い
 functionはまさに空気のようなもので、人と人をつないで機能させるお金を重視している
 roleはまさに人そのもの、その役割に主体を置いている)
functionをroleと言ってしまうのは教養がないと言われても仕方がない
自分の思考が今何に着目していて何を考えているか把握しておかないと大変なことになる
頭がよくなりたければ囲碁が良い
囲碁は碁石そのものにも着目しなければならないし、碁石と碁石の境界にも着目しなければならない
それぞれで見え方が全く変わってくるし、同時に考えなければならない
頭の体操に良い
「物」と「事」は別のものだけど、「物事」という言葉があるように同時に考えなければならないこともしばしば
2016/05/04(水) 23:40:58.82ID:ug5Kipfy
関数ってそんなに抽象的な意味を持ってたのか
インプット&アウトプット、リクエスト&レスポンスの手続きくらいに見てたよ
2016/05/05(木) 00:33:21.20ID:dh4q1EnN
関数は二者以上の関係を表しており、二者以上の関係性が何か機能をもたらす
というより、逆算して、機能をもたらせるように、二者以上の関係性を作るのがエンジニアの仕事
だから関数もfunctionだし、機能もfunctionという
電子部品だって、回路を組んで組み合わせなければ機能しない
「関」という字が示すように、関係性は何事においても常に重要で
数学や物理はすべて関係性を数式で表すことで成り立っている
「1」という数字が何か意味を持っているというよりは、「1」と他の数字との関係性が「1」自身の立場や性質を決めている
関係性は非常に高等で、目に見えないものであるが故、尊いものとされている
というのも物事の関係性を紐解いたり、逆に利用できたり、機能的に考えることができる人は
当然、役割的思考も出来るものとされているから
役割的発想は馬鹿にでもできる
アメリカが赤のことを悪とするのもこのためで、そいうった悪の思想から自分たちを守るために
右翼の人たちは「保守」と呼ばれる
赤の思想のほうが理解しやすく馬鹿でも少年でもわかり
簡単で広まりやすいので、自分たちの尊い考え方や社会を
守らなければ、占領されてしまうという恐怖感からある種過剰な防衛をしている
年を取れば自然と物事の関係性の重要さに気付くものだから基本保守になる
そういったことを一通り分かったうえであえて福祉にも力を入れるというのが今の先進国のあり方
順番を誤ってはいけない

会社でいえば自分の役割しかしない人は指示待ち人間といわれ歓迎されない
一方で機能的に考える人は他者とのコミュニケーションを図り、関係を大事にし、目的を達成する努力をする
両方の考え方ができる人は機能的発想に加えて他者への配慮もするし、リーダー的

何事も一つの思想だけでどうにかしようとしないほうが良い
例えば「1」をオブジェクトとしてとらえるという、某言語のような考え方は全くする必要ない
数学の「1」にそのような意味はないし、全てをオブジェクトとして再認識して再構築する必要はなく
マルチパラダイム言語で良い
1+2は単に1と2を足すという解釈でよく、1に+2というメッセージをどうのこうのという意味不明な再解釈はいらない
考え方を統一しようとする必要はなく、そういった偏った思想をしても良いことはない
2016/05/05(木) 01:08:08.43ID:dh4q1EnN
アメリカは自由自由いつも言ってるが、いったい何に対しての自由なのか、
どこを目指しているのかというと
自分が生まれながら背負ったroleから自由である、ということ
この辺、人種差別の問題とか貧困の問題とかが出てくる

一方で、社会に対する自分の機能性のようなものは常に非常に重視される
要らなくなったらすぐに首を切られるし、厳しい

とにかく機能機能機能機能、個人に対して厳しい、機能性のない人はいりません
しかし、生まれ持ったroleからの自由はサポートしましょう

その意味で、移民は受け入れる、ただし機能性のある人だけ
2016/05/05(木) 01:19:48.20ID:AqKMDGmp
この長文君きもちわるい…
2016/05/05(木) 01:42:26.59ID:3/paarxc
>>553
ぼくの作ってるものは偽C言語でグローバル変数もあるから
定義的にはプロシージャが適切なんだろうな

それでロールについてはもう少し考えてみるつもりだけど、
malloc()そのものがfunctionとして、malloc()を何につかうのかがroleなのかな
けれど関数の多くはライブラリとかAPIではなく単なるサブルーチンのような気がして
サブルーチンはロールだとも思うのよね
2016/05/05(木) 02:12:56.28ID:Jo4WiHb1
単に役割って意味なら、変数にだってそれぞれの役割があるよね。
2016/05/05(木) 05:12:54.36ID:qzGbsflZ
相手するなよ...
562デフォルトの名無しさん
垢版 |
2016/05/06(金) 09:34:30.45ID:pdJO182a
最適化をサポートする機能を付けるのも、面倒だよね。
昔のVC++の売り文句が、「極限までの最適化」などとうたっていたが、
ビルドの時間も長すぎ、他の作業が中断...というオチ付きだったし。
2016/05/06(金) 09:52:38.91ID:WbxBcPoP
神聖なるビルド専用マシンを他の作業に使うのがおかしい

現在だって動画のレンダリングする連中はそんな感じだろう
564デフォルトの名無しさん
垢版 |
2016/05/07(土) 02:02:54.76ID:lPvt8ROe
ウチの勤め先には、ビルド専用マシンはなかったな。うらやましい。
2016/05/07(土) 12:49:01.06ID:TEQEM2qu
GoogleにはGOMAって名前のビルド専用クラスタ(2〜300台くらい繋げた奴)があるってよ
2016/05/07(土) 14:21:44.92ID:0EiVc3To
そして各チームは一台でも多くのマシンリソースを確保するため
他チームの保有区域への侵略に明け暮れているという
2016/05/08(日) 10:02:36.39ID:jHRrSElx
>>565
クラウドサービス提供するぐらいだからマシンあまってんだろうなぁ
568デフォルトの名無しさん
垢版 |
2016/05/08(日) 13:05:39.75ID:EAH4Xwpx
俺の予想では、Googleやマイクロソフトに太刀打ちできるIT企業って、
日本国内にはないような気がする。
社員か誰かが遊び半分みたいな感じで作り上げた「Googleパックマン」
には、参ってしまったからな。あれは凄かった。
2016/05/08(日) 13:17:39.53ID:EkxZMrhh
>>568
日本どころか全世界でみてもAppleくらいしかいねぇよ
2016/05/08(日) 13:26:01.54ID:cY3IZjLs
DeNA/GREE ほほう
dwango なかなか
CookPad おもしろそうな
DMM 話じゃないか
571デフォルトの名無しさん
垢版 |
2016/05/08(日) 13:27:27.42ID:cY3IZjLs
>>569
Amazon「…」
2016/05/08(日) 21:29:02.01ID:mw6lNm2M
囲碁のSmart Go Formatというのをパースしたいのですが
読みやすいサンプルプログラムないですか。
2016/05/08(日) 22:54:46.20ID:EkxZMrhh
http://senseis.xmp.net/?SGFFile
574572
垢版 |
2016/05/09(月) 19:17:09.28ID:QYIZFGji
ありがとうございます。
読んでみます。
575572
垢版 |
2016/05/09(月) 20:40:18.09ID:QYIZFGji
RubyGemあんのか。
うまくいけば自分で書かなくてもイケるかも。
576デフォルトの名無しさん
垢版 |
2016/05/10(火) 13:55:45.68ID:aTks4HJk
うちみたいに規模が小さいと、データセンターも活用するしか
手がないね。自前のデータセンターなど、夢のまた夢だ。
577デフォルトの名無しさん
垢版 |
2016/05/13(金) 11:38:51.94ID:6Wa+P3Ox
ビルド専用マシンがあるなら、テスト専用マシンもないとおかしいよね。
共にあるのがソフトハウスの標準なの?
うちでは、とてもそこまでの予算をつけてもらえないのだが。
2016/05/14(土) 01:19:35.08ID:spK37znF
投資に見合うリターンがあれば普通は投資するだろう。
579デフォルトの名無しさん
垢版 |
2016/05/14(土) 02:25:57.07ID:guvuQQ9l
ビルド兼テストマシンなら普通にある
2016/05/14(土) 03:51:37.38ID:9OGuGONK
>>577
できたてほやほやの会社で開発が二人しか無い我が社なんかなんもないぞw
awsをスポットで借りると割と安いビルド環境作れるからそういうの使ってるけど。
581デフォルトの名無しさん
垢版 |
2016/05/14(土) 10:30:08.43ID:zu3iiide
>>580
それじゃあ、資本金10万円の株式会社と、何ら変わらんだろww
2016/05/14(土) 21:33:12.49ID:GqFlaCrO
客先常駐の偽装派遣か?
583デフォルトの名無しさん
垢版 |
2016/05/16(月) 00:37:06.74ID:HJQsGNoE
DOS全盛の時代の時は、「遊び半分で、コンパクトなコンパイラでも
作ってみようかな」
という気も起きたが、これだけ複雑怪奇なWindows全盛時代となっては、
もう手軽に手を出せるレベルじゃないよね。
2016/05/16(月) 09:26:54.72ID:HysSRgR+
今ならWASMターゲットでどうよ
585デフォルトの名無しさん
垢版 |
2016/05/17(火) 02:22:11.57ID:1Hk6wPoo
遊びでコンパイラを作るなら、linux用なら、作れば誰か使って
くれるかも...。
2016/05/17(火) 06:47:28.73ID:uw1YLM9D
>>583
別にコンパクトなコンパイラのハードルは上がってないと思うが
無償でほぼフルセットの開発環境が入手できる今では意味が薄れた
って言うのならわかるけど
2016/05/17(火) 12:49:07.23ID:PnBEFQO4
CとかJavaから呼び出す組み込みスクリプトなら需要ありそう
javascriptトランスレータはHaxeがよくできてるけど作ってみたい
2016/05/20(金) 02:16:34.68ID:t8k86oX2
>>356
Forth, Postscript「必要です」
589デフォルトの名無しさん
垢版 |
2016/05/20(金) 23:34:10.65ID:tlYSnHy5
言語仕様作成と、コンパイラ本体は自分で作り、
デバッガだけ外注して作ってもらうというズルはありえる?
高性能なツールにするには、かなり手間がかかると思うのだが。
2016/05/21(土) 00:37:18.20ID:jbF82omc
デバッガってevalさえあれば簡単なものはできそうだが
高機能てなると難しいのかな
2016/05/21(土) 10:16:04.77ID:4qmWB+Wj
その「高性能な」デバッガに何を求めてるかにも依るような。
592デフォルトの名無しさん
垢版 |
2016/05/21(土) 18:55:29.44ID:r6iEFhaA
不具合な動作が時々あるソフトで、たまたま高性能なデバッガに
分析させたら、ソースもないのに、分析されたソフト内部のソースを
画面に表示し、
「ヌル文字列を格納するための領域に、別の文字を格納し、領域を
破壊しています」
とか何とかメッセージを出した例まであるからな。
こういうデバッガは値段が高いだろ。
2016/05/23(月) 19:41:11.89ID:h8XB4lAi
頭悪そうだね
594デフォルトの名無しさん
垢版 |
2016/05/26(木) 00:28:35.77ID:R75m14iA
予約語テーブルに、どのくらい詰め込めば良いかが悩ましい。
あまり増やしすぎると、C++と同じ道をたどるだけだし。
2016/05/26(木) 00:40:19.83ID:SiuzFNyH
C++と同じ道をたどれれば最高じゃないか
2016/05/26(木) 07:23:51.59ID:6iXHX0kN
てか、C++ って機能のわりに予約語は少ない方じゃね?
2016/05/27(金) 15:25:55.45ID:xTig+h/w
アンダーバー付きの予約語は嫌だ
598デフォルトの名無しさん
垢版 |
2016/05/27(金) 21:42:12.01ID:DWOzzldt
俺はiostream関数も嫌だな。
2016/05/27(金) 23:33:16.53ID:64E4c/Qq
抽象関数に実装なし・マーカーとか、書けばわかりやすいのに、
func(){ } = 0

とか、意味不明なことをやって、キーワードを減らしている
600デフォルトの名無しさん
垢版 |
2016/05/31(火) 21:45:44.53ID:0yna7kxs
#include <PANAMA_PAPERS.Lib>
main()
{
for(Datsuzei = 0; Datsuzei <= mugendai; Datsuzei++)
}

こんな予約語やライブラリがあれば、俺のお金も無限に増える
はずなのに。消費税など、上げないでもらいたいよな。
2016/05/31(火) 22:03:33.81ID:TRYwrF1a
お金が無限に増えたらジンバブエみたいになるぞ・・・・・・
2016/05/31(火) 22:10:48.45ID:JlIYRfhe
ジンバブエってdoubleが桁あふれしたんだっけw?
2016/06/01(水) 20:32:23.48ID:72v9yor7
COBOL使ってたから大丈夫
2016/06/01(水) 22:55:39.98ID:z/VHQJBB
ワロタww
せめてrubyにしてくだしあ
605デフォルトの名無しさん
垢版 |
2016/06/05(日) 02:48:48.10ID:itWJAX/I
フリーのコンパイラって、信用できる?
遊び程度でソフト作るなら良いけど、フリーだとサポートも
期待できないし。
2016/06/05(日) 03:05:17.84ID:wHhH7979
gccもclangもjavacもc#も信用ならんって分野ももしかしたらどこかにはあるのかもな
607デフォルトの名無しさん
垢版 |
2016/06/05(日) 03:35:16.04ID:itWJAX/I
gnuのように、ソースが公開されていてもやばい部分もあるのかな?
2016/06/05(日) 09:08:18.42ID:n7k60ruZ
事故った時の補償の話なら先に契約で決めておくしかない
どうしても必要なら補償付きのお高いメーカー製を使えばいい

そこまで気にしないなら適当に人気のやつを選べばいい
ただし最適化を強めにすると地雷を踏むリスクが高い
2016/06/05(日) 09:10:42.69ID:n7k60ruZ
ライブラリとかOSとかに比べればコンパイラ自身のバグは極めて少ない
ただし最適化を強めにすると(ry
610デフォルトの名無しさん
垢版 |
2016/06/05(日) 14:53:16.00ID:D97p9ZEl
最適化有効にしてバグるのも大抵そのプログラムのバグだから
2016/06/11(土) 01:39:10.14ID:cDt3abig
>>605
有料でもサポートしてもらえる範囲は限られてる
612デフォルトの名無しさん
垢版 |
2016/06/11(土) 06:06:42.00ID:MaD03lMp
今考えたら昔のN88BASICも、実は凄かったんだな。
コンパイラを作りの前の基礎教養として、価値があると思う。
知識が多いほうが有利だし。
613デフォルトの名無しさん
垢版 |
2016/08/06(土) 21:46:00.33ID:pVg13zPK
グラフィックライブラリは、やたら予約語の文字数が長くてウンザリ
した経験があるな。わかりやすくコンパクトな予約語で良いのに。
2016/08/06(土) 22:54:17.43ID:Jz+gSdkD
予約語?
2016/08/22(月) 17:08:41.63ID:oW9zLe2W
昔のBASICは名前空間みたいな整理はされてなくて
ライブラリに相当する部分も予約語として扱ってたんだよ
2016/09/13(火) 22:37:20.41ID:0YzbOJ/I
HSPとかもそうだな
2016/10/17(月) 13:00:51.48ID:Vg9Wd9rs
>>613
高々COLORとかPOINTでしょ?
PHIGS辺りのサードパーティライブラリと勘違いしてないか
それともCLSに比べたら長いって話?
2016/10/17(月) 13:06:46.54ID:Vg9Wd9rs
パラメーターがダラダラ長いっていうのなら分かるんだけどな
タートルグラフィック以前の設計で
カレントペンオブジェクトって概念がまだないから
2017/03/20(月) 21:03:09.17ID:FgPIWm6o
haskellのdo構文
620デフォルトの名無しさん
垢版 |
2017/05/15(月) 00:51:21.49ID:SFBD2YKR
Amazon で「Flex & Bison」で検索したらこんなの出て来て驚いた。
http://amzn.asia/2GvBmZs
2017/05/15(月) 18:24:26.90ID:DeqHpRpX
たけーなオイ
622デフォルトの名無しさん
垢版 |
2017/06/26(月) 19:12:09.78ID:6CpK5SZQ
>>606
実際コンパイラはソフトウェア検証の好対象
CakeMLとか
2018/02/16(金) 06:02:50.68ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
2018/03/02(金) 16:53:16.42ID:R33psDql
http://www.softantenna.com/wp/review/tiny-interepter-and-compiler/
625デフォルトの名無しさん
垢版 |
2018/05/23(水) 22:10:50.46ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

RSQUI
626デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:52:46.72ID:gFgZc5FG
CL2
2018/07/16(月) 22:53:08.29ID:oM74pxCP
テスト😊
2018/09/04(火) 14:52:35.77ID:lJV/Mb/R
形式言語の祖・生成文法のチョムスキー90歳の言葉
http://www.videonews.com/marugeki-talk/908/
629デフォルトの名無しさん
垢版 |
2019/03/21(木) 17:55:33.49ID:YzD9JPpd
esprima/escodegenなんかでJS ASTを扱ってる人に質問。
ASTを舐めて変数の型を推論したものをノードに紐付けて記録しておきたいんだけど、JS ASTの場合
ASTの中にメタデータをぶら下げるのと外で持つのとどっちが一般的なんだろう?
中に持つ場合はどこにどういうプロパティ名でぶら下げるか、外の場合はノードの位置を特定する
パスのようなものが必要になるけどそれをどうするか。
2021/02/24(水) 20:03:26.16ID:1LsYaFKv
test
2021/06/01(火) 15:18:43.13ID:IjgT90G7
お前ら元気か?
Prologおじさんが2003年頃からPrologの人気がなくなったとか言ってたんだが、2chのせいではないかと思ってきてみたぜ。
めっちゃ過疎ってるじゃないか。というか2chいつの間にか5chになってたんだな。

Prologは操作的意味論をそのまま書き下して言語作れるので良いぞw

% e.pl
e(I, I) :- integer(I).
e(E1+E2, I) :- e(E1, I1), e(E2, I2), I is I1+I2.

:- e(1+2+3+4,R),!,writeln(R).
:- halt.

というファイルを作って
$ swipl e.pl
10
だ。こんな短く言語実装できる言語は他にないぜw
2021/06/01(火) 15:25:20.70ID:IjgT90G7
Prologなら型システムを作るのもお手の物だ。
t(I,int):- integer(I).
t(E1+E2,int):- t(E1,int), t(E2,int).
:- t(1+2+3,T),!,writeln(T).
:- halt.
これだけ。Prologは関数というか述語のネストをできなくして
述語の引数は全てクォートとされた式のように扱われ、
変数がアンクォートな感じに書ける。
故にLispのS式より複雑な優先順位付きの演算子を使った式が扱えて便利だ。
ってことで、暇な奴がいたら使ってみて欲しいんダゼ。
じゃあなw
2021/06/23(水) 07:02:20.99ID:HYjDIJ1V
Prolog興味あるけどCとかJavaとかPythonとかのメジャーどころと違って教科書みたいなアカデミックな本しか見つからないから並以下グラマの俺には無理
2021/10/13(水) 08:22:07.76ID:Qk99MJFD
岩波のprologのプログラミング作法読んでみたら?

第5世代が成果をオープンソースに出来ていればなあ
2023/07/05(水) 03:42:10.87ID:e/cCV0Lv
>>311
人は死後49日は漂うと云われているな
2023/09/24(日) 11:28:47.13ID:Iodo3XEj
インタプリタの作り方 −言語設計/開発の基本と2つの方式による実装− - インプレスブックス
ttps://book.impress.co.jp/books/1122101087
2023/10/06(金) 08:06:12.42ID:NmxdZAP9
バックエンドの作り方はググれば解説が出てくるが
“実用的な”バックエンドの作り方はさっぱりわからない
RX用のバックエンドが欲しいんだがなー
638デフォルトの名無しさん
垢版 |
2023/11/11(土) 06:58:34.37ID:uMtlBPBy
double a = 2.71828;

というコードをコンパイルするときに、2進浮動小数点数に変換しないといけないと思います。
2進数浮動小数点数に丸めるときに、四捨五入(0捨1入)したり、一番近い2進浮動小数点数に変換したりといろいろな方法がありますが、その方式を決定するのもコンパイラの仕事ですか?

計算機イプシロンを ε_M とします。
2進浮動小数点数に丸めるときの方式として、四捨五入(0捨1入)が採用されているかどうかを確かめる方法として、

eps = 2^(-52)
1 + (1/2) * eps

を計算させて、それが 1 + eps に等しいかどうかをみるという方法が数値解析の本で紹介されています。

1 + (1/2) * eps

を計算するときに、丸めとかで変な浮動小数点数になって、この紹介されている方法が実行できないとかないですか?
639デフォルトの名無しさん
垢版 |
2023/11/11(土) 07:01:57.70ID:uMtlBPBy
あと、

double a = 2.71828 * 3.141592;

というコードがあったとき、

コンパイラは、 2.71828 を丸めた2進浮動小数点数と 3.141592 を丸めた2進浮動小数点数を掛けよという機械語に翻訳するんですか?
それともこんな簡単な計算はコンパイラで予め行って、その結果を a に代入するという機械語を生成するんですか?
640デフォルトの名無しさん
垢版 |
2023/11/11(土) 08:35:32.43ID:fuGMacjx
double a = math.E + path.PI;
641デフォルトの名無しさん
垢版 |
2023/11/11(土) 08:37:19.10ID:fuGMacjx
宿題は宿題スレへ
2023/11/11(土) 11:05:25.10ID:5AzCeqvD
はい
あります
はい
場合によります(最適化という追加処理)
2025/05/12(月) 14:33:58.90ID:Zw0HuL6G
こういう言語作る系スレが廃れた原因は何だろう
2025/05/12(月) 15:01:28.97ID:zCv6/zTu
>>639
そういうコードはコンパイル時に計算されて
実行時には計算結果がそのまま代入されるけど
「コンパイル時に計算」の際の浮動小数点数での計算の扱いには無頓着で良いと思ってるの?
2025/05/12(月) 15:24:34.24ID:FL+WAIid
C言語にはfesetenvのような浮動小数点数プロセッサのモード切替関数もあるからな
コンパイル時に計算してしまうことでそれが反映されなくなるのもそれはそれで問題になるケースがある
2025/05/13(火) 09:27:05.77ID:C/NhftFY
Rustなら多い日も安心
2025/06/30(月) 18:56:31.06ID:YQWckD/5
あれから色々勉強しましたがCoq(Rocq)での証明や Prolog で操作的意味論や型システムを書くのは楽しいです。
11年かぁ。
$ apt install swi-prolog
$ vi e.pl
e(I,I):- integer(I).
e(E1+E2,I):- e(E1,I1), e(E2,I2), I is I1+I2.
:- e(1+2+3+4,I),writeln(I).
:- halt.
$ swipl e.pl
10
と簡単に言語を作れるので便利だし、最近はAIがプログラム書いてくれるし便利になったなぁ。
2025/07/12(土) 09:48:27.49ID:tq7D7WVM
書き込み消えた気がする。
2025/09/04(木) 08:13:08.15ID:qpvksIhN
もうどこも人がいない・・・
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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