トップページ⇒tech
1001コメント303KB

プログラミング雑談スレ++

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/11/14(木) 18:55:43.66
プログラミングに関する雑談スレッドです。

■前スレ
プログラミング雑談スレ
http://toro.2ch.net/test/read.cgi/tech/1363792124/
0232デフォルトの名無しさん2013/11/18(月) 10:04:51.63
>>230
それで、このマージソートのリソースはどれぐらい使うの
0233デフォルトの名無しさん2013/11/18(月) 10:39:55.42
>>230
そのやり方はすげー遅い
0234デフォルトの名無しさん2013/11/18(月) 14:38:08.98
つうかデータの性質や比較関数の性質、それを事前に分かるか等で
どれが最適かは変わるんだから議論しても仕方ないよ
まあ自分はインサートを推しとくが
0235デフォルトの名無しさん2013/11/18(月) 14:56:01.61
>>193
今日の低脳君はこれだ
0236デフォルトの名無しさん2013/11/18(月) 18:49:08.20
>>231
C++/CLIというキメラ言語を生業にしているとVisualStudio2008までしか使えないんだわ
それ以降のVSはC++/CLIのインテリジェンスは対応してないっていうクソっぷり
んで2008は{から}へジャンプ機能が多分ない。もちろん強調表示もない
0237デフォルトの名無しさん2013/11/18(月) 18:54:35.12
>>236
かわいそう
0238デフォルトの名無しさん2013/11/18(月) 18:59:33.21
最近のVSはついに人工知能積んだのか
0239デフォルトの名無しさん2013/11/18(月) 19:41:47.65
インテリジェンスワロタ

C++/CLIに対応しないVS2010以降がクソなのか、
VS2010以降に匙を投げられるC++/CLIがクソなのか…
0240デフォルトの名無しさん2013/11/18(月) 19:47:48.07
C++/CLI自体がもう未来を感じない言語だわ
C#やればよかったー
0241デフォルトの名無しさん2013/11/18(月) 19:50:32.98
C#糞と思ってるJava使い俺以外に居る?
0242デフォルトの名無しさん2013/11/18(月) 19:52:24.49
C#やってないけど、きっとスマートでスタイリッシュな言語なんだろうなーって勝手に期待してるJava使いはいる
0243デフォルトの名無しさん2013/11/18(月) 20:02:21.39
ヘルたんlove
0244デフォルトの名無しさん2013/11/18(月) 20:12:38.58
C#使うためにJava本読んでます
0245デフォルトの名無しさん2013/11/18(月) 21:49:17.32
>>244
意味が分かりまへん
手続き型言語やってきて初めてオブジェクト思考やるから参考にとか?
0246デフォルトの名無しさん2013/11/18(月) 22:10:07.69
JavaよりはC#の方がいい
ただC#マンセーしてる奴はレベルが低いのが多い
0247デフォルトの名無しさん2013/11/18(月) 22:13:12.11
>>246
> JavaよりはC#の方がいい

どういう点で? 興味本位で聞いてるだけだが。
0248デフォルトの名無しさん2013/11/18(月) 22:15:10.35
>>245
まさにそれ
0249デフォルトの名無しさん2013/11/18(月) 22:31:15.85
>>247
コンテナにプリミティブ型格納するにはラッパークラス使ってください
関数を引数で渡すときはリスナークラス使ってください
0250デフォルトの名無しさん2013/11/19(火) 07:56:39.67
C#も機能がゴテゴテしてきた印象はあるけどさ、
総称、atomic、劣化using、lambda、etc. と、
導入が数年から10年遅れる上に、個々もクソ機能に変更する言語ですよ?
C#と比較して褒めるとか無茶ですわ。
JVMだけならまだしも。
0251デフォルトの名無しさん2013/11/19(火) 11:57:23.36
>>245
意味が分かりまへん
Java や C# が手続き型言語じゃないと?
0252デフォルトの名無しさん2013/11/19(火) 12:04:00.37
それは意味が解らないのではなく
相手の意図を理解した上で、揚げ足を取っているだけでは無かろうか
0253デフォルトの名無しさん2013/11/19(火) 18:02:00.61
JavaやC#は絶対クラスが必要だから手続き型ではない
もちろん手続き型のような書き方はできるけど
0254デフォルトの名無しさん2013/11/19(火) 18:27:34.65
そう考えるとC++やDって
まさにマルチバラダイムな言語なんだな
0255デフォルトの名無しさん2013/11/19(火) 19:02:38.69
C#が手続き型言語ってのは無理があるだろww
C#「やるため」にJava勉強してるって言ってるだろ
0256デフォルトの名無しさん2013/11/19(火) 20:16:13.37
手続型って関数型に対する用語で、
OOPLとの対義語としてつかうのは間違っとるようにわしは思う
0257デフォルトの名無しさん2013/11/19(火) 20:25:41.93
新しい技術が出てきた際に、古い技術に名前をつける必要が出てくる
そういった場合得てして漠然とした名前がついちゃうんだよ
スマホが出てきてケータイがフィーチャーフォンになったみたいな。
手続き型言語ってのもそんな感じなんじゃないの?
0258デフォルトの名無しさん2013/11/19(火) 20:33:10.16
いや、関数と手続きってい小さな対比は昔からあったんでは?
pascalにおいてはそのままfunctionとprocedureがあったように。


