アルゴリズムが・・
■ このスレッドは過去ログ倉庫に格納されています
0001見習い
NGNG人にソースを見せると「ああ、こんなやり方もあるんだ・・」と苦笑まじりに言われます。
僕は頭の構造がおかしいのでしょうか?
プログラマに向いてないんでしょうか?
それとも、慣れてくれば普通のアルゴリズムが浮かぶようになるのでしょうか?
人にプログラム見せるのが恥ずかしいです。
(まだ研修中なので見せない訳にはいかない。)
技術ではなく、考え方は勉強して変わるものなんでしょうか??
0002>1
NGNG0003>1
NGNGわかりやすい単純なアルゴリズムのほうがいいです
0004>1
NGNGソースには、アルゴリズムの実現方法を書け。
言ってる意味判るかな?
0005>4
NGNG00061です
NGNGありがとうございます〜。
でも、そのうち言われそうな勢い(笑)
>3
それはわかってるんですけど、自分の思いついたのはわかりにくい・・・
そして、それ以外のやり方が思いつかない・・・
さらに人のを見て落ち込む・・・・
どうしたら良いんでしょうか・・・?
>4
??書き方が悪かったですか?
ソースにアルゴリズムを書いてるわけじゃなくて、プログラムの組み立て方がおかしい・・
のです。なんとか直す方法ないものでしょうか。。。
0007>1
NGNG自分で思いつくだけ立派なもんだと思うぞ。
算法なんてどうやったて動けば良いのだ。
可読性云々は同じ算法なのに余分な事をしてるケースが多いから
後ほど見直せば良い。
一応、算法を実現するには言語を使うので、子供が言葉を覚える
のと同じように他人のマネから始める。普通は。
恐らく片言を覚えて滅茶苦茶な言葉の羅列って雰囲気なのかな、今。
そう言うのは「可愛い」と言います。
片言だろうと、一生懸命意志を伝えようとする子供もは伸びますよ。(笑)
0008うーーん
NGNGアルゴリズムなんてどうでも動けば良いって、その認識にはかなり問題があると思いますが。。。
私は人にアルゴリズムについて説明する時にはいつも「手順だけでなくオーダまで把握して始めてそのアルゴリズムを分かったという資格がある」と言っています。
1 の方も他人のマネの前にしかるべき学習はしましょう。どのような問題に対してどのようなアルゴリズムが知られており、それぞれ空間および時間計算量のオーダがどの程度であるか理解しましょう。
プログラマの卵だとの事ですが、趣味のプログラマじゃないんでしょ?
だったら既に知られているアルゴリズムについては積極的に学んでおくのは至極当然の心構えですよね。慣れだけで仕事をやっちゃいけません。プロならば。
ま、その程度の事もやらない「プログラマ」が多いから、この業界って甘く見られるんだろーけど。。。
0009名無しさん
NGNGうーん。少々表現が婉曲過ぎやしませんか?
4ではアルゴリズムはドキュメントとして残し、ソースには
その実装手順を書けって事を言いたいんだと思うけど、勘違
いですか?
8での「空間及び時間計算量」ってのは、アルゴリズム実装時
に消費する記憶領域の容量と、そのアルゴリズムの実行時の消
費時間を指してると思うんだけど、どうでしょう。
0010はろー
NGNG問題は、それをどう効率良く処理するかです。
オリジナリティとか関係ないです。
適格なアルゴリズムによってプログラムは、数千倍早くなります。
そして早いアルゴリズムはあなたの前に誰かがみつけてます。
大抵の場合はその早いアルゴリズムを使いましょう。
それを処理するライブラリが提供されているなら積極的に
それを使いましょう。
よくいわれることですが、「車輪の再発明」は絶対ダメです。
そんなことばっかやってる奴は現場でやくにたちません。
00114
NGNGアルゴリズムは問題を解決する方法論でしかない、
それがそのまま、ソースに落ちることはありえない。
何らかの言語に落とす時点で、その言語に適したもしくは、
その実行環境に適した形に実装しなければいけないでしょう。
プログラムを書くときの手順として
問題分析→解法の検討・決定→実装
となるはずです。一般にアルゴリズムをどう適用させるかは、
解法の検討・決定に属する問題で、実装の問題ではないでしょう。
1の見習いさんが問題にしているのは、恐らくは、実装の方法論であろうと思うが、その辺が曖昧なんで、4のような書き込みをしたのだけれど。
0012>8
NGNG>アルゴリズムなんてどうでも動けば良いって、その認識にはかなり
>問題があると思いますが。。。
はい、その通りです。(笑)
でも現実は納期に追われ、それどころじゃないんだよなぁ。
いくら素晴らしい算法使っても動かなくては意味が無いと言うのは現実
です。その辺は皆さん分かってるけどね。
>10さん
>適格なアルゴリズムによってプログラムは、数千倍早くなります。
そうですよね。俺もビルト大先生の本読みました。
sortが良い例で、当時感動ものでした。
で、「車輪の再発明」ってなーに?
00139
NGNG聞く前にまず検索エンジンを使いましょう。
で、「車輪の再発明」ですが、現実には政治的な問題が
絡んで来て、結構頻発しちゃいます。
思いっきり低水準な感情論から「車輪」の保守の労力や
それに対する評価に至るまで、色々と。
00148
NGNG空間計算量、時間計算量というのはそれぞれ space complexity@` time complexity の訳です。complexity なので複雑度と訳される事も多いです。
これはある入力があった時、そのアルゴリズムの実行にどの程度の空間(メモリ等)および時間が必要かを表すものです。
また、オーダというのは入力のサイズが増加した時に計算量がどのように増加するかを表します。
例えばソーティングではソートするデータの数が入力のサイズという事になりますが、このサイズが二倍になった時に計算量が何倍になるかという事を表現しようとするものがオーダです。
例えば単純な選択ソートでは入力が二倍になるとおよそ四倍(三倍になれば九倍)の時間がかかりますがクイックソートではそこまでひどくはありません。
もし使っているアルゴリズムの空間計算量のオーダが大きい事に気付いていない場合、予期しない所でメモリが足りなくなって実行できないなんてハメになりかねません。
>7 さん
>でも現実は納期に追われ、それどころじゃないんだよなぁ。
>いくら素晴らしい算法使っても動かなくては意味が無いと言うのは現実です。
それをなんとかするのがプロってもんでしょう?
プログラマというのは充分に誇りを持てる仕事だと思うのですが、誇りを持てるほどの仕事をするプログラマは非常に少ないように感じています。
0015駄目よ
NGNG見られてびしばし指摘される方が上達するって。
0016でも
NGNGをそのまま使って全くなんのことやら(なぜ動くのか)分からなかったのが
ある日突然理解できたりとか...
うちの会社の新人君(と言っても私より年上)はWindowsのメッセージの概念
が理解できない様子。はやく目覚めてね...
00171です
NGNG新卒で先日から仕事が始まりました(研修長い会社です)
今は仕様書見て上の人の言うがままに作ってます。
サンプルプログラムまで渡されてます。
このまま何もせずに行ったら使えない人間違いなしと言う感じです。
よくわからないんですが、プログラム言語(今はCです)を勉強していれば
自然と良いアルゴリズム(と言うかプログラム?)が組めるようになるのですか?
ここにいる方はみなさんプログラマ歴はどれくらいなんでしょうか?
もしかしたら自分は向いてないかも知れないと思っています。
非常に不安です。
新人の頃はみなさんこんな感じだったのでしょうか・・・
0018>17
NGNG>新人の頃はみなさんこんな感じだったのでしょうか・・・
自慢とかそーゆー事じゃなくて、新人で入社して2ヶ月目(小さい会社なので)
からごく普通にドライバ書いてました。その時点でC歴は7年だったし
中学生の頃に、プログラマが初期にぶち当たる壁を乗り越えるか、新卒就職して
から壁にぶち当たるかの違いだと思います。
在学中は「就職したらすぐに仕事が出来るようになってないと...どっこも雇っ
てくれない」と考えていたのですが、世の中は「仕事は就職してから覚えるも
の」と言う考えが学生にも企業にもまかり通っていて驚きました。
でも、がんばってください。
0019↑追加
NGNGとか「現場の人に受け入れてもらえるか」なんて不安はもちろんありましたよ
0020>17
NGNGただし不安を表に出さない人は大勢います。
結構、横柄に振る舞ってる人の方が、意外に小心の方が多いです。
今後10年20年と経験を積んだとしても、やる事は常に新しい事を含み
ますから、不安感に関しては永久に無くならないでしょう。
0021大学4年生
NGNG職歴ある奴とか昔からやってた奴
に見てもらって「こんなんおえんわー」
とか、「はぁ???これで何したいの???」とか言われた。
(彼らに悪意わ無い)
そりゃグサっとくるけどさ。
ずばっと言われた方が印象に残って同じ失敗しないしね。
ちゃんと助言くれるし(解答ぢゃなくて、あくまで助言)。
0022#10423
NGNG>よくわからないんですが、プログラム言語(今はCです)を勉強していれば
>自然と良いアルゴリズム(と言うかプログラム?)が組めるようになるのですか?
アルゴリズムの勉強がしたいなら、雑誌とか書籍とかの
C言語のソースを片っ端に解析するのが一番いいと思います。
それと、C言語やOSなどの勉強も必要だと思います。
0023というか
NGNG0024#10423
NGNG半年以上も研修してて、要件を満たすアルゴリズムが
作れないっていうのは精進が足りませんな。
もっと、勉強しないと。
0025AO
NGNGちゃんと、整理しておかないと、いつまでたっても、
スキルは上がらないと思うんだけどなぁ。。。
「半年以上の研修」で、段階的詳細化も教えてないとは思えないけど
そんなものなのかなぁ。。。
コーディング手法ばかり覚えてもしょうがないよなぁ。。。
0026便乗質問君
NGNG「まずは即座に思いつく簡単なアルゴリズムで各ルーチンを作り、
それらのルーチンを繋げた後に各ルーチンのアルゴリズムを再考する」
っていう形で作っています。
そうすれば、「動かない」っていう最悪の事態は防げるし・・・。
でも、これって危ういですか?
0027>26
NGNG無い。エラー処理なんかも抜けちゃったりして...ちゃんと
チューニングすれば1.4倍ぐらい軽くなるんだろうな...
そんな訳で始めから、完全に近いコード書くように心がけて
います。みなさまは?
0028AO
NGNGいきなりコード書かないですよ。。。
大体、大まかな構造設計から、機能分解とかIPCをどうするかとか、
決めてドキュメントした後、ライブラリ化可能な部分なんかの抽出します。
まぁ、プログラムの骨組みになる部分機能とか、機能の橋渡しになる部分は
割と先に作ってしまいますが。。。
エラー処理は機能の一部なんで、構造設計時点で織り込んでおきますね。。。
あと、どんなに忙しくても、関数、class、templateなんかは、
部品化、ライブラリ化を考慮して作るようにしてますが。。。
00291です。
NGNGああ、毎日残業残業です。
こんなに厳しいとは・・研修時代は毎日17:30上がりだったのに・・・
相変わらず、仕事ができず上司の人から冷たく扱われています。
このスレッドに書いてある事を読んでも何がなんだかわかりません。
勉強する気はあります。通勤電車の中で「初めてのC」読んでます。(そんなレベルです)
とりあえず、何から勉強すれば良いのでしょう?
UNIXの使い方もC言語もプログラムもプロジェクトもさっぱりわかりません。
わかってないことが多すぎて何からやって良いのやら・・・
助けてください・・・・
0030これは
NGNGというのが一番の助言か?
0031最初はそうだよ
NGNG最初は俺も言語以外は何もできなかった。
makeもコマンドもわからなかった。
だから最初は仕事上で覚えることで充分。
わからないことは怒られても上司にちゃんと聞きなよ。
んで覚えたことはメモしとくこと。
何回も聞いたら切れるよ(笑)
0032#10423
NGNGそうかなぁ?
「1」の人は研修期間が半年もあってこんな状況なんだから、
気合入れて勉強しないと、使えない人で終ってしまうんじゃない?
というか、なりつつあるみたいだけど...
0033>32,1
NGNG状況ちがうけど,研修と現場は違うでしょ?
現場で得るもののほうが大きかったけど。
Cだってどうせ研修だと,現場で使わないような関数ばっかだろうしね。
だから,大丈夫でしょう。
あ,そうそう。もう,pcの安い時代なんだから,
自前で家に1台買って,WinのほかにLinuxくらいいれて
勉強しようね>1
00341です
NGNG今日やっと一本プログラム終了しました。(予定期間の約2倍)
>30、32
やっぱ向いてないんですかね・・・
でも研修ではCOBOLをやってたんですよ〜
しかも簡単な練習問題みたいな奴ばっかりで後は2種の勉強。
ま,言い訳なんですけど・・
>31、33
暖かい励ましどうもありがとうございます。
とりあえず一本できたのでなんだかほっとしています。
やっぱりLinux入れた方が良いんですか。
新しいパソコンか・・・うちの会社は残業代はきっちり出るので
それで買います。頑張ります。
今後もこの掲示板でくだらない質問すると思いますが、
暖かく見守ってやってください。
みなさん、どーもありがとうでした。
0035>34
NGNG言語教えるんならCかC++以外考えられんのだけど、研修担当者って
一般的に使えない人がやるからねぇ。
(検査にも多いけど…)
Linux入れるのは出来るだけ早い方が良い。
昔と違って、現代は只で色々な処理系が手に入るから、勉強には全く
困らないんだよね。
書籍もいろいろ読まれる事をお勧めしたい。
ご健闘をお祈りします。
0036#10423
NGNG研修と現場で状況が違うのはよく分かっています。
まして、「1」さんは、研修ではCOBOL言語だったんだから
わからないことがあるのは当然だと思います。
しかし、半年の期間があって、きちんとしたアルゴリズムが
組み立てられないのは問題だと認識させたほうが「1」さんの
ためになるのではないでしょうか?
0037AO
NGNG研修で教えることは、その会社の色が出ますよからねぇ。。。
まぁ、COBOLで作ったシステムをリプレースする時は、システム調査で
ソース解析しなくちゃいけないこともありますが。。。
やっぱり必要なのかな?>COBOL
本当は、手続き型の言語なら、Cでも、COBOLでも、たいした差はないんですがね。。。
0038名無しさん
NGNG「内定式でCOBOLの教科書を渡された」
というのを見た事があります。
まだ相当数研修でCOBOLをやらせているようです。でもなぜ?
0039>38
NGNG担当者がCOBOLしかしらんのでしょう。
そもそもソフトウエアの世界も、ハード並に変化してることを
知らないような気がする。
0040>39
NGNG0041名無しさん
NGNG0042>41
NGNG0043>37
NGNGそうですか?COBOL育ちの人間って、極度に引数渡しを嫌う傾向がありませんか?
Cのライブラリを設計する時ですらテーブル渡しの仕様を出して来たりしませんか?
どうも彼らはポインタを不気味な物として捉えているのではなかろうか?と。
0044きっとこう言うだろう
NGNGべーしっくみたいにに、変数に直接格納して渡した方がシックリくるんだもーん。
0045AO
NGNGうーん、ポインタは言語仕様の一部に過ぎないんですがね。。。
手続き型言語自体の共通性を言いたかったんですが。。。
ライブラリ設計と言ってる局面がどういう物か分かりませんが、
引数渡しでも、テーブル渡しでも、そのケース毎に考える問題だと思います。。。
どちらかというと、COBOL経験の長いひとは、ファイル渡しを好む気がしますが。。。
何故か、機能ごとにプロセスが立ち上がるとか。。。
■ このスレッドは過去ログ倉庫に格納されています