Linuxは、開発環境が40年前と同レベル (819レス)
Linuxは、開発環境が40年前と同レベル http://mao.5ch.net/test/read.cgi/linux/1520651677/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: login:Penguin [sage] 2018/03/10(土) 12:14:37.34 ID:F9RE316x 間違ってもらっては困るのは、それはコマンドライン・メインなのが主因ではないということ。 本当の一因は、本来手書きでも簡単な Makefile の作成をわざわざ難しくしてしま う autotools を権威に流されたのか多くのプロジェクトが使ってしまっている事にある。 高々 Makefile 1つ作るためにも以下のような工程を踏まなければならない。 本来、典型的には、ソースファイルである *.c, *.cxx, *.cpp を指定するだけ でも自動生成する事が出来るはずなのに、ツール類が馬鹿だからそうなってない。 なのに、「Linuxはプログラマーには便利」などと嘘情報が流れるから、普及しない。 しかも、カレントディレクトリのスクリプトの実行に「./configure」などと「./」 の指定が必要なのも馬鹿丸出し。ファイル名に大文字小文字の区別がされているのも馬鹿。 ファイルのコピーもdosなら、「copy *.c /xxx/aaa 」で済むことが $ find . -name '*.c' | xargs -n 1 -i cp -p {} /xxx/aaa などとしなくてはならず長すぎ、馬鹿ですか? しかも、'*.c'の部分が、*.c と書かれている 説明が溢れているがそれだとbashが展開してしまうのでたまたま上手く行く事はあっても、 実際には正しくない。また、mountしないとディスクが認識出来ないのも初代PC-8001の レベル。PC-8801で自動マウントできるようになったのに(いつの時代(苦笑))。まずは、 不便さを認めるなければ、改善すらままならないのにそれすら全否定。正直に便利と思って るなら井の中の蛙で馬鹿で無知なだけだ。そして、僅か1点でも間違いがあれば全てが間違って いるように全否定してしまうLinux信奉者の愚かさもアホとしか言いようがない。 http://mao.5ch.net/test/read.cgi/linux/1520651677/1
2: 1 [saga] 2018/03/10(土) 12:15:01.91 ID:F9RE316x >>1 01. (Makefile.amの作成) # 手作業 02. $ autoscan 03. [configure.scan生成] # 自動 04. $ cp configure.scan configure.ac 05. (configure.acの修正) # 手作業 06. $ aclocal 07. $ automake -a 08. [Makefile.in生成] # 自動 09. $ autoheader 10. [config.h.in生成] # 自動 11. $ autoconf 12. [configure生成] # 自動 13. $ ./configure実行 14. [Makefile生成] # 自動 http://mao.5ch.net/test/read.cgi/linux/1520651677/2
3: login:Penguin [sage] 2018/03/10(土) 12:21:01.63 ID:F9RE316x 馬鹿だから簡単に各方法を見出せず、ただただ、大量のツールを開発し、 時間をかけ苦労して使っている。そして大量の時間と膨大なHDD容量と、 ネット容量を使いまくって、それしかやる事が無い無能連中がOSS開発で よってたかって、なんとか表面的には動くバグだらけの使えないツール類を 作りまくって出来上がった集大成が Linuxだ。 http://mao.5ch.net/test/read.cgi/linux/1520651677/3
4: login:Penguin [sage] 2018/03/10(土) 12:34:52.53 ID:GhVyQtCz いまだにビルドが遅いんだよな しかもカーネルをビルドできるだけでドヤ顔できるほどの難易度 コーディング中にリアルタイムでエラーが指摘される時代に何やってんだとは思う http://mao.5ch.net/test/read.cgi/linux/1520651677/4
5: login:Penguin [sage] 2018/03/10(土) 12:38:23.34 ID:D1qSb8RL ちゃんと動くんならいいじゃないか。 他のOSでは macOS High Sierra はちょい品質が…なのだし。 http://mao.5ch.net/test/read.cgi/linux/1520651677/5
6: login:Penguin [sage] 2018/03/10(土) 14:11:12.74 ID:eQWNUFiP WindowsやiOSやmacOSのビルドは違うとでも思っているのだろうか… http://mao.5ch.net/test/read.cgi/linux/1520651677/6
7: login:Penguin [sage] 2018/03/10(土) 14:31:03.97 ID:lzdUB3GL LinuxだとVimとそれぞれの言語に応じたデバッガーだな macOsだと糞Xcode http://mao.5ch.net/test/read.cgi/linux/1520651677/7
8: login:Penguin [sage] 2018/03/10(土) 17:36:12.21 ID:zCz6mMg3 40年前の技術に後れをとる大企業マイクロソフトはどんだけ機能不全なんだよw http://mao.5ch.net/test/read.cgi/linux/1520651677/8
9: login:Penguin [sage] 2018/03/10(土) 19:31:57.68 ID:kO7HFFeK 補助ツールのやってることが場当たりの対応でしかないから、 新しく作るものも場当たりの対応に合うように作ることになる切なさがある そして今は逆に、みんな好き勝手にビルドツールを作る時代になって、それはそれで面倒くさいことに http://mao.5ch.net/test/read.cgi/linux/1520651677/9
10: login:Penguin [sage] 2018/03/10(土) 21:14:20.31 ID:Iz6oQn3Q >>1 > ファイルのコピーもdosなら、「copy *.c /xxx/aaa 」で済むことが できないんだっけ? http://mao.5ch.net/test/read.cgi/linux/1520651677/10
11: login:Penguin [sage] 2018/03/10(土) 23:08:08.54 ID:Trf+5FyR DOSはコマンドラインの長さ制限が厳しすぎて*のファイル名展開したら Linuxでcp *.c /xxx/aaaするより限界低そうだけどどうなんだろうな http://mao.5ch.net/test/read.cgi/linux/1520651677/11
12: login:Penguin [sage] 2018/03/11(日) 01:56:09.27 ID:ceorHAxI 久しぶりに同意できる>>1 http://mao.5ch.net/test/read.cgi/linux/1520651677/12
13: login:Penguin [sage] 2018/03/11(日) 02:44:26.18 ID:W7wkl3nL CUI で開発できるので、うれしい。 よく知らないGUIのOSだと、モヤモヤする。 http://mao.5ch.net/test/read.cgi/linux/1520651677/13
14: login:Penguin [sage] 2018/03/11(日) 07:43:32.76 ID:7srcRXE1 >>10 copyじゃなく、xcopyかな。 http://mao.5ch.net/test/read.cgi/linux/1520651677/14
15: login:Penguin [sage] 2018/03/11(日) 08:13:57.73 ID:7srcRXE1 >>11 DOSのcommand.comはワイルドカードを展開しない仕様だったからコマンドラインの 文字数制限の壁にかからなかった。一方、Linuxは、普段は cp *.c /xxx/aaa で行け ても全てのファイル名の合計文字数が長くなればその制限に引っかかる。だから 結局、findを使わざるを得なくなることがある。そしてファイル数が多いときにもエラーを 絶対に起こさないためには最初からfindを使わざるを得ないと思う。じゃあなんのために、 bashのワイルドカード展開はあるかって話になるかも。 http://mao.5ch.net/test/read.cgi/linux/1520651677/15
16: login:Penguin [sage] 2018/03/11(日) 10:02:48.60 ID:FS0P3X2Y >>13 知識がついてきてないだけやんwwww http://mao.5ch.net/test/read.cgi/linux/1520651677/16
17: login:Penguin [sage] 2018/03/11(日) 11:16:41.03 ID:wZ7PAPAy CUIはどこいっても似たようなもんだからな GUIは文化の壁が厚すぎる OS違ったら当然のこと、業界によっても常識が変わるからな http://mao.5ch.net/test/read.cgi/linux/1520651677/17
18: login:Penguin [] 2018/03/11(日) 11:31:33.53 ID:1WQdp6Y+ ワイルドカードの展開は余計なお世話だと言いたいのかな。それなら抑止するオプションもあるのだが。 「この仕様はどんなメリットがあるの?」とか「DOS のこれは Linux ではどうやるの?」とかなら助けてやれるかもしれないのだが。 http://mao.5ch.net/test/read.cgi/linux/1520651677/18
19: login:Penguin [sage] 2018/03/11(日) 12:48:03.51 ID:YsLyPzcd 面倒でもあるが細かい所まで手を入れる事できるからまし。vsでビルドで謎エラーとか http://mao.5ch.net/test/read.cgi/linux/1520651677/19
20: login:Penguin [sage] 2018/03/12(月) 03:16:00.77 ID:ZVV/4ff9 cmakeが主流になりつつあるだろ 誰も知らんのか http://mao.5ch.net/test/read.cgi/linux/1520651677/20
21: login:Penguin [sage] 2018/03/13(火) 07:39:51.39 ID:bSKvTeow autotoolsとCMake、正直どっちもつらみがある CMakeなら.slnファイルも作れるという強みはあるが… しかし>>1はいろいろと誤認や知識不足がみられるな PATHに.入れればconfigureで実行できるようになるがセキュアでないので 推奨されない 今時のGUI環境ならPnPでディスクは勝手にマウントされる wildcardの展開をshellまかせにするかコマンド側がよろしくやってくれるのかは 一長一短あるだろう Visual Studioがいい環境なのは認めるよ。VSCodeはその域に達してないし http://mao.5ch.net/test/read.cgi/linux/1520651677/21
22: login:Penguin [sage] 2018/03/13(火) 10:22:06.61 ID:5bGA/MLX >>21 >PATHに.入れればconfigureで実行できるようになるがセキュアでないので >推奨されない それでバランスしてしまったのがUnix文化の困ったところなんだ。 DOSだと、暗黙のうちに「.」が検索パスに入っていることが前提だからそれを 前提にした文化が形成されたので、その状態でも十分に「セキュア」になった。 その結果、./を付けなくてもカレント・ディレクトリのEXEやBATファイルを実行できる という超便利な環境となった。ところが、Unixだと古い文化を引きずったまま 直ることが無かったので不便なままとなった。その結果、今後Wineが究極まで 達してもLinuxがWindowsの代わりにはなりえないかも知れない。 http://mao.5ch.net/test/read.cgi/linux/1520651677/22
23: login:Penguin [sage] 2018/03/13(火) 10:33:37.76 ID:5bGA/MLX >>21 >今時のGUI環境ならPnPでディスクは勝手にマウントされる Ubuntuだけど、 1. /etc/fstab に光学ドライブを書いておくと、Login前に待機状態になってしまう。 2. Login後、メディアを入れてからNautilusでドライブをクリックすると認識はできる。 3. しかし、メディアを交換したときにトラブルが生じやすい。例えば、Wineだ。 4. HDDですら、Nautilusでドライブをクリックせずに、いきなり端末を使った場合には マウントされてない。 5. おまけをいうと、FAT32のような単純なドライブですら、Linuxではext3とはpermissionなど で非互換がおきまくって、正しく動作出来ない。たとえば、そのドライブでは、ソースからは 上手くmakeが出来ず、どこかで不具合が生じてしまう。だから、ext3ドライブにソースを 全コピーしないといけなくなる。 http://mao.5ch.net/test/read.cgi/linux/1520651677/23
24: login:Penguin [sage] 2018/03/13(火) 10:35:32.21 ID:5bGA/MLX >>21 >wildcardの展開をshellまかせにするかコマンド側がよろしくやってくれるのかは >一長一短あるだろう 現実に良く使うコマンドがとても長くなってしまっているのだから、結果的にはLinuxの 方が使いにくい。 http://mao.5ch.net/test/read.cgi/linux/1520651677/24
25: login:Penguin [sage] 2018/03/13(火) 10:52:01.11 ID:5bGA/MLX >>21 >Visual Studioがいい環境なのは認めるよ。 この書き方だと、プログラムの経験が浅い人にはVisual Studio だけが例外的に 「いい環境」なだけだと思われてしまう。 ところが、実際にはそうではなく、TurboC++, WatcomC++なども、十分に便利だった。 コマンドラインでも、gccやgnu make などとくらべて、だいぶ便利だったんだ。 はっきりいえば、gccやmakeやLinux文化は洗練されておらず、頭が悪いんだ。 http://mao.5ch.net/test/read.cgi/linux/1520651677/25
26: login:Penguin [sage] 2018/03/13(火) 11:51:15.98 ID:wIVMmkuq Emacsだけ有ればいいさ! http://mao.5ch.net/test/read.cgi/linux/1520651677/26
27: login:Penguin [sage] 2018/03/13(火) 12:29:55.64 ID:9i5woyma makeは特別に良いとは言わないけど別に悪くもない それより最近は言語に特化したビルドツールが多いから色々覚えなきゃいけないのが面倒 http://mao.5ch.net/test/read.cgi/linux/1520651677/27
28: login:Penguin [sage] 2018/03/13(火) 12:45:35.08 ID:5bGA/MLX >>27 基本的には、make自身の問題よりも書き方やそれ以外の変なツールが標準になっていることの問題 が大きい。しかし、gnu toolsは、余計なメッセージだけを消す事が出来ないことが多いのが クソなんだ。消そうと思うと全てのメッセージが消えたりして、使い物にならない。turbo c++ や watcom c++ , msc++, vc++のツール類は、どれもそんな初歩的な不具合は無かった。 http://mao.5ch.net/test/read.cgi/linux/1520651677/28
29: login:Penguin [] 2018/03/13(火) 12:55:37.69 ID:IE+orhWI すごいな。いろんな意味で。現状に不満があるのは理解できたけど、不満を解消するために何をしたの? http://mao.5ch.net/test/read.cgi/linux/1520651677/29
30: login:Penguin [sage] 2018/03/13(火) 13:08:58.30 ID:5bGA/MLX それが責任者不在の問題点。こっちは部外者なのに責任を負わそうとする。 http://mao.5ch.net/test/read.cgi/linux/1520651677/30
31: login:Penguin [sage] 2018/03/13(火) 23:35:22.57 ID:WPjn7ohc 昔は、好きでやってる開発者に世界中のユーザーが支援して品質を高めていくオープンソースやフリーソフトに、 仕事で嫌々やってる商用ソフトがかなうわけないと思ってたけど、そうでもなかったな。 やっぱり仕事で真剣にやってる人たちにはかなわないんだな。 http://mao.5ch.net/test/read.cgi/linux/1520651677/31
32: login:Penguin [sage] 2018/03/14(水) 05:31:25.15 ID:4nEasH7v jetbrainsのIDE使っとけば http://mao.5ch.net/test/read.cgi/linux/1520651677/32
33: login:Penguin [sage] 2018/03/14(水) 07:17:28.33 ID:HRaHWJ8k TURBO Cのコマンドラインは使ったことないな。IDEは便利だったけど。 ただ当時のレベルだったらemacsのmake+ctags環境も十分匹敵する レベルだったと思うが。あの頃にリファクタリング機能とかなかっただろう。 jetbeansの名前も出てるけど、Eclipse, Anjuta, KDevelopみたいな IDEもある中でそういうのを出して比較しないのはちょっとフェアじゃ ないんじゃないか。 まあそれらと比較してもIntelliSenseに及ばないんだけど。 http://mao.5ch.net/test/read.cgi/linux/1520651677/33
34: login:Penguin [sage] 2018/03/14(水) 07:43:43.32 ID:HRaHWJ8k >>22 出自が1マシンを複数ユーザーで使うことが前提の環境だったので 悪意あるユーザーの想定が必要だった。というかWindosが今の状態で 十分セキュアとは思えないんだけど。悪意あるユーザに勝手にファイル 置かれて実行されるリスクは下がっちゃいないのでは。 >>23 fstabを書いた例と書かない例を混ぜて文句いうのはちょっと感心しない。 FAT32はそもそもろくなメタデータおけなくてPOSIX的なファイルの扱い にマッチしないのでそりゃしょうがないよとしかいえない。 全コピーしなくてもloopback filesystem置く手段はある。Windowsでも 似たようなこと(vhdファイル作ってマウント)しないとFAT32領域に まともにアプリがインストールできない事態起きるし。 >>24 そこはもう慣れの問題で自分は「クソ、勝手に処理しやがって」と 思うことの方が多いし味方の別れるところだと思う。個人的にはそんなに 頻繁に使うならエイリアスかスクリプトにでもしたら、と思う。 http://mao.5ch.net/test/read.cgi/linux/1520651677/34
35: login:Penguin [sage] 2018/03/14(水) 08:42:41.08 ID:4J3TJdzv >>34 >全コピーしなくてもloopback filesystem置く手段はある。 こういうのを聞いて、イザやってみても別のところで不具合が起きて時間の無駄になった 経験が沢山ある。 http://mao.5ch.net/test/read.cgi/linux/1520651677/35
36: login:Penguin [sage] 2018/03/14(水) 09:11:53.42 ID:4J3TJdzv >>34 >FAT32はそもそもろくなメタデータおけなくてPOSIX的なファイルの扱い >にマッチしないのでそりゃしょうがないよとしかいえない。 数学的にはFAT32であってもext3の模倣もする事が出来る。 あなたは数学は苦手ですか? 苦手なら、数学とプログラムと UnixとWindowsとExt3とFAT32の全てに詳しい者に聞いてみるといい。 自分にはそれをするための方法が頭の中で分かる。そういうツールや ドライバが既にあるという意味ではない。作ろうと思えば作れるという 意味。そして、自分にはその義務はない。 http://mao.5ch.net/test/read.cgi/linux/1520651677/36
37: login:Penguin [sage] 2018/03/14(水) 16:11:19.24 ID:B9yzXWAU なんでコンパイラと統合環境比べてるの? 統合環境でVSが良いのは認めるけどLinuxだってEclipseやJetbrainはあるし http://mao.5ch.net/test/read.cgi/linux/1520651677/37
38: login:Penguin [sage] 2018/03/14(水) 16:13:41.16 ID:B9yzXWAU WindowsってただVSが良いというだけじゃん 未だにまともなパッケージ管理もないしシェルは使えないし開発する環境としては最悪だよ http://mao.5ch.net/test/read.cgi/linux/1520651677/38
39: login:Penguin [sage] 2018/03/14(水) 16:32:54.53 ID:q4XJOHSe VisualStudioが便利な言語って限られるし 開発環境全般で言えばWindowsだけじゃ不足なのでWSLが持て囃されたりしてるし 万能なものはないからいいとこ取りで使っていればいいだけだ http://mao.5ch.net/test/read.cgi/linux/1520651677/39
40: login:Penguin [] 2018/03/14(水) 16:48:10.54 ID:80z85C3j MS-DOS を使っていた時代は、UNIX を使っている人たちが羨ましくて仕方なかったな。本当に何から何まで羨ましかった。 だから、Linux よりも DOS がいいというのはなかなか興味深い見解だと思ったのだが……どうやらお呼びじゃなさそうだ。 http://mao.5ch.net/test/read.cgi/linux/1520651677/40
41: login:Penguin [sage] 2018/03/14(水) 16:55:34.82 ID:4J3TJdzv >>40 そりゃ、DOSはLinuxのサブセットみたいに普通思い勝ち。でも実際はむしろMSが 進化させたんじゃないかと、今では思ってる。実際MS製Unixは売れずにDOS だけが売れたし。 http://mao.5ch.net/test/read.cgi/linux/1520651677/41
42: login:Penguin [sage] 2018/03/14(水) 17:03:07.07 ID:4J3TJdzv >>37 コマンドライン・コンパイラを比較してもやはり、TurboC++, WatcomC++などとくらべて gnu tools は使いにくいと思ってるし、上でもそう書いてる。 http://mao.5ch.net/test/read.cgi/linux/1520651677/42
43: login:Penguin [sage] 2018/03/14(水) 17:22:38.91 ID:Ot1p/P4U 使いこなせないだけだろw http://mao.5ch.net/test/read.cgi/linux/1520651677/43
44: login:Penguin [sage] 2018/03/14(水) 17:22:39.04 ID:KnbtLvIZ autotoolsはマルチプラットフォームを前提としたものだからTurboとかとは目的が違う 別のOSでも同様の手順でいいという使い勝手はTurboCとかじゃ実現できないわけで結局使い易いとかは主観でしかないしどれだけ自分に都合が良いかというだけのこと http://mao.5ch.net/test/read.cgi/linux/1520651677/44
45: login:Penguin [sage] 2018/03/14(水) 17:26:17.11 ID:4J3TJdzv >>43 色々な嘘によって、ミュンヘン市は損害を追ったのに、Linuxサイドは「技術的な問題じゃない」 という一点張り。スラドではこの態度に対し、「なんと言う言い訳」と言われてた。 http://mao.5ch.net/test/read.cgi/linux/1520651677/45
46: login:Penguin [sage] 2018/03/14(水) 17:26:44.28 ID:Ot1p/P4U 使いやすいとか使いにくいは慣れの問題だし 最初に手をそめた環境がその人の一生の好みを決めるところがある 自分の好みを言っても主観以外のなにものでもない http://mao.5ch.net/test/read.cgi/linux/1520651677/46
47: login:Penguin [sage] 2018/03/14(水) 17:30:09.61 ID:4J3TJdzv >>46 LibreOfficeの開発者もそんな事言ってた・・・。 http://mao.5ch.net/test/read.cgi/linux/1520651677/47
48: login:Penguin [sage] 2018/03/14(水) 17:58:02.77 ID:4J3TJdzv 欧米流は、言い訳が多いな。 http://mao.5ch.net/test/read.cgi/linux/1520651677/48
49: login:Penguin [sage] 2018/03/14(水) 18:31:54.74 ID:4J3TJdzv >>44 ただ、そんなことしなくても(30年前に比べれば)言語やOSで色々と統一化や 標準化もあったりしたせいか、それらのツールのやり方が本末転倒で意味不明 な存在になってり。 今は、そもそも出来ない場合にはそんなツール使っても出来ないし、出来る 場合には使わなくても出来る。存在意義がどれくらい果たしてあるのか。 http://mao.5ch.net/test/read.cgi/linux/1520651677/49
50: login:Penguin [sage] 2018/03/14(水) 18:51:47.32 ID:rvms1pqi 出来るかどうかってのは使う人間の能力によるところが大きいから出来なかったとしても仕方がない http://mao.5ch.net/test/read.cgi/linux/1520651677/50
51: login:Penguin [sage] 2018/03/14(水) 18:57:43.24 ID:4J3TJdzv >>50 今は、「マルチプラットフォーム」での非互換部分を自動的に修正してくれるかどうかの話 やで。 http://mao.5ch.net/test/read.cgi/linux/1520651677/51
52: login:Penguin [sage] 2018/03/14(水) 19:32:56.84 ID:rvms1pqi そのソフトウェアがそのOSに対応してるのなら自動的に追従するようになってるだろ 想定されたOSでそれが出来ないということなら問題は人間側に(以下略 http://mao.5ch.net/test/read.cgi/linux/1520651677/52
53: login:Penguin [sage] 2018/03/14(水) 23:56:01.59 ID:qC2L6BuB スレタイだけでの反応なんだけれど、 16年前に書いたソース群を、今日makeする事ができた。 これ、本当に凄い事だと思う。1回覚えた事や環境がずっと使えるって幸せ。 http://mao.5ch.net/test/read.cgi/linux/1520651677/53
54: login:Penguin [sage] 2018/03/15(木) 00:25:00.60 ID:cRQ+JQN/ >>1 読むと、autoconfは確かに面倒なの同意。 良書がなかったしね。訳本も酷かった。本当に酷かった。 そもそもポータビリティに気を付けてソースを書きなさい。 後は、色んな環境でもmakeできるようにしてあげるよって思想だった記憶。 お陰でvine2.1.5時代に作った物が今でもmakeできた。 ただ、思い出して修正できるまでに10日かかった。 当時も日本人開発のソフトには導入が不完全で、バグレポート送ったりしてたわ。 http://mao.5ch.net/test/read.cgi/linux/1520651677/54
55: login:Penguin [sage] 2018/03/15(木) 10:44:40.56 ID:lnWZyj3L えっ!? http://www.jaist.ac.jp/~kiyoshiy/memo/autoconf.html >autoconf/automakeのバージョンを少し上げただけで、 それまでに作成した >configure.inに対してautoconf/automakeを実行すると エラーや警告を生じる >ようになる場合が多々あります。 むやみに最新バージョンをインストールし >ないほうがよいようです。 >以降の記述でも、autoconf/automakeのバージョンによってはエラーや警告 >が発生する場合があります。 http://mao.5ch.net/test/read.cgi/linux/1520651677/55
56: login:Penguin [sage] 2018/03/15(木) 10:52:04.96 ID:lnWZyj3L どっちの関数があるかないかによって、自分のコードにこんなの書かされる。 片方の環境しかなければ、もう片方のテストはしないってことだよね。 #ifdef HAVE_GETCWD getcwd(pathname, sizeof(pathname)); #else # ifdef HAVE_GETWD getwd(pathname); # endif #endif このようなコードを何回も書くのは駄目コードだ。なぜなら、1文字でも間違って いればバグるのに、テストも出来ないから。 http://mao.5ch.net/test/read.cgi/linux/1520651677/56
57: login:Penguin [] 2018/03/15(木) 11:03:36.94 ID:lnWZyj3L 例えば、マクロ名を間違って、 #ifdef HAVE_GETCVD #ifdef _HAVE_GETCWD #ifdef HAVE_GET_CWD #ifdef HAVE_GTECWD #ifdef HAVE_GETCW などと書いてしまったらどうなるか。このようなミスは、ヒューマンエラーなので、 頭の良さや経験や能力に関わらず、誰にでも起こりうる(なのに、エラーになら ない。)。 また、それとは別に、例えば、その環境では getcwd(pathname, sizeof(pathname)); の部分をコンパイラがパースすらしない場合、 getcwd(pathname. sizeof(pathname)); getcwd(pathname, sizeof(pathname)): getcwd(pathname, sizoef(pathname)): getcwd(pathname, sizeof(pathnmae)); などの書き間違いがあったらどうなるか。 , . ; : の間違いがあるが良く見ないと分からない。 これならまだコンパイル・エラーになるだけなので まだ良くて、一度もテストしないなら、コンパイルは通るのに、 実行段階で結果だけがおかしくなることもありうる。その場合は もっとたちが悪い。 http://mao.5ch.net/test/read.cgi/linux/1520651677/57
58: login:Penguin [sage] 2018/03/15(木) 14:29:04.87 ID:LTp8xgxY それはCプリプロセッサの問題だろ http://mao.5ch.net/test/read.cgi/linux/1520651677/58
59: login:Penguin [sage] 2018/03/15(木) 14:49:32.28 ID:lnWZyj3L >>58 頭の言いプログラマなら、別の方法を探す。 馬鹿だからその「解」が見つからない。 http://mao.5ch.net/test/read.cgi/linux/1520651677/59
60: login:Penguin [sage] 2018/03/15(木) 14:57:50.65 ID:LTp8xgxY >>59 プリプロセッサに代わる頭の良いやり方を是非開発して http://mao.5ch.net/test/read.cgi/linux/1520651677/60
61: login:Penguin [sage] 2018/03/15(木) 15:07:39.22 ID:lnWZyj3L >>60 1つの方法としては、新規に共通(互換)ライブラリを作れば良い。 上の例だと最も単純には、 1. getcwd(pathname, sizeof(pathname)); 2. getwd(pathname); の「1」の方はアプリ・プログラムでは使わずに、必ず2を使うようにする。 そして2が存在しない環境向けには、 xxx getwd(zzz *pathname) // zzz は恐らく char { ・・ aaa = getcwd(pathname, 最大パス文字数); ・・・ } のような感じのライブラリ関数を提供してしまう。こうしてしまえば、 autotool なんてアプリをビルドする際には全く使わなくて良くなる。 長いパス名が使える環境向けには、「最大パス文字数」を動的に可変に する方法も有り得る。そうするには工夫が必要だが不可能なことではない。 http://mao.5ch.net/test/read.cgi/linux/1520651677/61
62: login:Penguin [sage] 2018/03/15(木) 15:18:54.99 ID:LTp8xgxY そのやり方は無造作にやるとシンボル名が衝突してコンパイルやリンクエラーになりますが 動作の切り分けはどうやってするのですか? http://mao.5ch.net/test/read.cgi/linux/1520651677/62
63: login:Penguin [sage] 2018/03/15(木) 15:25:01.52 ID:lnWZyj3L >>62 シンボル名の「衝突」と言っても色々な場合があり、一概には言えないが、 新しい共通ライブラリ関数は、例えば cmn_getwd() のように先頭に 「cmn_」を付けてしまって、アプリは、「cmn_xxx」の 方だけを使うようにすれば、衝突の心配が1つ消える。 http://mao.5ch.net/test/read.cgi/linux/1520651677/63
64: login:Penguin [sage] 2018/03/15(木) 15:36:11.68 ID:LTp8xgxY >>63 名前変更した共通ライブラリをビルドするときはどう回避するの? http://mao.5ch.net/test/read.cgi/linux/1520651677/64
65: login:Penguin [sage] 2018/03/15(木) 16:15:21.72 ID:lnWZyj3L >>64 それは色々なやり方があるが、2つだけ書いておく: 1. そのライブラリのソースだけは、プラットフォームごとに場合分けしてしまう。 2. 何らかのツールで、関数ごとに使えるかどうかチェックし、1,0のフラグを マクロに設定するヘッダフィルを作成し、そのマクロで#ifdefで場合分けする。 どちらの方法でも、ライブラリだけを誰かが集中的に徹底的にテストとバグ取りして、 ライブラリを作る人だけは、全プラットフォームでテストを徹底的にしさえすれば、 >>56-57 のような危険が生じる可能性を限りなく0に近づけられる。 http://mao.5ch.net/test/read.cgi/linux/1520651677/65
66: login:Penguin [sage] 2018/03/15(木) 16:34:03.34 ID:LTp8xgxY >>65 本質的にプリプロセッサの問題を解決しておらず 欠陥品を頑張ってなんとかするというのは頭の良い解決策とは 余り言わないと思いますが。 http://mao.5ch.net/test/read.cgi/linux/1520651677/66
67: login:Penguin [sage] 2018/03/15(木) 16:37:22.78 ID:lnWZyj3L >>66 だったら、プリプロセッサを改良すれば良いよ。 http://mao.5ch.net/test/read.cgi/linux/1520651677/67
68: login:Penguin [sage] 2018/03/15(木) 16:53:31.36 ID:LTp8xgxY >>67 具体的に改良点も挙げずに言われても無意味ですし プリプロセッサが改良できるならあなたが最初に上げた問題点も解決するのでは? http://mao.5ch.net/test/read.cgi/linux/1520651677/68
69: login:Penguin [] 2018/03/15(木) 17:00:13.27 ID:lnWZyj3L >>68 >プリプロセッサが改良できるならあなたが最初に上げた問題点も解決するのでは? いや、それだけだと「>>57」の前半の問題は解決するが、後半の問題は残る。 >>65の方法を使えば、両方の問題を解決できる。モジュール別テストは強力だから。 http://mao.5ch.net/test/read.cgi/linux/1520651677/69
70: login:Penguin [sage] 2018/03/15(木) 17:04:19.91 ID:lnWZyj3L >>68 >具体的に改良点も挙げずに言われても無意味ですし >>57の前半の問題を根本的に解決したければ、gccの前処理(プリプロセス)部分 に独自の前処理指令を追加すれば良い。 ただ、そこまでしなくても、>>65の方法のようにすれば、モジュール別テストの効果で 非常に安定なプログラムを作り得る。 http://mao.5ch.net/test/read.cgi/linux/1520651677/70
71: login:Penguin [sage] 2018/03/15(木) 17:11:21.49 ID:LTp8xgxY 共通ライブラリのビルド時にシンボル名の衝突回避をプラットフォーム毎に判別する 方法が具体的に何も提示されてないのですが。 http://mao.5ch.net/test/read.cgi/linux/1520651677/71
72: login:Penguin [sage] 2018/03/15(木) 17:20:34.61 ID:lnWZyj3L >>71 一応、何度も「衝突回避」と書いてあるけど、「関数が定義されているか どうかによる場合分け」みたいなことだよね。 その部分だけは、何らかのツールを使えばよい。最も単純な物でよければ、シェル スクリプトでもいける。コンパイラ処理系によって違ってくるが、使うライブラリ 全てについて、ライブラリアンやリンカなどでexport symbolの一覧を出して、 関数名(シンボル名)が出力されるかを調べれば良い。それは、 librarian -list_exports xxx.lib | grep シンボル名 が1文字以上の何かを出力すれば真、何も出力しなければ偽、という 様な論理で良い。それをシェルスクリプトに書けば良い。 http://mao.5ch.net/test/read.cgi/linux/1520651677/72
73: login:Penguin [sage] 2018/03/15(木) 17:23:35.45 ID:lnWZyj3L スマンが、用事があるのでしばらく抜ける。 http://mao.5ch.net/test/read.cgi/linux/1520651677/73
74: login:Penguin [sage] 2018/03/15(木) 17:34:21.87 ID:LTp8xgxY >>72 判定結果をどうやってソースコードに反映させるのですか? あなたが今提案したようなことをautoconfがやっているということは 目をつむっておきますが。 http://mao.5ch.net/test/read.cgi/linux/1520651677/74
75: login:Penguin [sage] 2018/03/15(木) 17:36:26.04 ID:LTp8xgxY というか既存のビルドシステムや共通ライブラリの実装に精通してないどころか Cでまともにプログラム書いた経験があるように見えないのですがね。 http://mao.5ch.net/test/read.cgi/linux/1520651677/75
76: login:Penguin [sage] 2018/03/15(木) 17:37:50.07 ID:lnWZyj3L いや、実際に上司などからも、滅多にいない最高レベルのプログラマだと評されていたの でそれはない。 http://mao.5ch.net/test/read.cgi/linux/1520651677/76
77: login:Penguin [sage] 2018/03/15(木) 17:38:50.81 ID:lnWZyj3L さらにいえば、昔から神童だと言われてきた。 http://mao.5ch.net/test/read.cgi/linux/1520651677/77
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 742 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s