…これひょっとしてそういう話じゃなかた?w
0259デフォルトの名無しさん2013/11/19(火) 20:36:19.34
>>255
OOPLのループ
a := 1 to: 100.
a do:
[ :each |
 Transcript
  show: each asString;
  cr.
].

C#やCやjavaのループ
for( int i = 0; 100 > i ; ++i )
{
 System::Console->WriteLine(
"{0}", i );
}
0260デフォルトの名無しさん2013/11/19(火) 20:46:21.47
>>259
上の例は何て言う言語?
0261デフォルトの名無しさん2013/11/19(火) 20:46:48.93
>>258
小さくねえよ
純粋に近い関数型は引数の評価順序が不定で、
引数でしか処理を書けないから手続型の様に、
処理を手続的に書けない。
逆に引数の評価順序が保証されないという特性のお陰で、
並列処理につよいがな。
0262デフォルトの名無しさん2013/11/19(火) 20:51:30.42
>>260
ブレインファックじゃね?
0263デフォルトの名無しさん2013/11/19(火) 20:52:10.83
教えてあげないよっじゃん!
0264デフォルトの名無しさん2013/11/19(火) 20:53:25.74
CとC#とJavaをひとくくりにしている時点で悪意を感じる
そして例示はC++マネージ拡張系とかか?
0265デフォルトの名無しさん2013/11/19(火) 20:55:16.50
もっと冗長に書きなおしてみるか

| a b |
a := 1 to: 100.
b :=
[ :each |
 Transcript
  show: each asString;
  cr.
].

a do: b.
0266デフォルトの名無しさん2013/11/19(火) 20:56:48.33
>>259が>>255に何をいいたいのかさっぱり分からんw
そのループの例が何を示してるのか…。
0267デフォルトの名無しさん2013/11/19(火) 21:00:03.82
>>266
何も意味のあることは言ってないと思うよ
彼の脳内のループバック通信がここに漏れ出ただけ
0268デフォルトの名無しさん2013/11/19(火) 21:07:43.94
脳内ループバック通信www
0269デフォルトの名無しさん2013/11/19(火) 22:02:08.93
public java.collection.List<java.lang.Integer> filledList( int begin, int end )
{
 java.collection.List<java.lang.Integer>
  filled = new java.collection.Vector<java.lang.Integer>();
 for( int i = begin; i < end; ++i ) filled.add( new java.lang.Integer( i ) );
 return result;
}
public java.collection.List<java.lang.Integer> filledList( java.collection.Collection<java.lang.Integer> values )
{
 result new java.collection.ArrayList<java.lang.Integer>( values );
}
java.collection.List<java.lang.Integer>
 list0 = this.filledList( 1, 3 ),
 list1 = this.filledList( new java.lang.Integer[]
 {
  new java.lang.Integer( 1 ),
  new java.lang.Integer( 2 ),
  new java.lang.Integer( 3 )
 } );
