はてなキーワード: gotoとは
← いやいやw それは40年くらい前にBASIC言語でプログラミングしてた頃の話w
その後、月刊ASCIIとかの雑誌で構造化プログラミングの事を知って、Pascalだのヴィルトだのダイクストラだのの名前を聞きかじって、大学でPascalを学んで、「やっとGOTO文無しでプログラミングできるぜ!」と喜んでたよ。
← って、オイオイ、何が悲しゅうて今時BASICなんかの勉強せなあかんねんw
「GOTO文有害論」(Go To Statement Considered Harmful) から半世紀以上、出来るだけ GOTOを使わずに済ませる方向に頑張って来たと言うのに...
まずはプログラミングがどんなものかBASICで体験してみましょう。
BASICではとりあえずは以下のこと(プログラミングの基本)を理解しましょう。
このくらいなら一週間もあれば完全に理解できるようになるはずです。
C++ではとりあえず「ロベールのC++入門講座」を購入して読むといいでしょう。
「ロベールのC++入門講座」が無理そうなら「Cの絵本」→「C++の絵本」→「アルゴリズムの絵本」あたりにしておきましょう。
ここまでおおむね理解したら次は好きなルートに移行しましょう。
何で一括置換機能消えたん……
VERSION BUILD=1001 RECORDER=CR SET !REPLAYSPEED MEDIUM SET !ERRORIGNORE YES URL GOTO=http://b.hatena.ne.jp/username/OKIKAE/ TAG POS=1 TYPE=A ATTR=CLASS:js-keyboard-entry-page-openable TAG POS=1 TYPE=IMG ATTR=ALT:ブックマークを編集 TAG POS=2 TYPE=LI ATTR=TXT:OKIKAE TAG POS=1 TYPE=LI ATTR=TXT:オキカエ TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:/my/bookmark ATTR=* WAIT SECONDS=20
ユーザ名usernameで使用してる「OKIKAE」タグを「オキカエ」に一括置換する場合。Chrome版で実行済み。最後に20秒待ってるのは、置換後に一覧ページへ反映されるのが遅れる為。
ただ自分でやった時(当然ユーザ名・タグは別の名前)に、2013年11月頃の分で一向に置換されないままループしたりで安定しない。
プログラミングの入門者には伝統的に変数やif文、for文などが教えられてきました。
昨今ではJavaやってGoogle Play Storeでアプリをリリースするのが目標になるのかもしれません。
開発環境は年々高級になっており、以前より人の思考に近い感覚でコーディングできるようになってきました。
とはいえ、かつてWindowsのGUIプログラミングがそうであったように、
スマホにはスマホの流儀があり、いくらアイコンを右クリックしたいといってもスマホには右クリックの概念が無いという、
様々な流れに翻弄されつつもプロダクトを開発し世にリリースしていくことは、
プログラマが選択できる使命の一つとして今後も世界中で支持されていくと私は信じています。
プログラミングをとりまく状況はこの30年で大きく変化したと言えます。
それでも基本的な部分は変わりがありません……などというのが通例ですが、
だからといって基礎練を素直に続けることが正しいとも思いません。
今の新しい世代の人なら、まずはスマホアプリかWebアプリ、Webサイトを目指すべきでしょう。
ハードウェアに興味があるなら、ラズベリーパイやArdinoを組み合わせても面白いですね。
アプリならJavaかSwift。(Unityを使うならC#ですね)
Web系ならphp。(ruby on railsもいいかと思います)
(15年前だったらC++でかっこいいwincdowsゲームを作りたい若者で溢れていました)
何かを作るにあたり、まずは1ボタン1機能から始めると良いと思います。
それはメール送信だったり、画面に文字を表示したり、ショップではがねのつるぎを購入したりと様々です。
ボタンを押すとボタンが増えたり減ったり、違う画面に移ったりしたくなります。
途端に難しくなります。
それらを整理するためにオブジェクト指向とやらを使わないといけなくなります。
何かを作る際に、機能が多くなると、それらを整理する手間が発生します。
グローバル変数はやめようとか、goto禁止というのはそういう活動の一環として生み出されてきたハウツーです。
そして自分の作りたいものは往々にして自分の実力を超えた所にあります。
幾多の困難を乗り越え、今の自分ならどの程度の規模のものを無理なく作れるかということがわかる場合があります。(わからない場合の方が多いんですけど)
最終的に何を作るか、何を作れるかというものを見据えながら、本当に必要な機能を選別しないといけないのです。
欲しいものは全ては手に入りません。
全部じゃないと意味が無いなら、即座に全てをあきらめるか、考え方を変えなければ生き残れません。
プログラミングをする上で、夢を実現する技術を学ぶわけですが、
それには、何を実現したいと願うか、何を夢とするか、をコントロールする術も含まれます。
そしてそれこそが、プログラミング、ひいては
例外ってあるじゃろ。tryしてる間にthrowされたのをcatchするアレじゃ。あれは、たしかに有用な仕組みじゃ。何かの関数に失敗したとき、本来の値のかわりに特定の値を返すのもダサいし、参照型の引数で成功したか否かを返すのもダサい場面、というのは確実にある。そもそもプログラマは怠惰で忘れっぽい生き物なので、例外という仕組みがなければ、関数で失敗したことにすら気づかないかもしれない。
だがな。例外は魔物じゃぞ。昔は、gotoというものがあってだな。好きなところに処理を飛ばすことができる。あまりに、いろんなところに飛ばせるので、邪悪だと言い出した奴がおって、今ではあまり使われなくなった。なぜgotoが邪悪と呼ばれたか。gotoというのは、順接、分岐、反復という、プログラムを組む上で最低限必要な制御構造から逸脱した、どっかからどっかに飛んでいく、という行為が容易にでき、それを多用したコードはまともな人間には読めなくなるからであった。そして、例外は、まさにその「どっかからどっかに飛んでいく」を容易にするための仕組みなのじゃ。
例外は、順接、分岐、反復による基本的な制御構造があった上で、あくまで対処を要するアブノーマルな状況に使われるべきものであり、例外というのは、制御機構として使ってはいけない。値を返す目的で例外を使ってはいけない。一体どこから来て、どこへ行くのか分からない、そんな、流れ星のような例外の使い方をしてはいけないのじゃ。例外を使うなと言うつもりはまったくない。じゃが、例外は制御構造を壊しうるものだと認識し、例外を悪用していないか、それによってコードが追えなくなることはないか、と、考えてから、使ってほしいのじゃ。
イベントの悪用も見た。イベントは非常に有用な仕組みだし、GUIなんかだと、もはや必須とも言える。なので、イベントを使うことは有用なことだ。けれど、イベントは、いつどこで発生するか予想が付きづらいものが多く、また、スレッドなどを使って非同期でイベントが処理される場合(今時は、多くがそうだろう)は、マルチスレッドと同じく、リソースの排他制御を行う必要があるかもしれない。複数の処理が同時に動くというのは、恐ろしいことなのじゃ。いつの間にか、変わってないと思ってた変数が途中で変わるやもしれない。「まー、滅多に起こらないし、ええじゃろ」って判断の上、何も対策しない、という手もあるが、ええじゃろで済むのか済まないのか検討するくらいは必要じゃわな。C# なんかだと、言語レベルでイベントが実装されておる。じゃから、イベント必要ないじゃろと言いたくなるような場面で、イベントが使われていたコードを見た。
便利な仕組みがどんどん出てきて、新しいものがどんどん古くなる今のコンピュータ業界。新しいものを追いかけるのもいいが、基本は基本として、しっかり押さえて欲しいのじゃ。今更、アセンブラでゲームを作れるようになる必要なぞ、微塵もないが、自分のコードがどのように動くのか、興味をもってほしいのじゃ。わしのような新しいものに不勉強な老害は、最近の若いものが基本的なことを不勉強だからこそ、居場所があるのじゃ。じゃが、わしももう長くない。若いもんは、新しい仕組みの表面だけでなく深い部分に触れて、学んで、わしら老害を追い出せるくらいになってほしい。わしからは以上じゃ。
そして現在までジャンル問わずかなりの数を聴きまくった自分の良い曲だと思った10曲
Apple Musicも始まったことだし
曲ありすぎて何から聞けば良いか分からないやつとか参考にしてもらえれば
● Golden Lady - Stevie Wonder
誰もが知っているスティーヴィーだけどこの曲はシングルでもなくたぶん推し曲でもない
そしておれは特にスティーヴィーのファンでもないMotownの初期のカタログを少し聞いていた程度
2年ほど前彼女にフラれて音楽とかクソ時間のムダだわと絶望してたおれは
”そういやいわゆる名盤には手を出してねーな救われねーかな"と思い
「名盤」で検索して引っかかったスティーヴィーの"3部作"と呼ばれる傑作アルバムがある事を知った。
さっそくその中の「Innervisions」というアルバムを落とした
飽きたくないから何回も聞きたくない...あーでも聞きてえみたいな
そこからたぶん相当数聞いてるが運良くまだ飽きない
聞くたびに「なんて良い曲なんだ」と口に出す
https://www.youtube.com/watch?v=qS2yMn3JbQk
● Mr. Dieingly Sad - The Critters
数年前ジャズミュージシャンの菊地成孔氏が川勝正幸という評論家の人が死んだ時に自身のラジオ番組の追憶放送でBGMとして流した1曲
この人たちをよく知らなかったがたまたま「追憶」というドラマティックな回が上がっていて
聞いてみるかーと思って視聴したら大当たりだった思い出がある
この回でかかった曲は人の死が背景にあった事も影響してるが全てが良かった
https://www.youtube.com/watch?v=u-6khXfUK3M
ラブホテルに行った時に教えてもらった1曲
どういう流れで音楽の話になったか覚えてないがたぶん相手の青春の1曲だったのだろう
状況と背徳感もあってか異常なほど興奮しながらこの美しいメロディに耳を傾けていた事を思い出す
(その女は後にストーカーになった)
https://www.youtube.com/watch?v=qCoxPHTyXuo
● How Soon - ROLAND ALPHONSO
当時ライブハウスでもフェスでもとにかくスカバンドが多くて"ルーディ"という言葉にカッコよさを感じてたおれは
「スカじゃねえよスキャって言えや」と本気で周囲に言ってるバカで
1枚20Kもするレコードを買って毎日牛丼しか食わないようなクソみたいな日々を送っていた
連中のオシャレだと思っていた古着ファッションセンスもただ貧乏なだけだと気付いてから完全に冷めてしまった
そんな事を思うようなおれは大学を中退しユニオンにジャパレゲを売って生活してるクズで
女にも縁が無くただただ悶々とした日々がティッシュに埋もれていった
この曲は二度と戻りたくない時期の唯一の収穫で唯一売らなかったレコード
https://www.youtube.com/watch?v=HGyzq6S4Ssk
● bikinikill - Moscow Club
同級生とバンドを組みブラフマンのAnswer Forで田舎のクソ狭いライブハウスで数えるほどしかいない客にダイブしていた
ビジュアル系のカバーバンドを結成したくさんの女の子にリアルにキャーキャー言われていた
(後に彼をインターネットで発見した時、髪の毛が一本もなくなっておりポルノグラインドを一人でやっていた)
皆その後は音楽はほとんど聞かなくなるが30前後の結婚ラッシュでバンドの再結成を果たし
中性脂肪の塊の腹を引きずりながらギターを奏でる姿がなんともいえず感動を誘った
当時を懐かしがる連中は多く久しぶりに会うとそのような話にもなるが昔話は一日もたなかった
抜け出せない現実に限界がきてギターショップで万引きをして捕まった奴
精神病を患って引きこもった奴
車に轢かれて死んだ奴
ずっと働かずにスロットしてる奴
周りには自分も含めてクズだらけだがこの曲を聞くと10代の彼らの笑顔しか思い出さない
https://www.youtube.com/watch?v=FfsLKefAkyQ
● Song 1 - DJ Krush
10年以上前THA BLUE HERBにひたすらハマっている時期があった
一時期はカトマンズに住もうかと思うくらいだったがブタほどの行動力も無いヘタレのおれは
当時片思いしていた女に無理やりボアダムスを聞かせて感想を言わせたり
その女が好きだった大人計画の演劇に同行して「よかった〜あんなの始めて見たよ!」と言って
内心は「どこがおもしれーんだクソだわでもヤリたい」と腐った思いを握りつぶしていた
そんなモヤモヤしていた時期のおれがラップに入れ込むのは必然みたいなもので
そして5lackが登場するまではHIPHOPに対しても距離を置くことになる
このインストゥルメンタルはその時期に聞いた至高の1曲で宝物だ
https://www.youtube.com/watch?v=bj3y5vFS3Es
● Feel It All Around – Washed Out
ある時期強烈にブラックな仕事に従事していたおれは疲れ果てていた。
上司のパワハラと時間に追われて睡眠薬が無いと寝られなくなった、ブクブクに太って体が重い、
給料はストレスから全てデリヘルに消える、二度と帰りたくないクソみたいな日々、
「日本に生まれるだけで宝くじに当たったようなものだ」と文句を唱えて必死に感情を押し殺していた
背が低くて足が太いクソブスの女上司に「君って感情が無いみたい、ロボットなの?」と言われた時
2010年の夏は太陽が本当に眩しくて暑かった、サマーオブラブは間違いなく2010年に来ていた
● Go Berri Be Happy - Mark Barrott
去年の夏に同僚の人妻を好きになってしまい、頭の中が彼女の事で満たされてしまった俺は、
ある日から体調が異常に悪くなった、検査したら胃から出血していた、
15年ほど吸っていたタバコを辞めざるを得なくなった。
もう抱けるならどうなってもいいと毎日デパス飲んで働いていた(顔を合わすから)
そんなある真夏の日、田舎に現実逃避旅行へ出かけボーっとしながら緑がキレイな山沿いをチャリでブラブラしてた俺は突然
「あなたの事が好きになってしまった、一度食事してくれませんか?」とメールを打ち、
返信を待つ間の胃の痛みに必死に耐えた。一週間後、俺は彼女と一緒に食事をしていた、
夕方の街をブラついた後ネカフェへ行きペッティングした。とても簡単だった。
次の日から好きだった職場に行きにくくなった、背徳感からなのか、すさまじい興奮を覚えて汗が止まらなかった(継続)
この曲はメールを売った驚くほどキレイな自然の中でリピートしていたアルバムからの1曲
https://www.youtube.com/watch?v=2e8Py9ToC7M
● 君はそう決めた - 坂本慎太郎
坂本氏の良さを書こうなどたぶん野暮だし恐れ多い
思い出はまだ無いけど、全作品心を鷲掴みにされる
https://www.youtube.com/watch?v=t08i_cWdcbM
● ADEPRESSIVE CANNOT GOTO THECEREMONY – imoutoid
モテる要素が皆無だった自分に女が寄ってくる、ただ好きな事に熱中して作品を発表しただけで、
本質は変わってない自分への周りの変化に戸惑い苦しむ、世界へ絶望する第一歩を踏み出す。
もしこのような事だとしたら自分は人間に改めて感動する。なんて脆くて危なっかしいんだろう。
心と体のバランスの取り方は複雑で人それぞれだから何も言えないけど
良い音楽は死ぬまで聞くし俺より何倍も生きてる価値がある(あった)
また書く
第49回の試験が先週有った。年2回という事だから、25年ぐらいの歴史のある検定試験という事なのか。
2級制御を受けてみて、まぁ、それなりにこんなもんか、と思われる所もあるのだけれども、どうしても我慢ならない事を言わせてほしい。
びっくりだね。過去問にも1つも出てこないし、今回も無し。私の場合、独学と会社の講習会で勉強した。確かに学校では習わなかったが、デジタル回路に関する学科で、現在も未だに同期回路設計の考え方を教えてない学校があるのかしらん?嘘でしょ?
考えてみると、末端の回路設計者に於いて非同期設計が普通だった時代から、同期設計が主流に切り替わった時期というのが、だいたい25年ぐらい前なのな。20年前の時点で、少なくとも自分の周りでは「非同期設計は禁止!」だった。それが驚いたね。未だに数年前の過去問でTフリップフロップとか出てくるし、2014年の試験問題でRSフリップフロップが出てきちゃったよ。あのな、15年前にはもう、Dフリップフロップ以外、使用禁止になってるからな。過去の歴史を勉強する上で、まずい設計の引き合いに出されるのならともかく、まるでそれが今も現役であるかのようにRSフリップフロップが出題されるって、これに金払ってる人に対する詐欺だと思うよ。どれぐらいイケてないかって、N88-BASICのGOTO文が試験に出てくるぐらいのレベルでイケてない。例えが古すぎて若い人には意味わからんレベル。そんなのが未だに出題されてるんだぜ。
(2) GHz帯の高周波を取り扱う為に必要な基礎知識が出題範囲に含まれない!
日本のデジタルICが総崩れで海外に惨敗する結果になった敗因の1つがこれだと思うんだが、未だにその反省が無いのな。マクスウェルの電磁方程式を完璧にマスターしろとは言わないまでも、同軸ケーブルとかインピーダンスマッチングの意義とか、マイクロストリップラインの基本的な考え方ぐらいは出題範囲に含まれてないと、今どき戦えないよ。
日本の失われた20年が、こんな所にも有ったよ。
例のAppleのSSL/TLSのバグの件、日本語情報がなかったので意訳しました。
Adam Langleyさんによって書かれた原文はこちら。要所要所に親切なリンクがついているので、ぜひ原文も見てみてください。
Apple's SSL/TLS bug (22 Feb 2014)
https://www.imperialviolet.org/2014/02/22/applebug.html
(Hi Adam Langley, Than you for your blog! We really appreciate you.)
-----
昨日、AppleはばかばかしいiOS向けのセキュリティアップデートを発行した。 それは詳しく明かされていないが、SSL/TSLについてとんでもなく恐ろしい間違いを示すものだった。 その答えは既にハッカーニュースのトップにタレこまれている(https://news.ycombinator.com/item?id=7281378)し、アップルが隠したい秘密はもうバレてしまっていると思う。 そして現在、俺たちはその誤った情報を正すステージに来ているんだ。 ほらここに、Appleのbugがあるんだ。:
static OSStatus SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen) { OSStatus err; ... if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail; goto fail; if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail; ... fail: SSLFreeBuffer(&signedHashes); SSLFreeBuffer(&hashCtx); return err; }(Quoted from Apple's published source code.)
(訳者注:(Quoted from Apple's published source code)→sslKeyExchange.c) 2行のgotoがあるだろ。 2行目のgotoは、見て分かる通り常に発動する。 変数[err]にはエラーを示す値が入らず、正常を示す値のままfailに飛ぶってことだ。 それって成功したのと同じなんだよね! この署名検証処理は(訳者注:SSL/TLSハンドシェイクのやりとりのうちの一つである)ServerKeyExchangeメッセージの署名を検証するものだ。 このServerKeyExchangeでは、"the ephemeral key"(通信のための一時的な鍵)を交換するためのDHE や ECDHE という暗号スイートが使われる。 そのサーバーは言うんだ。 「ここに"the ephemeral key"と署名があるよ、ほら、これが証明書だ。君はこれが僕からのものだってわかってくれるよね!」 今、もし"the ephemeral key"と証明書の関係が破たんしているならば、すべては無意味なんだ。 これってつまり、正規の証明書チェーンをクライアントに送信したけど、ハンドシェイクへの署名には正しくない間違った(つまり適当にその辺で作った)鍵を使ったり、そもそもハンドシェイクに署名しなかったりってことができるってことなんだよ! そこには、今君が通信しているサーバーが、サーバー証明書に含まれる公開鍵の秘密鍵を持っているってことの証明が、何もないんだ。 これはSecureTransport(というライブラリ)に入っていて、以下に影響する。 ・iOS 7.0.6より前(俺は7.0.4で確認した) ・OS X 10.9.2より前(10.9.1で確認した) (訳者注:つまりiOS 7.0.6、OS X 10.9.2で解決した) これはSecureTransportを使っているすべてに影響するけど、ChromeとFirefoxはそうじゃない。 ChromeとFirefoxはSSL/TLSのためにNSSを使っている。 でも、それはあんまり君のマシンがSecureTransportを使っていないってことを意味しないよ。(ソフトって更新されるしね) 超特急でテストサイトを作ってみたよ。https://www.imperialviolet.org:1266 ポート番号に気を付けてね。(テストサイトはCVE番号になってるよ) 443は通常通りに動いているからね。 ポート1266のサーバーと443のサーバーは同じ証明書を送っているけど、完全に異なるキーで署名しているんだ。 君がもしポート1266のHTTPSサイトにアクセスできたんだったら、君のマシンはこのイケてるバグを抱えてるってことだね。:) それってつまり、証明書チェーンは正しいってことで、そしてハンドシェイクと証明書チェーンの関係は壊れたってことで、もう俺はどんな証明書も信じないよ。 またこれは、DHE または ECDHE 暗号スイートを使っているサイトに影響を及ぼすだけじゃないんだ。 攻撃者は、この暗号スイートを使うサーバーを自分で建てるようになるだろう。 また、これはTLS 1.2には影響しない。このバグを含まないTLS 1.2の別の関数があったから。 でも攻撃者は使うプロトコルをある程度選ぶことができるから、安心できないよ。 (訳者注:サーバー側がTLS1.2を使えないことにしていたら、それ以外の例えばSSL3.0とかTLS1.0とか1.1で通信が始まっちゃうから。) でもでも、クライアント側でTLS1.2だけを使えるようにしておけば、それは今回の問題の回避策になる。。 同じく、クライアント側でRSA暗号スイートだけを許可するということも、ServerKeyExchangeが発生しなくなるので今回の問題の回避策になる。 (2つのうち、1つ目のほうがだいぶ好ましい。) 俺のテストサイトでは、iOS 7.0.6 と OS X 10.9.2で問題は解決していた。 (更新:このバグはOS X 10.9 のときに入ったように見えたけど、iOS6にもっあったぽい。iOS 6.1.6は昨日リリースされたよ。) こんなような微妙なバグって、悪夢だ。 俺はこれは単なるミスだと思うし、なんかもうほんと最悪って思う。 ここに、今回の問題を明らかにするコードがある。:
extern int f(); int g() { int ret = 1; goto out; ret = f(); out: return ret; }
もし俺が"-Wall "を付けてコンパイルしたとしても、XcodeのGCC 4.8.2 や Clang 3.3は死んでるコード(the dead code)について警告をしないんだ。 本当にビックリだよ!!! ここで警告が出ていたらこの問題は止められたのに。でもたぶん、現実には死んでるコードが多すぎて無視することにしてるんだろうね。 (ピーター・ネルソンが教えてくれたけど、Clangはこれを警告するための"-Wunreachable-code"を持ってる。でもこれ、なんと"-Wall "には含まれてない!) if文に{}をつけないことを許すコーディングスタイルはこの問題を誘発したかもしれない。 でも、人は{}を付けたとしても間違ったプログラムを書くことがあるから、これは俺はあんまり関係ないように思う。 テストケースはこれを見つけることができたはずだけど、今回のはいろいろ条件が複雑なやつだったから難しかったと思う。 TLSのめちゃめちゃ多くのオプションを試さなきゃいけなかったからね。しかも正常系じゃないやつも。 俺、TLSLiteでちゃんとテストしてるか思い出せないもん。(月曜日怖いかも) コードレビューはこの種類のバグについて効果的でありえる。 ただし単なる審査じゃなく、それぞれの変更に対してしっかりとレビューすることだ。 Appleのコードレビューカルチャーがどんなもんか知らないけど、もし俺が同じようなことをやっちゃったとしたら、同僚のWan-Teh や Ryan Sleevi がばっちり見つけてくれたと、固く信じてる。 でも、誰もがそんなにいい仲間を持てるわけじゃないよね。 最後に。昨日、Appleが証明書のホスト名をちゃんとチェックしていなかったことについて多くの議論があったんだけど、 それは OS X のコマンドラインでcurlを使うと、IPじゃない証明書でもIPでHTTPSにつながっちゃうってだけだったよ。変だけど。 Safariはこの問題には関係なかったよ。
配属されてからいろんな機能を追加してきた。中規模くらいのプログラムで、研究ではメインで使っている。
でもだんだんつらくなってきた。とにかく見づらい。
1980年代に作られたこのプログラムは今までの人たちのコメントの蓄積が半端ない。
プログラム書き換えでとりあえずとっておいたコードのコメント、書き換えた日時と人が書いてあるコメントがプログラム中に混在している。
これらは実際に動く部分のコードよりも多く、可読性をかなり下げている。
前者については、ほとんどが不要だと思うのだがあまり考えずに消すと将来困るかもしれないのでちゃんと確認して消したい。
そして未だに残るGOTO文とFORMAT文と文番号。implicit noneではない暗黙の型宣言。
Fortran入門: 知識として必要な過去のFortran このページに書いてあるほぼすべてが詰まってる。
COMMON文もほぼすべてのサブルーチンにあったが、これはなんとかmoduleに書き換えた。
moduleに書き換えたとはいえ、本来は引数で渡したほうが適切なものも機械的にCOMMON文からmodule文に書き換えたためその辺も見直したい。
一番面倒なのが一行の文字数制限。何段かのインデントを入れるとすぐにアウト。
エディタ使ってると自動でインデント入れてくれるのでいちいち直すのも面倒だし、インデント好きなのでできればインデント入れたい。
エディタといえばシンタックスハイライトもfortran77モードだとうまく表示できないことが多い。
allocatableとかmodule文なんかは厳密に言えばfortran90以降の機能だけどコンパイラが対応してくれているおかげで使える。
でもエディタのシンタックスハイライトにはそういうコンパイラが気を利かせたような実装は含めないのでうまく表示されない。
fortran90モードを使うと今度は行頭カラムの空白が守られなかったりしてコンパイルエラー。
すっげー書き換えたい。全部きれいにしたい。他言語にするとあまりにも変わりすぎて教授が混乱するからせめてFortran90にしたい。
でもさ、よく考えるとこの書き換えって全く自分の実績にならないんだよね。
そもそも今までプログラム改良して出来る計算の幅をだいぶ広げたけど、それ自体は発表できないからほぼ表に出ない。
計算結果を出してそれを発表しないと表面的にはまったく意味が無い。
ましてやプログラムの保守作業であるこの書き換えは計算結果に影響をおよぼすものでもないから研究成果にはまったく現れない。
しかもプログラム書き換えた自分だけじゃなく、みんなも使うから書き換えた自分が特別得するわけでもない。
プログラムすべてのコードを書き換えるのは単純に機械的にやっても結構時間がかかるし、書き換えても一発では絶対にうまく動かないから修正にも時間がかかる。
研究者の中にはそういうプログラム書いてばかりの人間を馬鹿にする人もいる。プログラムを書いてる研究者は自分の分野ではかなりヒエラルキーは低い。
情報系でもないんだし、それが研究の本筋じゃないからというのはわかる。自分たちのやるべきことじゃない。(でも専門性の高い道具を作り、整備する技術・人も必要なんじゃないかなと思ったりもする。)
やってもあまり得しないし他のことやったほうが絶対に自分の将来を助けるけど、ほっとくのもなんだかなあと悶々としている。
多分きれい好きの人が自分の部屋を見たら同じ苦悩を抱えると思う。
DLLやSO作るときに、シンプルなグローバル関数で逃げられるなら、別にシンプルなグローバル関数の追加は有り。
何でもかんでもIDLとかやってられない。
1度しかよばれない、汎用性の低い処理をわざわざAPI切って公開するな。他人が使わないものを公共の場に置かれても迷惑。
private
protected virtualも検討してくれ。他人が使うことがある。
その他よくある。goto 使うな
ネストの深い帯域脱出にgoto使わないとかありえないし、関数内の例外エラー処理にtry-catch使うほうがありえない。よってgotoの方が良いケースも有る。
基本的にコーディング規約は初心者を縛るもので、上級者になったら、コーディング規約の例外ケースを知らないとダメ。
想定外がない事ががないように、コーディング規約の例外・想定外の条件にコーディング規約に従っても仕方がない。逆に、そういうことを知らずにコーディング規約を語っても仕方がない。
http://anond.hatelabo.jp/20130325172822
正直、プログラミング初学者にやたらc言語とポインタ学習を勧める風潮には辟易している。
ポインタは何にでも使えすぎるんだよ。自由すぎる代わりに強力って意味で、あれはgoto文に近い代物だと思うし、
ポインタによって学べていたメモリ空間上のイメージやオブジェクト変数が実体への参照を持っているに過ぎないことなど
の概念は重要だが、その概念を活用するための手段としてアドレスを実際に見たり、指し示すアドレスを
前後に移動させるような機能が今の時代に必要かっていうとそれはノーだろう。
メモリ空間を直接叩くというのは例外的なオペレーションだし、やるとしてもそれは直接叩くのではなく