C言語なら俺に聞け 146
■ このスレッドは過去ログ倉庫に格納されています
>>123
CXって何?もしかしてC++/CXのこと? >>133
とりあえずお前は何がオススメだと思っているの?
まずそれを聞こうか。 >>134
>>49の前提条件が分からないとオススメしようがないな
プログラミング未経験ならそもそもGUIの勉強の前にやることあるだろうと思うし
C言語を勉強してその延長上でかつWindowsならWin32APIでもいいだろうし >>132
とりあえずは同意だが、俺はCではGUIは学べないと思ってるんだよ。
Linusは「Cでもオブジェクト指向は出来る」と言うだろ。確かにこれも事実だが、
これは「既にオブジェクト指向を完全に理解しているから、文法サポート無しでも出来る」のであって、
「何も分かってない奴がいきなりCで出来る」ようにはならないと思うんだよ。
GUIもそうで、今現在最先端なのはJavaScript/HTML/CSSだと俺は思っているから、俺はそれを勧めてる。
それで正しいGUIが出来るようになれば、あとは昔のCのゴミみたいなGUIフレームワークでも何とかなるだろうさ。
しかしGUIのイロハも分かっていない奴に昔の=今から考えたら間違ったフレームワークでは、
間違った方向にしか進めないと思ってる。
これは逆説的だがJavaScripterがOOPを全く理解出来ていないことからも言える。
JavaScriptは全般的にOOPではないので、抽象クラスでコードを一本化ってのが割と出来ない。
PHPはもっと悲惨で、言語内に色々矛盾があるから普通にコードを書いていても躓く。
あれでは上達しないのも分かる。当然OOP(継承)の利点も理解出来ないし。
OOPと同様にGUIでド定番なのはMVCだが、逆にこれをお前らは理解してないだろ。
これも当然で、MVCなんて昔はなかったから、当然昔のGUIフレームワークは『文法的には』サポートしてない。
勿論それでもやれば出来るのだが、それは知っているからであって、知らないようでは組みようがない。
だからとりあえず今最新の物を使っておけ、というオススメになる。
少なくとも、今現在正しいとされている構成にしやすい物になってるから。 >>135
それ、普通は「逃げた」と言われるぞ。
まあいい、それでお前は今何を使っているんだ?まさかWin32APIとでも? 「逃げた」は>>134でしょ?
自分が今使ってるのはWindowsFormsを簡単なツール作成に使うくらいかな
メインはゲームなんでUIは自前 >>138
じゃあ何でFormsを勧めない?
そしてMSが何故Formsを捨てたのか理解してるか? >>138
あとついでだから聞いといてやる。
俺がCXについて「逃げた」として、お前はどう突っ込むつもりなんだ?
その話はどうあがいても本筋には繋がらないと思うが、やってみろ。 煽られても誤魔化すその姿勢は素晴らしいと思います
>>139
>>135
> >>49の前提条件が分からないとオススメしようがないな プラットフォームはWindowsって事で良いのかな?
あんまり話広げても困ると思うが もういい加減Cから離れた話になってるから、さっさと終わらせてくれ >>141
お前みたいなクソガキではないからな。
お前がWin32APIを『今』使っていてそれを勧めるのなら、それもありだろう。しかし、そうではない。
お前は今Formsを使っている。なら、それを勧めるのならそれもありだが、それもしない。
おかしいと思わないか?
Formsを使っているうちはFormsの問題に気づけない。
丁度、Cを使っている奴がCで何も問題を感じないのと同じだ。そんなもんだと思っている。
だから古いフレームワークをずっと使い続けている奴が古いのを勧めるのはあり得るし、不思議ではない。
しかし、お前はそうではない。
そりゃ単なる荒らし行為だよ。或いは構ってちゃんか? スレタイも読まずに中身のない長文書くアホが早く居なくならないかなぁ... ログ読み返して見たら最強とかオススメとか最新とかは言ってるけど
使ってるとは書いてないのな、ちょっと尊敬するわ
>>144
現行で使えるしな、条件次第では別に勧められても不思議じゃないだろ
勉強なら別に今使ってなきゃオススメ出来ないってこともないと思うし
GUI関係ないけどプログラミングの勉強にCASLとかオススメだぞ >>146
仮に俺が「使っている」と書いていたとして、どう突っ込むつもりだったんだ?
聞いておいてやる。
> GUI関係ないけどプログラミングの勉強にCASLとかオススメだぞ
ねえよ。 >>145
長文だけならまだしもその内容が間違っていたり古かったりと目も当てられん状態だしね
こういう人ってやっぱ実社会でも煙たがられてるんだろうね c言語というかwindowsAPIとかのがGUI学ぶならいいと思うが
大抵肝の部分隠蔽されてるし
cでGUI書くのがめんどくさいってなら同意できるけど ネットでは人を小馬鹿にした発言ばかりする
リアルでは小心者なやつがいるね > ネットでは人を小馬鹿にした発言ばかりする
> リアルでは小心者なやつがいるね
>>152 みたいな奴のことだな いつも小馬鹿にされてる>>152可哀想と思ったがそいつに小馬鹿にされとる>>153がおったw >>136
>GUIもそうで、今現在最先端なのはJavaScript/HTML/CSSだ
その大部分はテキスト処理ではないか?HTMLもテキストベースの処理のためなのではないか?
GUI の要素からはかけ離れている気がする
たとえば GUI ならば新しいウィンドウを起こし、新しいツリービューを起こし、任意のタイミングで音を出し、
映像をコントロールする(あらかじめ内容の決まったものを垂れ流すのではない)
HTML/CSS/Javascript って、そんなことができるのか?
smalltalk とかだったらまだ意見として分かる、でも HTML とかが GUI のもっとも成功したものだとは思わない
そもそも HTML/CSS/Javascript と GUI とを結びつけるのがへんだと思う
対案:そうだな、いまだったら Java で GUI をやるのがわかりやすいのではないか?まあ、現状廃れているのではあるが HTML5/JavaScript の実装例としてはGoogleマップが有名
マウスでブラウザの表示をグリグリ動かすのは今や当たり前 jQueryとかWordPressなどのウェブ技術は、DHTMLでGUIをバリバリ実現してるよ。 >>153のすぐ後に>>154があるのに>>152はどうやって小馬鹿にしたんだろう?
論理的思考能力のない奴はこれだから... w >>155
おじいちゃんの脳内はHTML5登場前の知識で止まってるんだな >>159
HTML5 で新しいウィンドウを発生させることができますか? >>155
お前がそんなに馬鹿なのにコテなのが本当に意味不明。
お前が嫌われているのも当然だよ。
> たとえば GUI ならば(以下略)
出来ないと思っているのなら、WebページなりVSCodeなり見て考え直せ。
> そもそも HTML/CSS/Javascript と GUI とを結びつけるのがへんだと思う
それはお前のGUIの定義が間違っているからだ。
前にも言ったがお前は抽象思考が出来てない。だから三流のままなんだよ。
Webページ自体がGUIなんだよ。お前はこれを理解出来ていない。
あからさまな「ボタン」である必要はなく、クリックに反応するのならそれは「ボタン」なんだよ。
或いは、Webページと同様にマウスに反応する画面を他GUIで作ってみることを考えろ。
明らかに死ねるだろ。
> Java で GUI
JavaのGUIなんてC以上に使われていないゴミだ。
ミスリードどころではないぞ、マジで死ね。
> でも HTML とかが GUI のもっとも成功したものだとは思わない
今のところHTMLがGUIの最も成功したものだよ。
・現状のGUIは、Webで済む場合はすべてWebが使われている。
・他GUIはWebを周回遅れで追っている。
GTK確認したが、GTK2はForms相当のゴミ、GTK3はWPF相当のゴミだった。
CXでご不満ならUWPか?と仮定しそちらも確認したが、
UWPで採用された「async/await」「セキュリティ」については、
最初からJavaScriptはそのアーキテクチャだった。結果的に、さらにWebに寄って来てる。
ただ、UWP/WinJSについてはElectron相当のポテンシャルはあるのかもしれん。
採用事例がほぼ無いらしいが。
あと、GTK3のバージョニングがおかしいから、GTK4がもうすぐ出てくるのかもしれん。
「HTMLパーサ」「CSS」が出てくればまだ戦える可能性は残る。 >>160
できるよ
jQuery UI使うのが簡単かな >>161
>Webページ自体がGUIなんだよ。お前はこれを理解出来ていない。
ブラウザの手のひらの上で踊るのが GUI なんですか?
>JavaのGUIなんてC以上に使われていないゴミだ。
そのとおりだと思いますが、では、どうしてゴミになってしまったのでしょう?Java-GUI のどこがまずかったのでしょうか? >>165
> ブラウザの手のひらの上で踊るのが GUI なんですか?
そういう問題じゃねえ。つか、理解出来て無いのお前だけだぞ。
> Java-GUI のどこがまずかったのでしょうか?
全部だろ。
元々Javaは現在のWebが担っている所を負担出来るポテンシャルはあった。
統一バイナリの対象はUWPよりも広く、Linuxまで含まれていたし、
つい先日までブラウザにはJavaの動作環境は同梱状態だった。
最初期には、今は当たり前のようにWebで行われる事も
Javaアプリ(2chで言う専ブラ相当品)の配布で対応されていたこともあったはず。
んで、今この状態だろ。Cより死んでいるのは全部駄目駄目だったからだよ。
GTKはGnomeとFireFoxが適用事例らしい。(どうもドイツ人はGTKが大好きのようだ)
Javaなんてマジで誰も使ってないだろ。(Eclipseがそうなのかもしれんが)
それは誰も使う価値があると認めないからだよ。
とはいえ、Java自体は最も成功したプログラミング言語なのも事実なんだが。 >>166
>>ブラウザの手のひらの上で踊るのが GUI なんですか?
>そういう問題じゃねえ。
ふふ、まあおっしゃりたいことは分かるのですが、私は仮想的な存在はデフォルトで否定的にみるものでして
>とはいえ、Java自体は最も成功したプログラミング言語なのも事実なんだが。
私は、Java の現状の状況を Java に内在した原因として捉えたいと考えています。
Java のまずい状況は Java 自体に原因があるはず
さて、それはなんでしょうか?
Java アプレットもあれほどだったのに、現在ではほとんどのブラウザに採用されなくされてしまった
なぜなのでしょうか? >>167
つか、お前が書けよ。
俺は何でそうなったかは知ってる。
それは政治的でもあり、技術的でもある。
が、馬鹿が煽ってくるスレでは情報はやらないことに決めてるんだよ。
だから敢えて書いてない。(自学用の鍵を与えるに留め、外して書いている)
ただし、馬鹿が馬鹿なりに考えて自学するのは手伝ってやるから、
お前が勝手に書け。それが俺の認識と合ってるかどうかくらいは答えるよ。
それで俺の認識が間違ってるのなら勿論叩いてくれていい。
ここはそういう場所だし、その為の場所でもあるし。
ただお前の問題はそこじゃない。
君は詳細を詰めるのではなく、抽象思考の癖を付けた方がいい。
今時詳細はググレば分かることが多いんだよ。ただの知識でしかない。
Javaアプレットが死んだ理由なんてすぐ出てくるだろ。
そんなことよりも、WebがGUIだと直感的に思えないことの方がものすごく問題だ。 布石打ってまで逃げるくらいなら書かなきゃいいのに
QZからも逃げるとか徹底してんな、それとも今ググってるのか?w >>168
>馬鹿が馬鹿なりに考えて自学するのは手伝ってやる
嬉しい!じゃ、お言葉に甘えて
私は Java 仮想マシンの存在自体がまずいと考えています。
Java はネイティブコンパイルできているべきだった、現在は LLVM コンパイラ環境もあることだし
仮想マシンの意義は当初から疑問に考えていたことでした
逆に Java のライブラリ体制は強く推しているつもり、これは C/C++ にはないリソース(=多数の人間で共有されうる共同幻想)だと思います
GUI も、同様に共同幻想として許容できるか、という視点で考えています
Java のそれや Win32API がそうだとはとても思えませんが、さりとて現時点でのベストはわからない
web 系を意識しだしたのは最近なのでこれについては意見はありません、手元で redmine を導入したときは gem が便利だったし、
rust も同様のパッケージ管理機構を持っているのは好感をもっています >>167
> Java のまずい状況は Java 自体に原因があるはず
ちなみに、俺は今Javaが不味いとは思ってないぞ。
GUIは死んだが、それは些細なことだ。
ここら辺が根本的に違うかもしれん。
俺は一つの言語で全てが出来るべきだとは思ってない。
むしろそれを目指しているのはC++だが、迷走しつつあるだろ。 さあ、適切なスレに引っ越すか、黙るか、自分の振る舞いを見直そうか。 >>170
> 私は Java 仮想マシンの存在自体がまずいと考えています。
それは後付だ。
当時は各マシン毎に別々にバイナリを用意するのは大変な手間だったし、
実現すれば確かに素晴らしかったんだよ。
で、実際、ある程度実現はしたわけだが、
今現在「マルチプラットフォーム」に関しては完全にWebに取って代わられた。
だからJavaが現在これを宣伝文句に使うことはなくなったが、あって悪いものでもない。
ただ、本質的にはそこは問題ではないんだよ。
エコシステムにとっては、「上質なコードが相当量有る」ことが重要なのであって、
Javaは完全にこれを満たしている。
ネイティブでLLVMを生かしたいのなら、
技術的には、Javaソースコードをネイティブコンパイルするコンパイラを作ればいいだけ。
仕様としてはほぼC++のサブセットなんだから、技術的にはすぐ出来る。
当然GC機構はバイナリに同梱だ。
これだけで、ソースコードを1文字も改変することなく動く。
だから、言語としては「上質なソースコード」が財産なんだよ。
動作環境なんてすぐ変えられる。
現在これが出来ないのは、オラクルが許さないからでしかない。
だから、所有者が変われば変わる可能性もあるだろうさ。
ただ、実験的にはgoogleとかで試されていてもおかしくないし、
音沙汰無しなのは脈無しだとも思うが。
主にJavaについて話したいのなら、Javaスレに移動でこちらは構わない。
その場合はリンクしてくれ。 小学校でプログラミング必修と聞いてBASICやるのかと思ったら
GUI版タートルグラフィックを想定かよ。 後世のために、デジタルテレビにJavaが使われていることを覚えておいてくれ。 Javaと言えば今年の秋にリリース予定のJava11から無償のJDKが廃止されるのがどう影響するかだな
下手すれば一気にシェアを落とすことも考えられる >>176
> Java11
なんだそりゃ?と思って調べてみたら、なるほど酷いことになっている。
171,173は技術面での話で、政治的にはかなり深刻だなこれは。 言うほどひどい変更か?
RHEEとCentOSと同じだろ >>178
Windowsの場合はこことか読めばわかるんじゃないかな。
http://blog.fieldnotes.jp/entry/install-openjdk-on-windows
https://qiita.com/ykubota/items/582caa8621a5fc86d0a1
Linux の場合は何も考えなくても最初から入ってるディストリビューション結構あるのではないか?
少なくとも RHEL, CentOS, Ubuntu のような主要なディストリビューションにはある。
なくても yum や apt で追加可能。 しかし Windows のコマンドプロンプトから curl や tar が使えるようになっていたのは知らなかった。
これは良いな。一々余計なアーカイブソフトを後から入れなくても済む。 > 「上質なコードが相当量有る」ことが重要
フォートラン圧勝 printfでなにか文字表示させた場合と何もしない場合で結果が変わることってありますか? とりあえず、値を取得する系の関数では副作用を起こすような記述はやめような
例えばグローバル変数をいじるとかポインタをいじるとか標準入力・標準出力・ファイル操作するとかはやめろよな
int getValue(int x, int y) {
…
return ○○;
}
こういう関数で printf とかするのは論外
あっ、ちなみに setter でも値の設定だけを行い、標準入力・標準出力・ファイル操作などはするなよ
void setValue(struct MyClass *obj, int x, int y) {
obj->r = x * x + y * y;
obj->theta = atan2(y, x);
}
みたいな感じで とりあえずsetter/getterはクソだな
オブジェクト界最大の汚点だ プログラム言語がサポートしていればそれ程酷いことにはならない
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0) バッチなのですがスペースの問題にぶち当たってます
素敵仕様って言うんですかね?
フルパスから拡張子を抜いたファイル名を取得したいんですが
%^n1でファイル名を取得しているんですが
ファイル名に全角スペースが入っているため完全なファイル名が取得できなく困っています
""で囲っても取得できないです 全角スペースと半角スペースが混ざっていると取得できるのですがなにかいい方法ありますか?
"D&Dで渡したファイルのパスが欲しい"に拘らなければ、テキストファイルにパスリストを書いて読み込むみたいな外部ファイルを使う方法にするとか
Powershellみたいに.Net Framwork呼ぶとか
もしくはファイル名取得用のコンパイルファイルをかますとか
Google先生以上の回答は出ないでしょうか? void func(char *const restrict ary)
{
printf("%s\n",ary);
*(ary + 1) = '\0';
printf("%s\n",ary);
}
int main( int argc, char *argv[] )
{
char ary[] = "hoge";
func(ary);
return 0;
} このコードで配列の中身が書き換えられてしまうんですけどなぜですか?
constとrestrictの関係性がいまいちよくわかってないです・・・ スマホでポチポチ入力してたら既に書かれてるけど
>>198-199
とりあえずrestrictは無視するとして
>char *const ary
aryが定数。ary=0はコンパイルエラー。*ary=0はOK
>const char* aryまたは char const* ary
aryの参照先が定数。ary=0はOK、*ary=0はエラー >>198>>199
func() の中の *(any + 1) = '\0' がコンパイルエラーにならない理由は const が any に対するものであって
*any に対するものではないから。そのプログラムの場合 any そのものを変化させる any = NULL や any++
みたいな記述があるとエラーになる。
restrict はコンパイラの最適化に対するヒントで、そのポインタが別のポインタによって指されていないことを
前提とした最適化をして良いことをコンパイラに伝えるためのものだ。伝えられた側のコンパイラはそのような
最適化をやってもいいしやらなくても良い。 >>201
>スマホでポチポチ入力してたら既に書かれてるけど
どうして、書いている時点でそれがわかるのですか?高性能な専用ブラウザなんでしょうか >>198-199
俺C言語詳しくない素人だけど、
ポインタに const 修飾子をつけるとき、
修飾子の位置によって定数化されるのが「ポインタ」か「ポインタの指す値」かが異なる。
char *const ary の場合はポインタ(アドレス)を書き換え不可。
++ary; は不可
*ary = 'A'; はOK
const char *ary の場合は値(文字列)を書き換え不可。
++ary; はOK
*ary = 'A'; は不可
restrict 修飾子は初めて見たけど、ググった限りは最適化に使うもので、
プログラムの意味は変わらないので無視してよかろう。 >>204
俺なんかゆっくり書いてる間に回答が3つも… ポインタも値もどっちも書き換え不可にするには
const 型* const 変数名;
としないといけなそうだな。 型 const * const 変数名; でも良い。 *const 変数名
って書くより
変数名[ ]
って書く方が好き モノクロA4レーザープリンタが、値段も含めていい感じになっていますね… >>205
>>206
でも一番わかりやすい!
まぁ、よく見る
const char **
の大半は意図した通りに機能してないよな
誰も中み書き換えないから表面化しないけど。。。 >>213
const 修飾子を型指定より前にもってくる書き方は正直いってなじめないですよね 関係ないけれども、今日から「民法」を勉強しはじめました、民法20条まで進みました
こういうのも新鮮でおもしろいなあ、と思いました 民法総則からキチンと基本原理を体型立ててやらないと理解できんぞ >>215
民法94条に到達して手が止まりました
これは難しい…条文は簡潔ですが判例が複雑怪奇でパターン抽出できないでいます
>>216
直に法文文面や判例にアタックしていますが弾き返されていますね…特に判例は裁判官の個性が見える気がします、当初考えていたほど「画一的」ではなかったのです >>219
さあ、適切なスレに移動してそこで10年くらい引きこもっていようか。 配列の中身を一つずつ見て0じゃなかったら0にするみたいなプログラムがあります。
中身を見て代入するか分岐するのと、
投機的に0を代入する方法のどちらが速いのでしょうか >>221
もちろん見ないほうが早い。
memsetで一気に0にするのが最速。
気になるなら測定しましょう。測定しない効率化なんてありえないよ。
それと、こいつを壁に飾っとくべし。
「プログラム最適化の第一法則:最適化するな」 最適化されたらどう書いても memset 使ったのと同じになるかも知れないけどな なんで開発要件も聞かないうちから見ないほうが速いに決まってるって言いきれるの?
0以外が入ってる可能性が低くて、書くより読むのが圧倒的に速いハードだったら責任取れんのかよ! そんな特殊な環境なら最初からそう書いてくれない限りまともな回答はなくて当然 DRAMは読み書き同じ速度だけど
MRAMとかは書くのが遅いんで
チェックして書くのを最低限にするのが常識になる時代が来るかも >>227
>>224
> 気になるなら測定しましょう。測定しない効率化なんてありえないよ。
> それと、こいつを壁に飾っとくべし。
> 「プログラム最適化の第一法則:最適化するな」 >>227
これおれも思った
圧倒的じゃなくても0率がたかくて書くのが遅ければそう
組み込みならメモリマップでメモリ以外のデバイスがつながってるかも知れないし
あとはコードがそうなってる可能性としては
0じゃない個数を数えるコードを入れやすいようにとか
SFRで書く命令が決まってるとか
キャッシュの関係でなるべく書きたくないとか
C言語スレだからな
組み込みの可能性も当然考えなければ
あと、
条件が整えばmemcpyより速いコードは作れる
アラインメントが事前にわかってるとか
SIMD命令が使える事がわかっているとか
DMAが有効とか 経験の無さ自慢?
特殊なコードに対して特殊な状況を考えられないアホ自慢? ■ このスレッドは過去ログ倉庫に格納されています