java.lang.System.println( java.lang.String.valueOf( list1.equals( list2 ) ) );
-------------------------------------------------------
| filledList list0 list1 |
filledList :=
[ :aCollection |
 OrderedCollection from: aCollection.
].
list0 := filledList value: ( 1 to: 3 ).
list1 := filledList value: #( 1 2 3 ).
Transcript
 show: ( list0 includeAll: list1 ) asString;
 cr.
0270デフォルトの名無しさん2013/11/19(火) 22:07:08.21
>>269
そこまでかたくなにimportしない理由はなんなんだ
0271デフォルトの名無しさん2013/11/19(火) 22:12:30.52
List型とArrayList型とVector型とCollection型とString型とInteger型と
System型は既にユーザー定義しててimportできないからに決まってるだろ。
0272デフォルトの名無しさん2013/11/19(火) 22:19:32.26
>>271
どんだけ基本クラス拡張したいんだよwww
0273デフォルトの名無しさん2013/11/19(火) 22:22:22.69
public java.collection.List<java.lang.Integer> filledList( int begin, int end )
{
 java.collection.List<java.lang.Integer>
  filled = new java.collection.Vector<java.lang.Integer>();
 for( int i = begin; i < end; ++i ) filled.add( new java.lang.Integer( i ) );
 return filled;
}
public java.collection.List<java.lang.Integer> filledList( java.collection.Collection<java.lang.Integer> values )
{
 result new java.collection.ArrayList<java.lang.Integer>( values );
}
java.collection.List<java.lang.Integer>
 list0 = this.filledList( 1, 3 ),
 list1 = this.filledList( new java.lang.Integer[]
 {
  new java.lang.Integer( 1 ),
  new java.lang.Integer( 2 ),
  new java.lang.Integer( 3 )
 } );
java.lang.System.println( java.lang.String.valueOf( list0.equals( list1 ) ) );
-------------------------------------------------------
| filledList list0 list1 |
filledList :=
[ :aCollection |
 OrderedCollection from: aCollection.
].
list0 := filledList value: ( 1 to: 3 ).
list1 := filledList value: #( 1 2 3 ).
Transcript
 show: ( list0 includeAll: list1 ) asString;
 cr.
