はてなキーワード: C言語とは
前回の記事はまとめサイトに掲載されたりTwitterで拡散されたりしていた。
今回はその続き。
http://anond.hatelabo.jp/20111219120206
まとめサイトに掲載されたときにも元教員からコメントのあったとおり。
2年間でどのような像に仕上げようかという目標がない。
資格系の学校の場合、あるのは検定に合格させるという目標だけ。
だから、授業の半分以上は検定対策。
これで授業が面白いはずがない。
実務を縮小した課題をしているだけ。
作業はするけど、提出さえすれば単位は取得できる。
詳細は「芦田の毎日http://www.ashida.info/blog/cat34/」を参照。
言っていることは過激だし現場の苦労は知らないと思うけど、おおむね同意。
午後のプログラム言語は選択式だけど、半数以上の学校はCASLII(アセンブラ)で受験する。
なぜか。学生が長文を読めなくなっているから、ステップ数が少ない言語を選ぶ。
当然、就職には役立たない。
基本情報を取得しているからといって、プログラムができるとは限らない。
あとは、遊び程度にC言語をやるぐらい。
一部の人気学科(看護等)以外は、全入時代。一条校ではないから、補助金もでない。
一人あたり、年間で100万円。入試は面接だけ。学力試験はしない。
オープンキャンパスに○回以上参加でその面接すら無くしている学校も。
当然、学生当時の担任も在職している。元担任には頭があがらない。
古くからのやり方が変わるはずもない。
もちろん、ここに書かれていることが該当しない学校もたくさんある。
某社内でのソフトウェア技術者について書きたくなったので書いてみる。
まず、そもそもプログラミングは下請け or 子会社がやるものという認識。それを、最近本社でもソフトウェア技術者を採用し始めたけど、やっぱり低く見られがち。プロジェクトの開発リーダーは必ず電気回路の人だし、外部との折衝もやらせてくれない。工場の製造用ソフトだってハードウェア技術者が無理して書いてる。
周りのプログラマーのレベルも低いよ。自分の周りがそうなだけかもしれないけど、C言語以外できない人多いし、ポインタはおろか struct と union の違いも認識していない。環境がローレベルなのか、仮想メモリとかいう考え方もない。 Windows しか使ったことない人ばかりだし、簡単なコンパイルエラー直すだけで数時間がかり。バグ管理はもちろん Excel。ヘッダファイルの define 一覧が Excel に表としてまとめられていて、手動で同期取ってたりする。
あとパソコンに対する考え方が古いよね。未だにCADを17インチディスプレイで書いてるし。今年会社で導入標準モデルになってるパソコンはメモリ2GB, HDD 320GB しか積んでない。マシンに投資するのは無駄という考え方が伝わってくる。スペックアップを主張しても「昔はもっと遅かった」で終了。
デスマーチを避ける考えもないかな。デスマーチを乗り越えたのが武勇伝として語り継がれる。俺何日も徹夜したえらい、みたいな。
そんなくせして、「Apple は大した技術力がないけど、アイデアがよかったから iPhone や iTunes がヒットしてる」と言ってる。まずいね。
私はIT系専門学校に通っている。わかりやすく言うとプログラマ養成校だ。これからそういう学校に行こうと思ってる奴、考えている奴らに、長所短所をシェアしようと思う。
・良いところ
基本情報がとれること。あえてあげるならこれであろう。今のシステム開発業界はリーマンショック以来の冷え込みがつづいている。昔ならプログラム未経験でもホイホイやとってくれたものが、今ではベテランでもどんどん切られる。そういう時代である。私も面接時に基本情報をもっていることが評価された。大学などでは基本的に資格取得のための授業をしてくれない。そのため独学でやる必要がある。もちろん独学で取れない資格ではないし、独学がのぞましい。しかしこれは全ての情報系検定の基礎になるものである。できるならば誰かに教えてもらうのが好ましいと思う。私は今はプロジェクトマネージャ試験という、試験の勉強をしている。これは情報系国家試験の中で”Level4”に区分される高度試験である。(ちなみに基本情報はLevel2)実はこのプロマネ試験、基本を取っていれば以外と独学でいけるのだ。これは他のLevel4試験にも言えることだと思う。基本的な知識は基本情報で勉強し、高度試験ではそれの読解、論述が出題されるイメージだ。高度試験取得のためにも、基本情報はしっかりと教師に教わったほうがよいと私は考える。
・悪いところ
企業側からの専門学校の評価が低い。これにつきる。正直そのへんの大学よりは授業内容も深く、仕事に活かしやすい。しかし、最低学歴として大卒を設定している企業が非常に多い。とくに中堅・大手にはその色が強い。そのため、それまでITとは無縁だった文系大学生にも追い抜かれてしまうのだ。ただこれについては本人のやる気しだいだといえる。yahooやドワンゴなどの一部の企業は専門からでも採用している。そういった大手を狙うならば、入学したその日からそれに向けて努力すべきである。情報知識などは正直ほどほど。求められるのは圧倒的自主性とコミュ力。例えば自分でサーバつくっちゃったよ~とか、クラスメイト巻き込んでサイトたちあげたったなど、クリエイティブな活動が評価される。
結論から言うと、純粋にプログラマを目指したいならこれほどよい教育環境はないだろう。短期間で資格習得することができ、実務に近い授業を受けられる。しかし大企業などを目指したいなら専門学校に来るべきではない。3流でも4流でもいいから大学に行くべきである。そして目標が曖昧な奴な絶対に来ないほうがいい。そのへんの専門とは違い、ほとんどの授業が座学である。それに耐え切れずに挫折したクラスメイトも普通にいる。適当に遊びたいならファッション系か3流大学にいくべきだ。この記事が、未来ある若者のためにならんことを
IT企業に内定もらった学生だが、就職先について悩んでいる。専門は電気電子。在学中にITの仕事に興味持って、授業で習ったC言語が楽しかったというのもあって、IT系を中心に就職活動をしていた。だから、滑り止めってつもりは全くなかった。せめて学校でITの勉強をしてきた人に負けないようにと、プログラミングの勉強を独学でしていた。
それでおれはアンドロイドアプリを作りたくてjavaの勉強をした。アンドロイドアプリを作るための本も買ってきた。javaをやってるうちは問題なかった。授業で習ったC言語に似ていたし。問題はアンドロイドアプリの勉強をしようとした時に生じた。
おれはじっくり書店でアンドロイドアプリ開発の本の調査を開始した。どれも3000円近く、貧乏学生にはやたら手を出せる代物ではなかった。そんな時、javaを勉強した本の同じ著者がアンドロイドアプリの本を出したんだ。ぼくは衝動買いした。買って大喜びで帰って家で勉強を始めたよ。だが、javaではあれほどわかりやすく書いてた同じ著者なのに、なんだかわかりにくい。基本的にjavaの知識があれば問題ないはずだった。なのに、解説を読んでも、コードを見ても何をしてるのかさっぱりわからない。
アンドロイドじゃ使う命令がまるでちがう。これホントにjavaかって思うくらいに。おまけにインターネットのリファレンスは初心者に不親切で、こちらも何かいてあるか理解できなかった。僕は勉強する手段を失った。アンドロイドアプリ開発に挫折したんだ。見あげれば雲にも手が届きそうに感じた、自信満々だったあの頃の自分はどこへ行ったんだ?
別の本を買ってみても、やる気になれなくて放置してる。頭に浮かぶのは内定を貰った企業。俺のこの程度の理解力でこの先やっていけるだろうか。IT業界には35歳定年説ってのもあるし、やはり難しいんじゃないだろうか。IT企業で働いてみた所で、落ちぶれて途中で挫折するんじゃないだろうか。僕は自信を失って、一週間位鬱憤とした気持ちでいた。ひょっとしたらその時の傷を未だに引きずってるのかもしれない。学校の勉強が身に入らない。1年生の頃は、あれほど勉強熱心だったのに。俺の心は腐ってしまったのか。
プログラマーという職業にワクワクする反面、不安の方も大きい。学校での勉強を活かせる回路設計にも興味ある。今から他の企業を探そうか迷ってる。僕はこの先どうしたらいいだろうか。
文系の情報系の学科を卒業して、おめでたい頭で何となくSEになって二年目になりました
情報系の学科ではあったけど、SEだのPGだのに就くのは男子学生のうち6割、女子学生では1割いないような感じ
で、非コミュと半ヒキと地頭の悪さで競争率の低そうなSE職についてめでたくその1割に当選
私以外は大体プログラミング楽しい~とか、そういう子ばっかりの中での1割
ちなみにプログラミングの授業は大嫌い。未だに関数がー引数がーポインタがーって意味分かんない。
授業でやったのよりよっぽど分かりやすくて、今になって初めて知ることがたくさんあった
でも別に向上心はないので「そうなんだーすごいなーへー」という感想しか浮かばない
保守開発メインだから今までの開発step数って3桁行かないし、使ったのは「=」と「if文」が精々
仕事で使うのはCでもJAVAでもないけど、そんなことも分かってなかったの?って呆れられるだろうなー
こんな私でも応用情報が余裕で取れているし、来週受ける上位資格も難なく取れそう
SEって馬鹿でもなれるしお給料いいしで良い仕事だよ!と、後輩には勧めておいた
ただし毎晩終電帰り・残業120時間超でも残業代出るのは30時間まで・仕事が終わらないなら土日は潰れて当たり前なのが気にならなければね、というのは黙っているけれど
職場結婚率は割りと低いけど、他の職場の同業種の人との結婚率はめちゃくちゃ多い。
三年以内に寿退社する人もとても多い。仕事きついし辞めたい女側と、家のことして癒してくれる子がいい男側の需要と供給が程よくマッチングしてるんだろうな。
プログラムを理解させるには?のブックマークコメントを読んでいて。
ブックマークコメントの中に、「資格」とかのコメントがいくつかあった。
既に情報処理試験とかあって、いろんなIT系資格があるのだけど、プログラマーやってる人なら誰でも感づいているとは思うが、資格など何の役にもたたない、という事で。高度情報処理資格を持っているからと言って、プログラム(その他設計やコンサル)が出来るとは限らず、逆に何の資格も持っていないのに、すばらしいプログラムをする人がいる。
まぁ、これら既存のIT系資格にある一定の目安にはなるとは思うけれども、万能では無いのも確か。昨今の不況、ITバブル崩壊で、IT系資格の資格手当が真っ先に削られたのも、記憶に新しい(弊社だけかもしれないが)。
雇う外注のソフトハウスから派遣されて来た人など、だいたい15分も話せば、どのくらい出来るか、使えるかは判断出来る。これは資格では計れないものだ。
仮に、弁護士や行政書士、医師など、士制や免許制はどうだろうか?
車の免許はどうだろう?
プログラマーはどうだろうか?
例えばトイレ。水を流すのに、最近のトイレは、リモコンでスイッチを押すと水が流れるが、あれ、プログラムだよね。
例えば炊飯器。米と水を入れて、スイッチを押せば、ご飯が炊きあがるが、これもプログラムだ。
車。ハイブリットや低燃費車が走っているが、あれは電子制御で動いている。
ロケット。アポロはファミコンにも劣るコンピュータで月まで行ったが、プログラムだ。
先日の中国の高速鉄道の事故も、ATCプログラムのミス(?)による事故だ。
先日の$oftbank携帯の通信障害は、故意に仕組まれた通信障害だった。
どこにでもプログラムは入り込んでいるし、そのプログラムによって、便利になっている反面、人命をも奪い、都市機能を麻痺させる事も出来る。
なんでだろう?
介護について考えてみよう。
ヘルパー資格や介護士とかいろんな資格が必要だが、世間一般的には、ワーキングプア、もしくはそれに近い悲鳴が聞こえてくる。
なんでだろう?
資格や免許を持っていても、それが収入や時間に反映されないいい例だと思う。
「プログラマー」「SE」と名乗るのは簡単だ。「漫画家」「小説家」と名乗るのと同じように。なんだったら、名刺の名前の上にそういう肩書きを書いておけば、「プログラマー」であり「SE」である。
漫画家・小説家と違うのは、漫画家や小説家は「売れなければただの無職」という事だ。あっという間に食えなくなる。自分、アシスタントをやっていたし。アシスタントでは、ちょっと食っていけなかった(アシスタントと作家自身は違うが、それなりに間近で見てはいるわけで)。
プログラマーやSEが個人事業種の人達だったら、その通りになるだろうけど、多分、半分以上の技術者は、どこぞの会社に所属しているサラリーマンだと思う。もちろん、これはこれでメリットがある。営業や経理・総務・庶務等が他の人に分担されている事や、会社などの福利厚生も使えるから。
逆に「金の切れ目が縁の切れ目」が使いにくいというのがある。同僚が失敗したり行方不明・自殺等というのはこの業界日常茶飯事だが、そのリカバリーは必ず誰かがやらなければならない。そして不思議な事に、それをやる人間は決まっている。失敗したマンガや小説を他の作家がリカバリーする、というのはあり得ないのにね。
資格制度・免許制度が万能とは言わないが、有効かどうかと言われると、自分には判断出来ない。しかし、前述したとおり、非常にクリティカルなモノを作る場合も有り、無資格なのはそれはどうだろうか?とも思う。
プログラマーやSEがミスすれば、都市機能は麻痺し、人が死に、医療器具が動作せず、電力が起きず、このインターネットすら動かない。TVもラジオもダメ。第1次産業以外のほとんどが停止する事になる。
そんなクリティカルな仕事なのに、この士農工商穢多非人の非人のような扱いを受けるのは何故なんだろうか?
経営者や管理者からみれば、次から次へとターゲットが蛆のように沸いて出てくる職業であり、使えるだけ使って、あとは使い捨て、という業界だし。
一度、プログラマーやSEは自分のやっている仕事がどういう事なのか、考えてみた方が良いのでは無いだろうか?
考える事は出来ると思うよ? だって、「完全動作する事を常に考えている」のだから。それが過失・故意にでも動かなかった場合、どういう事になるかは、簡単に想像出来るよね。
絵描きや小説書きや楽器演奏や作曲は、小学校の頃、学校で習うから、分かると思うんだけど、【今の現役世代以上】のプログラマーやSEは、小学校で習わなかった。この差が非常に大きいのだと思う。
どんな無能な経営者や無能な管理者だって、「自分が絵を描けない・難しい」というのは、自分で分かる。なぜなら、義務教育時代にやっていたから。ところがプログラミングやSEはどうか。やってないから分からない、わけだ。
あと、拍車をかけているのが、どこかが発表している「情報技術者何万人不足」という発表。この時点で「質」が考えられていない。そこへ、程度の低い派遣業が入り込んで、エライ事になる。そもそも派遣とは、受け側に技術が無いからその手助けに赴くものであって、人身売買では無い。先日も弊社で「組み込み系の低いレイヤーの部分を作るC言語(かなりアセンブラ寄り)が出来る技術者」を要求したのに、実際ソフトハウスから派遣されてきた人間は「C言語のポインタという概念も知らない」技術者だった(どうやら、Windowsの統合開発環境上においてC#だったら使える、というレベルだったようだ)。もちろん、そんな人員を使えるわけ無いのでその場でお引き取りを願った。こういう、「質」や「ベクトル」に関係無く「頭数」だけでどうにかなると思っている奴らが非常に多い。日本の(少なくとも情報系)派遣や客先常駐の考え方は、間違っていると思う。
そう考えると、ある一定の基準として、質やベクトルを明記する必要はあるのかもしれない、と思う。それが労働時間や賃金に反映されるかどうかは分からないが。
| 日記途中だけど緊急事態><、一番下まで呼んで誰か助けてください>< | |
|---|---|
今日から夏休みが始まったのでプログラミングを勉強しようと思う。
3日坊主にならないようにがんばる。
去年の二の舞にならないようにモチベを維持するために日記を書く。
プログラミングができたらかっこいい!
サークルも友達もいなくさびしい夏休みを有意義にしようとするため
都内の大学に通う2年生。
前述のとおりサークルもやってない、友達もいない、典型的なインドアオタク。
でも顔はイケメン。
プログラミングは3年前にJavascriptとHTMLをネトゲでの戦いを整形するために覚えた程度。ほとんど忘れてる。
C言語を大学で習ったが「苦しんで覚えるC言語」というサイトにのっている範囲しかやってない。
一応プログラミングの知識は少しはある。
やっぱり、目標はあったほうがいい。
うーん、やっぱり完全に一致みたいな情報網羅サイトを作ってみようと思う。
色々な技術が手に入りそうだし。
色々な言語も学べそう
| どんなサイトにするか? | 大規模情報サイト |
|---|---|
| 学ぶ言語 | HTML,PHP,Ruby,Javascript,CSS |
とりあえずプログラミングにはエディタとアップロードするやつが必要なので色々いれてみた。
| エディタ | |
|---|---|
| Netbeans | 重い、すごく重い |
| phpエディタ | phpしか編集できない |
| terapad | 色分けが出来ない |
| K2Editor | これが一番最強。でもphpに対応してない |
| HIDEMARU4000YEN | win7じゃ使えなかった。 |
| アップするやつ | |
| FileZilla | 使いづらい、糞 |
| ALFTP | これが一番しっくりきた |
というわけで色々悩んだ結果、基本K2Editor、php編集はNetbeans,アップロードはALFTPにした。
phpとhtmlとrubyやjavascript対応してて色分けも出来るwin7で動くエディタないのが残念
実は1ヶ月前にプログラミングを勉強しようと思ってサーバーは借りてた。
ググったり、2chに質問したりして悩んで悩んでロリポップのチカッパプランを借りる事にした。
http://lolipop.jp/service/plan-chicappa/
| 初期費用 | ¥1,575 |
| 料金(6ヶ月) | ¥3,150 |
| (1ヶ月あたり) | ¥525 |
| 合計金額 | ¥4,725 |
しかしながら無料のレンタルさばより色々といじれて、なにより「お金はもう払った、使わないともったいない」という意識を持つ事でだらけないで出来ると思う。
まず師匠の日記をみてみる。HTMLとCSSからはじめたと書いてあるが、多分これからはじめると飽きる。
なのでWebの情報を自動で集めてくれる(これをスクレイピングという)BOTを作ろうと思う。
日記を読むとMechaniseというのを使ってるらしい。
そうするとRuby jamというもので動いているものらしく、Ruby jamはRubyで動いている。
Rubyは鯖にはいっているがどうやらjamのほうははいっていないらしくMechaniseもはいっていない。ということで
ロリポップの解説ページをみてPuTTyていうのをいれてSSH操作ってやつをしてた。
http://d.hatna.ne.jp/taramonera/20100601/1275388515
このページをみながらやってたら
% vi ~/.cshrc
これを実行して
setenv RUBYLIB /home/アカウント名/lib
setenv GEM_HOME /home/アカウント名/lib/rubygems
:wqで保存終了らしいんだけど、入力したところで終われない><
教えて得ろい人><
RubyのSymbolと文字列の違いを研究室の輪講用に書いたのですが,折角なので公開したいと思います.
元々学部生に対する輪講用に書いた物なので,若干上から目線ですがご了承ください.
文字列とSymbolはよく似ています.プログラマから見ればどちらも文字列です.違いを一言で説明すると『プログラムが扱う』文字列か,『プログラマが見る』文字列かの違いです.例えば変数名は『文字列』ですが,rubyのオブジェクトである『文字列』ではないですよね?
例えば,今あなたがC言語でお絵描きライブラリを作っているとしましょう.その中に,色で塗りつぶすfillという関数があり,色を青・赤・緑の3色から選べ,fillの引数でそれを指定できるとしましょう.
fillの引数の設定方法として一番単純なのが,0を青,1を赤,2を緑として,0〜2で選択させる方法でしょう.しかし,それでは,どの数値が何色か覚えないといけないし,fill関数を知らない人から見れば,どういう意味の引数かすらさっぱり分かりません.
ではどうするかと言えば,普通はBLUE = 0, RED = 1, GREEN = 2と適当に定数を設定して,その定数を引数で指定させますよね.
こうして,fill関数の引数が意味の無い数値から意味のある文字列に変わったことによってプログラムが分かりやすい物となります.さて,ここで注意してほしいのは,ここで言う文字列はプログラムが扱うオブジェクトとしての文字列では無いということです.fill関数の引数として,"BLUE","RED", "GREEN"などとC言語の文字列を渡すということは普通しませんよね.それは,ここで言う文字列は,あくまでプログラマがプログラムコードを分かりやすくするために必要な文字列であって,プログラムがオブジェクトとして扱う(例えば,長さを求めるとかする)文字列ではないからです.
分かってきたでしょうか?
プログラムコード上では(つまりプログラマから見れば)どちらも同じ文字列(文字の列という意味で)ですが,実際に動くプログラムから見れば単なる数値と本物の文字列という大きな違いです.結局,fill関数の引数の具体的な値は何でもいいわけです.プログラマから見て文字列であればそれだけでよく,プログラムが動くときの実際のその中身は何でもいいわけです.これのために存在するのが,Symbolであり,:fooとひとたびSymbolを作成すれば:fooの実態は適当な数値となります.(この数値がいくらかなんていうことはもちろん気にする必要はありません)
そして,もちろん同じプログラム上では:foo == :fooはちゃんと成り立ちます.もうここまでくれば,Hashのkeyとして文字列でなくSymbolを使う理由が分かりますね.Hashのkeyはあくまで,プログラマが見る(プログラムコードを分かりやすくするための)文字列であってプログラムが扱うオブジェクトとしての文字列では無くて,keyの実際の値は何でもいい,からですね.(特別な場合を除いて)Hashのkeyに対してrubyのStringのメソッドを使うなんてことは無いですよね.
しかし,他の軽量言語ではSymbolなどなくHashのkeyとして普通に文字列を使うことが多いです.では,なぜrubyだけSymbolを使うのでしょうか.
その答えは一言でいうと,rubyの(プログラムコード上に直接書かれた,つまりリテラルの)文字列は他の言語と違いimmutable(不変)でない,からです.実際,pythonやjavascriptの文字列(リテラル)は破壊的に変更することはできませんが,rubyの文字列は破壊的に変更することができます. ('abc'.concat('d')の様に)
これがどういう違いを生むかというと,コード上に直接現れる文字列がimmutable(不変)であるならば,実行時に一つだけそのオブジェクトを作成し,後はそれを使いまわすという最適化ができます.
そうした時,Hashのkeyの様なプログラマから見た文字列というのは,プログラムコード上のリテラルとして現れるわけですが,これらは実行時に一つだけオブジェクトが作成され(特にコード上に現れる同じ文字列は全て一つのオブジェクトにまとめると),それらの比較はそれらに対する参照(そしてこれは大抵メモリのアドレスなど単なる数値)の比較で済むので,結局Symbolと同じ様な働きをするわけです.
本当はプログラマが見るためだけの文字列だけど,それをオブジェクトとしての文字列としても,Symbolと同じ様な働き,パフォーマンスが得られるならば,別にオブジェクトとしての文字列であってもいいわけです.
繰り返しになりますが,プログラマが見るためだけの文字列は,その中身・実態は何でもいいわけですが,その実態がオブジェクトとしての文字列でも十分なパフォーマンスが得られるならば,別にオブジェクトとしての文字列でもいいわけです.
さて,rubyに話を戻しますと,rubyはコード上に現れる文字列であっても,実行時にそのコードを通る度に毎回新たな文字列オブジェクトを作成します.
(以下のプログラムを動かすことで確認できる.)
def foo 'foo'.object_id end p foo, foo
つまり,rubyでは文字列が可変であるため,先に述べたような最適化ができない(または難しい)ので毎回新たな文字列オブジェクトが作成されるのです.
こうなると,先ほどの話とはうってかわって,プログラマが見る文字列はその実態は何でもいいのに,それを文字列リテラル(rubyのオブジェクトとしての文字列)にしてしまうと,毎回毎回文字列オブジェクトが作成されてしまうという非常にばかばかしい状況になってしまいます.我々はそれらの文字列オブジェクトに文字列としての操作は一切施さないのにも関わらず,です.
こういうわけで,rubyではプログラマが見るためだけの文字列にSymbolというruby特有のものを使うのです.
もちろん,プログラマが見るためだけの文字列を全て定数として(そしてもちろん中身は適当な値で)定義しても構わないわけですが,Hashのkeyとかで数多くのプログラマが見るためだけの文字列が現れることを考えると,とてもじゃないですけどそんなことは面倒でやってられないですよね.ですので,実行時に自動で適当な値にしてくれるSymbolというものが存在するのです.
以上で,Symbolについての説明を終えます.以下は蛇足です.
最初の方で出てきたfill関数をrubyで実装しようとしたとき,青・赤・緑の各色はその実際の値はなんでもいいのでrubyのSymbolを使って:blue, :red, :greenとしてもいいのですが,ライブラリとかでは大抵ちゃんと定数として定義されていることが多いです.
これは恐らく,定数として明示的に定義することで値の存在を明示でき,ドキュメント化の際にも役立つことによっているのでしょう.
しかし,あくまでこれは外部に公開するようなライブラリでの話であって,自分が使うちょっとしたプログラムならこういう場面でも精力的にSymbolを使っていってもいいと思います.ちなみに,僕ならSymbolを使います.
Symbolだと定義もいりませんし,定数は大文字ですから打つのが面倒ですし,あまりソースに大文字が入ると見た目がすっきりしません(主観).
Symbolは非常に便利なものですので,その意義・用途を十分に理解して,Hashのkeyにとどまらず様々な所で使えるようになりましょう.
とあるサイトでちまちまやっていたが今年の4月くらいに無料版が閉鎖
有料版のみになったのを機に何もやらなくなった
もともと経済、社会科学の学部に行きたかったということもあり、簿記2級に挑戦
本を買って半分くらいでやめた(この間に二度もの試験が行われた)
今の俺にとってもっとも身近な職業と言っていいだろうと思い、本を買う
とりあえずでC言語を選んだはいいがコンパイラがうまくダウンロードできずにやめた
うん、なにをやっても駄目だ
世の中で成功している人はみんな自分の力を見せつけて就職などして「働いて」いるというのに
俺のやっていることはまるでどんぐりの背比べであって、
いまさらに「働かせて」もらうための努力をしている
俺はだれにピックアップされたいんだろう
それによって付加価値の上げ方は変わってくるんだろうなと思う
こんなクズだけどそれでもなにかしら成功したいだとか、毎晩のように夢をほざいている
なんにもわからない
したくなってきた。なんかこう、例の「バグ放置なだけで犯罪騒動」で。
#include <stdio.h> int main(int *argc[]){ double a=1; double b=0; printf("print %f * %f = %f",a, b, a/b); return 0; }
だが俺には才能がないのでなげやり。なんというヘタレ。というかc言語文法チェックをcodepadでやろうと思ったらサイトにつながんない…。たぶんどっかでヘタこいててコンパイラ通らないと思う。
追記:Floating point exception食らってたので修正。
こうした言語の話ってさ、いつもいつも狂信者みたいな人とか、単に引っ掻き回すだけの人が現れて
「高級言語なら簡単なことが簡単にできる」とドヤ顔で言うんだよな。
「簡単なことを簡単に書くために、高度な言語サポートがある」といって「簡単な事では問題が起こりません」って言うんだ。
そして、メンテナンス性とかの話をしてたはずなのに、「言語がカバーしてくれる」とか言い出す。
んなわけないじゃん・・・・ドキュメントの不備ひとつで、どんな言語だろうが難攻不落の砦になったりするんだよ。
それは君が、高級言語の機能を活かした質の良いコードを見たことがないだけだと思うよ。
そうしたコードは、たとえドキュメントが皆無でも実装者の意図を推測するのは難しくないし、メンテナンス性が高く、機能追加も容易だ。
アセンブラでも設計さえ確かなら問題ない。うん、そうだね。これは単純に比較の問題だ。アセンブラで堅牢さを実現できる設計なら、高級言語を使えばさらに堅牢に作れる。したがって、特に理由がない限り、アセンブラやC言語を使う理由はない。
ましてや、常に完璧な設計をすることは不可能だ。また、「完璧」な設計は要求変更に弱い。ならば、なおさら堅牢性の低い言語を使って実装する理由はない。
人間は必ずミスをするものだ、という前提を無視した開発手法は信用するに値しない。完全な設計は、存在しない。規模が大きくなればなるほど、そうしたナイーブな前提は容易に崩壊する。
つまり、「生産性の高い言語」は、人間の不注意やミスを言語処理系の側で防止したり、影響範囲を最小限にしてくれるということ。
「○○はC言語でもできる」ではなくて、ライブラリやツールがどれだけ整備されているか、それらがどれだけ容易に導入できるか、という点に注目してみるといい。
Cで開発してるチームなら絶対に持っている、自前のライブラリ群や
それらが十分に品質が高く、容易に利用できるものならいいんじゃないかな。
Javaの場合、ユーザのフィードバックにより成熟したライブラリやツール群を、多くの場合無料で利用できるのがメリットと言える。
人間は必ずミスをするものだ、という前提を無視した開発手法は信用するに値しない。完全な設計は、存在しない。規模が大きくなればなるほど、そうしたナイーブな前提は容易に崩壊する。
あなたは、その解決を「生産性が高い言語」だけでしか話していないけれどね。
「○○はC言語でもできる」ではなくて、ライブラリやツールがどれだけ整備されているか、それらがどれだけ容易に導入できるか、という点に注目してみるといい。
Cで開発してるチームなら絶対に持っている、自前のライブラリ群や
関係ない。
生産性が高いと言われてる言語で行われた、ゴミみたいなプロジェクトは沢山ある。
生産性の高さが生かせると言うのは、設計からしてきちんと考えられていると言うことで、そういうチームが開発するなら言語は関係ない。
人間は必ずミスをするものだ、という前提を無視した開発手法は信用するに値しない。完全な設計は、存在しない。規模が大きくなればなるほど、そうしたナイーブな前提は容易に崩壊する。
まさかだけど、「Cで1からすべて書く」ことと「Javaの開発済みコード群を使う」ことを比較してたりとか、
「Cで行うテキストエディタとコマンドラインコンパイラのみの開発」と「Javaで行う高機能開発環境での開発」を比較してたりとか
本題とはあまり関係がないけど、そういうことも開発生産性の高さに貢献しているのも事実。
「○○はC言語でもできる」ではなくて、ライブラリやツールがどれだけ整備されているか、それらがどれだけ容易に導入できるか、という点に注目してみるといい。
最近流行りのipadとかandroid3.0とかで使うGLSLはまるっきりC言語で、尚且つこれから必要とされる分野だけどな。
最近流行りのipadとかandroid3.0とかで使うGLSLはまるっきりC言語で、尚且つこれから必要とされる分野だけどな。
横だが、アホくさい。
というか、C言語で書かれてメンテ不能に陥ったガラケーが、Javaで書かれたAndroidに駆逐されている点について、誰も指摘していないのが不思議。
Javaで管理できるチーム、もしくは個人なら、Cでも管理できる。
あとな、ガラケーの開発がCって、それどこの開発をさしてんの?
C言語にこだわるのは良くない。けど、パフォーマンスを上げ、他社のプロダクトに勝つタメにはCは必須。ネットワーク、描画系はjavaの何倍も処理速度が変わるのを忘れてはならない。
既に本人から突っ込み(「Javaの方が早くなるケースは多い」)が入ってるけど、たとえ多少遅くなったり、それを補うために値段の高いチップを積まなくてはならなくなったとしても、プロダクトの開発生産性が上がることで、総合的には製品力の強化に繋がる場合だってあるわけでだな。
というか、C言語で書かれてメンテ不能に陥ったガラケーが、Javaで書かれたAndroidに駆逐されている点について、誰も指摘していないのが不思議。
カーネルコミッターでも、処理系実装者でも無さそうな人達が、「Cは滅びず!」と叫んでいる不思議な光景。
http://b.hatena.ne.jp/entry/shyouhei.tumblr.com/post/5545216280/c
http://b.hatena.ne.jp/entry/shyouhei.tumblr.com/post/5603961294/c
Linuxカーネル(せめてPOSIX互換品)を手前が思う言語にさっさと移植すれ。さすればCを滅ぼせん。(ちなみに高機能アセンブラの最適解がCとは俺も思っちゃいない。)
最後のCの牙城、Linux(UNIX)をJavaなり何なりベターな言語にさくっと移植してくれ。それともgoogleビッグブラザー様がクラウドでUNIX鯖を駆逐してくれるのを祈ってればいいのか?
JavaもC#も,それにPerlもRubyもPythonも,実行環境自体はCで書かれている件。コンピューターが「シリコンを基材としたチューリングマシン」であるかぎり,アセンブラとCは滅びない。
fooのintへのキャストがtrue/falseを返すというように、fooのクラス仕様が決められてるんなら、
そしてboolへのキャストが未定義だったり、また違う意味なのなら
if (foo) {
ではなく
if (foo == true) {
って書かざるをえないだろう。嫌いとか好きとかの問題ではないと思う。
class { public: operator bool() { std::cout << "xxx\n"; return true; } //*1 operator int() { std::cout << "yyy\n"; return true; } //*2 } foo;
があったときに、「if (!foo)」だったら*1が、「if (foo == false)」だったら*2が実行されるような処理系がある。
最新のVC++だと後者は曖昧だってエラー出るね(たぶんC++だと「trueは1でfalseは0」なんかではなくあくまでもtrueとfalseなんだ)。
なんにせよ演算子や条件式などに関連する暗黙のキャストはわかりづらく、そしてそんなのを利用したコードはきっとバグる。
だから
というのが本当なら、==trueがどうこうなんて些細な問題はおいておいて、fooを暗黙のうちにintにキャストしたりboolにキャストしたりして使っているという危険な部分をまずなんとかすべきだろう。
古いC言語風に書けばこんな感じ。
#define FALSE 0 #define TRUE (!FALSE)確かに、実際に値を表示させてみると、昔のVC6だと「1」という結果が出てくるし、VB6だと「-1」という結果が出てくる。これ、当時混乱の元だったんだよね。
VC6とか関係なくてC言語の仕様でそうなんだが、それをわかってないとすればやばい。
個人的には
if( foo != FALSE ){
も十分きもちわるいので
if (foo) { ... }
if (!foo) { ... }
にしてほしい。
まぁ、タイトルの「レガシープログラマ」とは私の事なんですけどね。
if( foo == TRUE ){
という判定文をよく見かける(fooはいろんなオブジェクトだと思ってほしい)。
個人的には、この書き方、嫌いなんだよね。
if( foo ){
か
if( foo != FALSE ){
と書いて欲しいわけよ。とにかく「TRUEか?」という判定にはして欲しくないわけです。
で、なんでこう書くの?と外注や若い連中に聞いたら、「TUREは1ですから」と必ず答える(断言する)。
あ、あれ???自分は「TRUEはFALSEでは無い。確定しているのはFALSE=0という事だけ」だとずっと思っていたんですわ。
古いC言語風に書けばこんな感じ。
#define FALSE 0 #define TRUE (!FALSE)
確かに、実際に値を表示させてみると、昔のVC6だと「1」という結果が出てくるし、VB6だと「-1」という結果が出てくる。これ、当時混乱の元だったんだよね。
新しいC++や規格ではBOOL型というのがきちんと定義されたと思うけど、製品寿命が20年とかいう私の職場では、DOSやC(K&R)、アセンブラは現役だし、プラットフォームもなにもWindowsに限らない。組み込みマイコンも使う(うちのところはVxWOKSだが)し、UNIXやLINUXも使う。
もちろん、マネージドC++(.netFramework)やC#、JAVA、Parlも私は使うし。でも、どのプラットフォームでどの言語になっても「TRUEか?」という判定文は使ってこなかった。
で、試しに、VC2008のincludeフォルダをgrepしてみたら、
#define TRUE 1
あ、ほんとに「1」だ。
typedef bool int
なんて見かけるから、やろうと思えば「5」でも何でも数字が入ってしまうわけですよ。そこで「== TRUE」なんてやられたら、絶対に成立しないわけで。バグの温床になるんじゃないかなー、と思ってかたくなに前述の姿勢を持っていたわけです。
今(最近の)言語はきちんと「BOOL」型(またはboolという名のクラス)を定義されていて、コンパイルエラーになるか、自動的に補正してもらえるのかもしれないけど、ちょっと気持ち悪い。
最近、ちょくちょく外注や若い連中と意見や話が合わず、「ああ、俺ってレガシープログラマなんだな」と思う事が多くなった今日この頃。ネットワークに平気でリトルエンディアンのデータを流すとか、勘弁して欲しい。LANアナライザでデータが見にくくてしょうが無い。
こんにちは、プログラミングをしているただの女子です。私は学歴も知識もありませんしブスですが、staticに関してはプロフェッショナル。今回は、モテるstatic女子力を磨くための4つの心得を皆さんにお教えしたいと思います。
あえてnewを使ってインスタンスを生成するようにしましょう。そして飲み会の場で好みの男がいたら話しかけ、わざとらしくパソコンを出してインスタンス生成してみましょう。そして「あ~ん! この言語本当にマジでチョームカつくんですけどぉぉお~!」と言って、男に「どうしたの?」と言わせましょう。言わせたらもう大成功。「プログラミングとか詳しくなくてぇ~! ずっとこのオブジェクト指向言語っていうやつ使ってるんですけどぉ~しっくりこないんですよぉ〜!いちいちnewって書かないといけなくて使いにくいんですぅ~! ぷんぷくり~ん(怒)」と言いましょう。だいたいの男はインスタンスを生成せずに、すべてstaticな関数でプログラムを書く習性があるので、newなんてキーワードは使っていないはずです。
そこで男が「static関数使わないの?」と言ってくるはず(言ってこない空気が読めない男はその時点でガン無視OK)。そう言われたらあなたは「なんかなんかぁ~!最近SQLが人気なんでしょー!? あれってどうなんですかぁ? 実行時に一行ずつコンパイルするスクリプト言語と違って、もっとも高級な言語なんでしょ?でもなんかよくわかんなーい。私かわいそーなコ★」と返します。すると男は「あぁあいつね、あいつ俺の友達なんだ、イイヤツだろ」といってくるので、そのまま調子に乗らせておきましょう。
「ファイル内ローカル関数」や「関数自体で状態を持つ」ことなどができる「static」をとにかく無闇につかうと、一般のstatic男性は「この子はstaticを愛してるんだなぁ」や「え?こんなところにもstatic使えるの?なにこれ?」と思ってくれます。インターネット上ではそのような〇〇おじさんや、××おじさんなど、変なひとがいるので、よいこの皆さんは関わらないようにしましょう。
飲み会などで男が女性に話すことといえばstaticの話やVBの話ばかり。よって、女性にとってどうでもいい話ばかりです。でもそこで適当に「へぇーそうなんですかぁ~?」とか「よくわかんないですけどすごいんですねぇ」と返してしまうと、さすがの男も「この女ダメだな」と気がついてしまいます。ダメ女だとバレたら終わりです。そこは無意味にテンションをあげて、「えー! なにそれ!? 知りたい知りたーい♪」と言っておくのが正解。たとえ興味がない話題でも、テンションと積極性でその場を乗り切りましょう。積極的に話を聞いてくれる女性に男は弱いのです。
いろいろと話を聞いたあと、「staticな関数を使えば、newって書かなくていいんですねー。覚えたぞぉ! メモメモ!」とコメントすればパーフェクト。続けて頭に指をさしてくるくる回しつつ「キュンキュンキュン! キュンキュンキュン!」と言って、「どうしたの?」と男に言わせるのもアリ。そこで「うるせぇハゲ」と言えば女子力アップ! そこでまた男は「オブジェクト指向ってしっくりこないんですよね〜オブジェクト指向って(ry」と連呼して壊れだすので、放置しておきましょう。
男とプログラミングするときは、とにかく「あーん! 私インスタンス生成ないんですよねぇ~(悲)」と言いましょう。するとほぼ100パーセント「え?インスタンスなんて生成する必要ないじゃん。static理解せずにわざわざインスタンス宣言してるやつなんて笑っちゃうよね〜」といわれるので、(こいつなんなの・・・)と心のなかで思うだけにして口には出さないようにしましょう。ここでまた100パーセント「どうしたの?」と聞かれるので、うつむいて3~5秒ほど間をおいてからボソッとこう言います。「そうですよね〜staticおじさんカッコイイ〜」と心にもないお世辞を言っておきましょう。
その瞬間、あなたの女子力がアップします。きっと男は「なんて優しい天使のようなコなんだろう! 絶対にゲットしてやるぞ! コイツは俺の女だ!」と心のなかで誓い、あなたに惚れ込むはずです。そういうやつより上にのし上がったら、そんなことは忘れて好きなだけインスタンスを生成して大丈夫です。「インスタンスを生成できないんじゃなかったっけ?」と言われたら「は?」とか「うざい」や「おまえは一生C言語でもかいてろ」と言っておけばOKです。
●JAVA J2EEやらJ2SEやら色々あって良く分からない。 オブジェクト指向言語ということだけは知っている。 クラスしかりの設計や、型の変換/比較が面倒くさいので続ける気が起きない。 ●Perl ちょっと書き方間違っただけですぐに「Internal Server Error」になるので飽きる。 perlの案件があるんだけど…と聞かれると「いやー作れるんですけど、しばらく触ってないから」とか言って逃げる。 ●Ruby 使ってるやつの大半はナルシスト。「はぁ、Rubyのコードふつくしい…」とか言ってるのを見ると虫酸が走る。 言語作者もPHPをすぐdisるので嫌い。案件少ないくせに調子乗ってるグループに属する。 ●C言語 LSIC試食版で遊んでみるも、黒いコンソール画面に文字が出るだけなので飽きる。 ガリガリ書ける人は天才に見える。 ●Javascript 変数名の頭に$をつけてよくエラー起こしてしまう言語。 「OFFにしてるブラウザも多いっすよ?」を武器に戦うもAJAXブームに押され仕方なく書いてる。 ●Python PHPより歴史が古いのに、なぜか新参者という扱いになっている。