0274デフォルトの名無しさん2013/11/19(火) 22:28:33.77
ね、Javaって糞言語でしょ。
0275デフォルトの名無しさん2013/11/19(火) 22:30:48.04
C++やC#,Goみたいに名前空間に別名付けられれば苦労しないのにね。
0276デフォルトの名無しさん2013/11/19(火) 22:31:26.57
全角スペース混入によるエラー探しに時間がかかる
腹たって全角スペース・半角スペース・タブをエディタ設定で見やすくするようにしたら
それだらけでさらに腹たつ
0277デフォルトの名無しさん2013/11/19(火) 22:41:07.30
sedしろよカス
0278デフォルトの名無しさん2013/11/19(火) 22:46:22.69
そんな腹立つ言語使わなきゃいいのに
0279デフォルトの名無しさん2013/11/19(火) 22:56:22.70
全角スペースでもコンパイルエラーにならない言語は快適です
0280デフォルトの名無しさん2013/11/19(火) 22:58:05.11
コボラーになって銀行系システムの保守だけで食っていきたい
0281デフォルトの名無しさん2013/11/19(火) 23:00:04.21
新しい環境で新規ならなんでもいいよ
レガシコードの移植はもいいやだやめたcomなんか死んじゃえ
0282デフォルトの名無しさん2013/11/19(火) 23:01:09.02
comはしぶとく残り続けるよ
0283デフォルトの名無しさん2013/11/20(水) 01:57:40.34
手続き型と並べて比べるのは宣言型。
関数型は宣言型の一部。
0284デフォルトの名無しさん2013/11/20(水) 02:06:34.77
WikiいわくC++は手続き型言語なのな
クラス作れるのがオブジェクト型言語だと思ってたら、どうも違うらしいね
0285デフォルトの名無しさん2013/11/20(水) 03:20:25.73
クラス作れなくてもオブジェクト指向なのはあるぞ
プロトタイプベースとか言うだろう?
0286デフォルトの名無しさん2013/11/20(水) 06:26:07.86
Smalltalkも手続型ですしお寿司
0287デフォルトの名無しさん2013/11/20(水) 09:03:35.63
オブジェクト指向と手続き型/宣言型は直行性のある概念。
0288デフォルトの名無しさん2013/11/20(水) 11:42:47.37
それは詭弁
手続き型オブジェクト指向なんて言い方はしない
狭義がデフォ
0289デフォルトの名無しさん2013/11/20(水) 13:19:33.52
>>284
選べる手を一つ増やしたというだけ
オブジェクト指向に閉じ込められたわけじゃない
0290デフォルトの名無しさん2013/11/20(水) 14:10:58.80
>>289
誰もそんな話をしてない
0291デフォルトの名無しさん2013/11/20(水) 14:35:48.91
関数型オブジェクト指向言語
OCaml
0292デフォルトの名無しさん2013/11/20(水) 15:01:37.81
メソッドチェーンソー
0293デフォルトの名無しさん2013/11/20(水) 15:54:13.33
アスペクト指向「出番マダー?」
0294デフォルトの名無しさん2013/11/20(水) 16:30:36.40
>>293
フレームワーク用の指向であってプログラミング言語にそんな指向を入れる余地はないと思う。
0295デフォルトの名無しさん2013/11/20(水) 17:06:44.59
frameworkってなに?
0296デフォルトの名無しさん2013/11/20(水) 17:26:58.33
>>293
AOPは使いどころが限られてるからな
0297デフォルトの名無しさん2013/11/20(水) 17:30:04.00
そういやAOPのスレって無いんだな…
0298デフォルトの名無しさん2013/11/20(水) 18:49:57.31
マルチパラダイム、でいいんじゃねーの。
関数型と手続き型だって、互いの関数呼び出しが不可能って訳じゃないだろ。
0299デフォルトの名無しさん2013/11/20(水) 20:05:55.91
C言語で書いた関数は呼び出せてもその逆が素直にできない事はいくらでもある。
0300デフォルトの名無しさん2013/11/20(水) 21:45:45.04
>>299
最悪、関数型のプログラムを手続き型の言語から起動して標準出力読めばよくね?
相互呼び出しのAPIが十分整っていないってのと、それが構造上不可能であるかってのは別の問題かと。
0301デフォルトの名無しさん2013/11/20(水) 22:46:53.26
xmlがあればなんでもできる
0302デフォルトの名無しさん2013/11/21(木) 07:51:22.56
>>298
言語のパラダイムの話だから ABI の話は関係ない。
0303デフォルトの名無しさん2013/11/23(土) 04:37:42.62
どっかの記事で読んだけど情報系の大学ではプログラム出来る奴と出来ない奴は
ハッキリ分かれててしかもそれは単純な学力とは違う問題だという話だけど本当?

数学バリバリ出来て結構良い大学行ってる理系の奴でも
何故かC言語の初歩の初歩(簡単な計算と入出力とか)で躓いて
なかなか覚えられない事があるらしい…

高等数学出来るくらいの論理力があればそんな初歩で躓くとかあり得ないような気がするけど…
0304デフォルトの名無しさん2013/11/23(土) 04:44:18.14
>>303
へえ
訓練メソッドしだいでなんとでも思う、というか教育体制の問題じゃない?
すずめの学校ぴーちくぱーちく、ではどうにもならないのがプログラミング

>>303 と同じく不思議に思うが、それが適性というものなのかもしれない‥
プログラミングを習得するために必要な思考手段/思考の作法はなにだろうか?
0305デフォルトの名無しさん2013/11/23(土) 04:51:58.57
>>304
まぁ確かに質問サイトとかでよく
「大学生ですがこの前PHPの入門書買って読んだんですが全然わかりません」
「どうやったらプログラムできるようになりますか?」
とか山ほど投稿ありますもんねぇ…

変な話これはただプログラミングが本当に好きかどうかという問題なんじゃないのかなとか思うけど…
ヘタクソでも情熱があれば少しは進歩するよね?
人間やりたくない事はなかなか覚えられないからなぁ。
0306デフォルトの名無しさん2013/11/23(土) 05:02:00.95
あ、そういえばこんな記事も読んだ事ある。
例えば

【問題】
int a = 10;
int b = 5;
a = a + b;
さてaは何になるでしょう?

という問題をプログラミングの知識が無い人間に見せて
時間をおいて何度もさせてみて間違いでも良いから
常に自分の中で一貫したモデルから答えを導ける人間は単位を落とさないとかなんとか…

でもこれも単に自分の中で幾つかのパターンの
モデルが構築出来てて A→X B→Y みたいな複数の論理的帰結が単純に分かったら良いだけだと思うんだけど。
結局数学が分かるくらいの論理力があれば問題ない気がするけどな。
0307デフォルトの名無しさん2013/11/23(土) 05:27:17.19
>>303
割と本当。そういう環境に居たけど、「適正ってあるんだなあ」って思ったよ

そういう奴でも、ステートメントを一行書けと言われたら書ける
変数が解らないとか、ポインタが解らないとかじゃないらしい(多分)

構造化出来ない(forとかwhileとか使わずに、同じステートメントをコピペで何度も書いちゃう)とか
関数が自作出来ない(全部main関数にだらだら書いて、後からメンテ出来なくなる)とか
俺の周囲だとそういうのが結構居た
0308デフォルトの名無しさん2013/11/23(土) 05:57:35.59
>>307
なんというかあれなのかね。
整理整頓能力みたいな。
本棚の整理が苦手な奴がダメみたいな。

自分で把握して改変しやすいコードを構築できる能力が無いと
全体の流れが分からなくなって混乱してしまうのかも。

結構プログラムも奥が深いよね。
ここは後々面倒になりそうだから効率よりも分かりやすさ重視でとか
ここは速度が要求されて中身が分かり辛くても機能さえ使えるようにしとけば
問題無いから最適化重視でとか

そういうケースバイケースで尚且つ全体の整理が出来ないと
保守管理しやすいプログラムって難しいもんね。
0309デフォルトの名無しさん2013/11/23(土) 06:10:17.13
能力ってのは脳力でもあるわけで
ある程度の努力で改善される事もあるだろうけど
でもやっぱし元々の資質もあるからねぇ…(脳に必要な機能が無ければどうしようもない場合もあるんじゃなかろうか…)
筋肉が付きやすい奴は何もやってなくても結構マッチョだったりするし。
プログラミング全然やった事ない奴でも直ぐにちょっとしたアプリ作ってたりするし。
0310デフォルトの名無しさん2013/11/23(土) 06:49:55.59
頭いい奴はスパゲティでも管理出来てしまうからコードがなかなか綺麗にならない
さん散らかしのデスクから直ぐに必要な書類が出せるやつみたいに綺麗である必要がないんだ
0311デフォルトの名無しさん2013/11/23(土) 06:50:20.86
アスペは2chに必要な適正七日
0312デフォルトの名無しさん2013/11/23(土) 06:50:49.80
ものごとの攻略法を見つけるが早い奴ってのはいるもんだ
0313デフォルトの名無しさん2013/11/23(土) 07:03:34.46
ある程度散らかってて、状態が奇妙でヘンテコな方が記憶しやすいんだ。
一般論として部屋の整理整頓が行き届いてるやつって記憶力悪いだろ。
0314デフォルトの名無しさん2013/11/23(土) 07:19:04.17
まぁ自分一人で開発してるなら
どんな汚いコードでも自身が把握出来て完成させる事が出来て
改変可能なら問題ないよね。

でも前の方で所謂プログラム出来ない奴の例で上がってるのは
自分自身でも把握困難になって結局破綻してしまうから問題なんだろうな。
この場合は努力して自分が管理し易い形に持って行く技術を磨く必要があるし
元々資質が無いなら無理な場合もあるだろうね。

要するに自分自身が把握可能な形に出来る能力があるかどうかが問題点で
自分自身が分かりやすい形に出来ており尚且つ一人だけの開発なら
他人が見てどんなにスパゲティコードでもこの場合はプログラミング能力があるという事になるんじゃないのかね。
0315デフォルトの名無しさん2013/11/23(土) 07:34:51.48
>>310
よく分からないのは
頭良い奴はスパゲティーの方が分かりやすいのか?
それとも結局頭良い奴でも整理整頓されたコードのが分かりやすいのか?
もし後者ならば、やっぱし自分がより分かりやすい形にコードを整える能力を養う方が後々も有利なので
総合的に頭が良い奴は結局、コードを整理する努力をするものじゃないのかな?

もちろん後者ならそういう努力は無駄だが、しかし
それならば、単純にそういう形のコードが(スパゲティーコードが)脳に記憶されやすいという
特異な脳構造を持っているだけであって頭が良いというのとは違うんじゃないのかという疑問が出るな。
0316デフォルトの名無しさん2013/11/23(土) 07:35:13.54
>>314
誰もが読めるコードが書けるけど
自分しか読まないからあえて効率優先できたないソースにしてる。ってんなら能力があるんだろうね
でもそんな奴はめったにいない
0317デフォルトの名無しさん2013/11/23(土) 07:54:13.58
スパゲッティーコードというのはgoto文であっちこっち飛んでこんがらがっているやつのことだぜ。
ブロック構造化されている最近の言語ではスパゲッティーコードというのは無い。
オブジェクト指向を間違った使いかたしてスパゲッティになっているのはスパゲッティというよりバカコード。
0318デフォルトの名無しさん2013/11/23(土) 08:03:03.84
イベントドリブンを使わずマルチスレッドでやろうとするのもゴチャゴチャしてるが
スパゲッティといえるのかわからないがこれはスパゲッティと言ってもいいかも。
イベントドリブンを使わずjsp上でイベント処理してるのも同様だ。
0319デフォルトの名無しさん2013/11/23(土) 08:07:29.91
あとHashtableをツリー構造にしてるのはアホコード
状態遷移表を使いたいのか知らんが全変数を配列の要素にしているのもアホコード
0320デフォルトの名無しさん2013/11/23(土) 08:19:39.74
あとifのネストが異様に多いのはド素人コード
0321デフォルトの名無しさん2013/11/23(土) 08:21:17.93
今までの話の中でのスパゲティーの定義は
単純に世の中の大多数が読み難いと思うコードって意味じゃない?
0322デフォルトの名無しさん2013/11/23(土) 08:21:33.71
多重ループのネストが異様に多いのは愚鈍コード
1つの関数やファイルが異様に大きいのは、糞コード
0323デフォルトの名無しさん2013/11/23(土) 08:22:10.01
>>313
判ります
道に迷うときってどの分岐入っても同じような景色が続いてるようなところで迷う
0324デフォルトの名無しさん2013/11/23(土) 08:23:56.23
ファイルが多くて読みにくいというのをスパゲティと言っている奴が多いと想像するが
それはエディタがヘボく多数のファイルを扱えない自己責任。
0325デフォルトの名無しさん2013/11/23(土) 08:27:36.22
>>322
KVSで使われるのはレコード
おやじの頭はバーコード
0326デフォルトの名無しさん2013/11/23(土) 08:37:41.67
>>319
>あとHashtableをツリー構造にしてるのはアホコード
くわしく
チェイン法でのリスト以外にもツリー構造をとることもあるのでは?
0327デフォルトの名無しさん2013/11/23(土) 08:51:19.75
hashtableは配列にすることに意味があるんだと言いたいんだろうな
もちろん衝突を考慮した場合はそこにリストやツリーが絡むけど
0328デフォルトの名無しさん2013/11/23(土) 10:20:34.03
ずぶずぶだからねぇ。
いろんなもんをイッパイ積み上げていく競技?趣味?
があるけどプログラミングってそれに近いものがある。

下から順に、カッチリ、かつ出っ張りのない単純な形でつくって、
またその上にそういうの作っていかないと、上まではとてもじゃないけど無理。
ましてや、下のほうからグラグラだったりフニャフニャだったり、
なんか別のもんとネッチャリと癒着してたりすると、
上まで作っていくまでに相当息苦しい思いをするし、
悪い部分を交換することも補強することも難しい。

ノイズとかリスクの増大を、抑えて抑えて行くのが大事。
0329デフォルトの名無しさん2013/11/23(土) 10:31:04.49
ハッシュコンテナとか自作する奴は素人。
プロは特に理由がない限りできるだけ標準のライブラリを使って車輪の再発明はしない。
無いならしょうがないけど。
0330デフォルトの名無しさん2013/11/23(土) 10:33:38.87
>>329
ちなみに聞くが、きみは中学生?高校生?
0331デフォルトの名無しさん2013/11/23(土) 10:48:21.32
いま小3だけど
■ このスレッドは過去ログ倉庫に格納されています