はてなキーワード: javaとは
いや、bashと組み合わせるなら、それこそrubyとかperl、pythonが簡単だよ。
result = `ls -l`
意見を聞かせて欲しい。
なるほど確かに教養としてPerlは知っておいた方が良いが、より優れた言語がある。
そして、推される筆頭はRubyだろうか。
そう思ってきた。
ブラウザで使うなら選択の余地はないので、あの言語は除外しよう。
で、未経験者でも聞いたことの有りそうなこのあたりはこの辺り。
C, C++, C#、 Java、Perl、PHP、Ruby、Python。
Hello, World!を見比べたら
「publicてなに?staticってなに?voidってなに? mainはメインなんだろうけど []ってなに?argsってなに?なんでint main?str mainとかあかんの?たまに*印ついてるのなに?全部意味が分からんし解説もなしにおまじないって言って飛ばしてるケースも多いしなんか詳しく言ってるっぽいのもあるけどその分かる人だけが分かるような言い方やめて私のライフはもう0よ!なんで一言「やぁ!」っていうのにどれだけのことを理解せなあかんのよ!」
となるのでスクリプト言語が残るだろう。
Webでしか使わない言語は関数名もキモイから除外しておくと、Perl、Ruby、Pythonの三択となる。
私がPerlを選んだ当時は、Rubyは信者が先鋭的で他人を攻撃しないと気が済まないという風評を目にしたので外した。
そしてPythonはまだ日本では弱いらしい一方、Perlははてなやmixi、Amazonでまで使われていて、
恰幅のいいヒゲのおっさん他、情報を発信する人の量・質ともに非常に高い様子だったから、Perlを選んだ。
ここから本題。
あれから数年。
新たなものを学ぼうと思い、Pythonは昔バージョンの違いでなかなか動かせず、またPython2と3で随分変わってしまうようなので、
Rubyを始めてみようと思ったんだ。
Next Perlというだけあって馴染みやすい書き方も多く、洗練されてるなってすごく関心した。
学ぶこと自体が目的なので、何をしたいって、何もないので、とりあえずPerlでやってることを全て移植してみることから始めた。
Net::FTPSSL
うごかない。
まぁそんなこともあるよね。
うごかない。
まぁPerlでもActive Directoryに繋ぐのは随分苦労したしな・・・
WWW::Mechanize:
うごかない。
CentOS 6に入ってるRubyではバージョンが違って動かないって・・・
上手くいかないのは仕方ないよ。でもmechanize、昔動いてたのに今動かないって何なの?
モジュールクリックしたら作者のサイトに飛ぶし、マニュアルの書き方も作者次第でバラバラ…読みづらい…
CPANみたいにちゃんとやってよ。
ネット上の情報もバージョンが違って動かないことも多々あるようだ。Perlなら5.8で書いたものが5.20になっても当たり前に動くよ?
CentOS 6とFedora 20のそれぞれで出てくるエラーも違うし、Perlの下地があっても正直キツイ。
洗練されていいな!って思った分余計に残念だ。
こんなバージョン違えば動かなくて当たり前で、Rail抜いたら情報も半減するような言語、本当に初心者向けでいいの?
使える人が使える用途で使えるバージョンを選んで使うとステキ。そんなん初心者向けじゃねぇぇぇっぇ。
いや、言語の学びやすさとこれとは別問題なんだろうけど、Perlの安定度と情報の量・質・多彩さで比較になってない。
言語そのものはRubyの方が上でも、使えない道具は劣る道具じゃんよ。
「身の回りの雑多な仕事を片付ける」って用途の方が特殊なんだろうか。
Rubyは良い言語だって思ってた。しかし、分からなくなってしまった。
教えてくれ。
キリシア様に届けていい言語はなんなんだ?
s/キリシア/キシリア/
でもたいした議論もないということは、概ね合ってるのだろうか。
あと、perldocの情報量もすごいと思う。ある程度Perlが使えるようになってからじゃないと読むのはキツイけど、
他言語で書籍じゃなしにあれだけ詳しく書かれたものってあるかな?
kiyo_hiko型が動的なのが耐えられなくて結局Java
OS:Windows7 Home Premium 64bit
HDD:750GB
グラボ:オンボ
サウンド:DAAM SD
7月終わりにアップデートしてから不具合が生じて一時期は強制シャットダウンしたりセーフモード起動の繰り返しだった。
8月初めに修正パッチ含むウィンドウズアップデートをした。その時8月13日にアプデ禁止されたファイルはインストールしてない。
そこからはずっと不具合連発で起動直後「スタートメニュー」が表示されなくなって、マウスは動くものの、ダブルクリックのちフリーズして画面が白くなりフリーズ。
コマンドブロンプトからスタートアップ修復やサービス等々の停止・無効化、システム復元などを繰り返してひとまず音声が出る程度にまで回復。
しかし、システム復元などは失敗し、インターネットを開くと高確率でフリーズ。フリーズしなくても一定時間経つとフリーズ、強制終了。
その後7月アプデ前後にインストールしたJAVAなどのブラウザ系スクリプトを続々ダウングレードしたりしたが変わらなかった。
また、PCSX2やPCゲーム(CoDなど)も起動直後にフリーズが頻発するようになった。
原因はこれじゃない。
そう思った時、一つのことが頭に浮かんだ。
ということで7月10日アプデ分までを残して全てのウィンドウズアップデートファイル(適正化ファイル)を軒並みアンインストールした。
そうすると、今のところフリーズは起こってない。
恐らくウィンドウズアップデートでの不具合が今回の頻発するフリーズの原因だったのだろう。
とりあえず自動アプデを無効にし、システム構成も無事終わらせ胸を撫で下ろすに至った。
1989年に東芝が発売したDynabook J-3100SSが世界で最初のノートパソコンである。すぐにNECが続き、1990年代になると、IBMとアップルが参入、東芝、アップル、IBMが次々に新機能を加え、1995年頃には、現在のノートパソコンの標準的な機能の原型が完成した。
1990年代中頃から、国産各社が参入、先行各社は新機種シリーズを展開した。また、インターネットが普及し、モバイルコンピューティングが盛んになった。それにより、ノートパソコンが急速に使われるようになり、2000年にはノートパソコンの出荷台数はデスクトップパソコンを追い越した。
2000年代を通して、小型化、軽量化、高機能化、省電力化が進んだ。2000年代末には、iPadで代表される新しい形態の携帯機器が出現し、ノートパソコンと競合するようになってきた。
とかくパソコンの分野では日本企業の低迷が指摘されるが、ノートパソコンの分野では、東芝に代表される日本企業が業界を先導したきたのである。少なくとも1990年代まではそうであった。ところが、2000年代になると、ノートパソコンがパソコンの主流になったのに、日本企業の優位性は低下してきた。それを挽回する手段を講じるべきなのか、あるいは陳腐化したこの分野は中国等に任せて、日本は新分野を開拓すべきなのだろうか。
ラップトップとは「膝の上」の意味であるが、デスクトップパソコンより小さく、ノートパソコンよりも大きいサイズのパソコンを指す。携帯可能であるから、これを含めてノートパソコンということもあり、その境界は厳密なものではない。
・1984年 NEC PC-8401A
(PC-8401Aのほうが早いのだが、電池やフロッピーなどが外付けなため、一般にはT-1100が世界初で、PC-98LTがNEC初だとされている)。
T-1100の仕様を示す
・CPU:80C86(16Bits)、5MHz
・メモリ:最大512KB
・外部記憶:3.5インチFDD内蔵(720KB) 。ラップトップでは世界初のHDD内蔵
・サイズ:310(W)×300(D)×67(H),4kg
最初のノートパソコンは1989年に、世界に先駆けて日本で出現した。
発表はPC-286NOTEのほうが先だったが、出荷はJ-3100のほうが早く、しかもヒットしたので、一般的にJ-3100を最初のノートパソコンだとしている。なお、PC-9801Nはやや遅れて出荷されたが、これにより「ノートパソコン」という用語が広まったといわれている。
J-3100SSの仕様を示す
・CPU:80C86(16Bits)、5MHz
・メモリ:最大3.5MB(標準1.5MB)
・外部記憶:3.5インチFDD内蔵(720KB/1.2MB)
・電源リジューム機能の提供 ・ジャストシステムATOK7のROM搭載 ・AT互換機
・サイズ:310(W)×254(D)×44(H),2.7kg)
1990年代に入ると、IBMとアップルがノートパソコンに参入した。1990年代前半の特徴のある機種を列挙する。1995年頃には、現在のノートパソコンの標準的な機能の原型が完成したといえよう。
・1990年 東芝 DynaBook J-3100 SS02E 世界初のHDD搭載
・1991年 NEC PC-9801NC 世界初のTFT液晶16色、TVチューナー付
・1991年 アップル PowerBook 170 世界初のパームレストとトラックボール
・1991年 IBM PS/55note 5523-S IBM初のノート。VGA解像度640x480(他社は640x400だった)
・1992年 東芝 DynaBook 486-XS 世界初のTFT液晶フルカラーVGA
・1992年 東芝 DynaBook EZ ワープロ、表計算などアプリケーションをROM内蔵
・1992年 IBM ThinkPad 700C 当時最大級の10.4インチTFTカラー液晶。世界初のトラックポイント装備
・1992年 IBM ThinkPad 220 世界初のサブノート。重さ 1kg、単三乾電池で駆動
・1994年 東芝 DynaBook SS433 世界初のFDD内蔵B5版サブノート
・1994年 IBM ThinkPad 755 内蔵型CD-ROMドライブ搭載
・1994年 アップル PowerBook 520 世界初のトラックパッド採用
1990年後半には、国産各社がノートパソコン分野に参入、先行各社も新シリーズを展開して、現在でもポピュラーな機種名が出揃った。ノート型は、デスクトップ型に比べて割高であったが、モバイル環境での利用が盛んになったこと、オフィスや家庭での占有面積が小さいことから人気が高まり、2000年にはノートパソコンがデスクトップパソコンの出荷台数を上回る状況になった。
・1995年 富士通 FMV-BIBLO リチウム電池採用。プレインストールソフト多数
・1996年 IBM ThinkPad 560 2kg以下の軽量
・1996年 東芝 Libretto 20 世界最小・最軽量(840g)のミニノート
・1997年 ソニー VAIO NOTE 505 B5サイズモバイルノート
・1997年 パナソニック LetsNote AL-N2 光学式トラックボール搭載
・1997年 三菱電気 Pedion A4で当時画期的最軽量(1.45kg)最薄(18mm)
2000年代になると、パソコンの主流はノートパソコンになり、パソコンでの関心はノートパソコンが主になる。ノートパソコンは、本質的にモバイル環境での利用である。そのための軽量化や小型化競争は1990年代後半から活発であったが、2000年代になると、長時間充電せずに利用できること、立ち上がりの時間が短いこと、堅牢性や耐久性に優れていること、さらにはデザインへの要求など、多様な品質での競争になってきた。
筺体の軽量化
軽量な素材を用いながら堅牢性を高めるため、ハニカム構造など設計上の工夫が進んだ。
パソコンを使用しない状態での省電力技術であるスリープ/スタンバイ機能は従来からあったが、インテルによるディープ・パワー・ダウン・テクノロジやASUSTeK ComputerによるExpress Gateなど、新方式が開発された。
SSD(Flash Solid State Drive)
SSDは、フラッシュメモリを発展させた記憶媒体で、HDD(磁気ディスク)と比較して、機械部分がないため、小型化、省電力化、高性能化が重要なノートパソコンに適している。しかし高価格である。2004年頃から注目されるようになり、2000年代後半には高級機に採用されるようになった。
ノートパソコンの製造には、小型化や低電力化などの高度なな技術が求められので、日本企業に適した分野であった。ところが、低価格化競争が進むのに伴い、台湾や中国などで生産するようになった。それが、2000年前後から、現地企業の技術向上により、現地企業に生産だけでなく設計も委託するようになり、独自のパソコン事業から撤退するようにもなってきた。そのため、日本国内で生産している製品は、特に高度技術が要求される小型の高機能のパソコンに絞られるようになってきた。
2000年後半には、ノートパソコンが多様化した。ディスプレイサイズで区分すると、次のようになる。
7 8 9 10 11 12 13 14 15 16 17
───┬─── ─┬─── ──┬──
│ ──┬──│──┬── │
│ │ │ │ ハイエンド 1920x1200 モバイルを意図せず高機能機
│ │ │ A4ノート 1680x1050 最も広く利用
│ │ B5ノート(コンパクト) 1280x 800 モバイル用の標準
├ウルトラモバイル(タブレットパソコン) 1024x 600 操作性を重視
シンクライアント(Thin client)とは、処理機能をサーバに集中させ、パソコンには必要最小限の機能しかもたせないパソコンのことである。1996年当時は、モバイルパソコンの軽量化、低廉化を狙ったのであるが、あまり普及しなかった。
1996年 オラクル、シンクライアントの概念を提唱。そのコンセプトモデルNC (Network Computer)を紹介。「500ドルパソコン」とも呼ばれた。
1997年 サン・マイクロシステムズ、コンセプトモデルJava Stationを発表
1997年 マイクロソフト、Windows CEをベースとした「Windows Based Terminal(WBT)」を発表
それが2005年頃から、外部記憶装置の接続ができないこと、パソコンに情報が残らないことが、セキュリティの観点から重視され、パソコンメーカーはシンクライアントを発表、多くの企業が採用を検討するようになった。
2005年 日本経済新聞「日立製作所がパソコン利用を全廃する」の記事。これが広く一般の関心を呼ぶ。
2005年 富士通 FMVシンクライアントTC8200等出荷
2005年 NEC Mateシンクライアント、VersaProシンクライアント 出荷
ネットブックとは、インターネット利用に特化した小型軽量なノートパソコンである。2005年頃、発展途上国の教育分野にインターネットの活用が重視され、「100ドルパソコン」として生産、支援団体等を通して提供する計画が進んだ。
ところが、安価で使いやすいことが注目され、先進国でもセカンドマシンとしての重要が高まり、2008年頃から、その用途を目的とした機種も出るようになった。
2008年 ASUS(台湾) Eee PC:本来の目的用の例
・CPU,本体:Ultra-Mobile PC(タブレットPC)携帯端末用のPC、パソコン用と比較して安価
・記憶装置:HDDなどはなく、システム基板上にフラッシュメモリを直接搭載
・ハードウェア構成:通常のPC/AT互換アーキテクチャを採用して、パソコンとの互換性あり
iPadの出現
タブレットパソコンとは、タッチパネルディスプレイを搭載し、指や専用ペンで画面操作できる携帯用パソコンのこと。2002にマイクロソフトはタブレットPCを発表したが、あまり普及しなかった。2009年に発売されたWindows 7が「Windows タッチ」というタッチ操作系統を標準搭載したため、タッチパネルディスプレイを備えたパソコンが各社から発売されるようになった。
2010年、アップルはiPadを発売した。電子書籍閲覧で代表される多様なアプリケーションが評判になり、爆発的な売れ行きを示した。ここでのマルチタッチ操作方法は、一般のパソコンにも大きな影響を与えている。
http://anond.hatelabo.jp/20140803210149
と一笑にふそうとしたが、待てよと。
もしかしたら本当に今の高校生や若い世代は技術の進歩を目の当たりにしていないのではないか?
と思い、いろいろと調べてみた。
http://ja.wikipedia.org/wiki/PlayStation_2
確かにファミコン→スーファミ→プレステのような劇的変化は感じられないよなあ・・・
http://ja.wikipedia.org/wiki/AIBO
つまり、元増田が物心ついた時にはロボットとは、一般家庭にこそ普及してないが、
1999年にはiモードが日本でスタートし、インターネット網への接続が可能となり、通信速度が向上し、画像やJavaを使用したゲームなどの利用が可能となった。
ネットはパソコンでやるものではなく、ケータイでやるものなわけだ。
http://ja.wikipedia.org/wiki/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1
2000年~2002年頃にかけて、ADSLによるサービスが普及しはじめる。既存の電話線が使用できることや、価格競争による低価格化により、現在ブロードバンド回線の主流となっている。
知ってるかい?昔はダイヤルアップと言って、ネットへの接続時間に応じて料金がかかっていたんだぜ?
http://ja.wikipedia.org/wiki/%E3%81%AE%E3%81%9E%E3%81%BF_%28%E5%88%97%E8%BB%8A%29
なるほど、確かにこうしてみると、元増田が物心ついてから現在に至るまで、
子供心をときめかせるようなブレイクスルーがないのかもしれない・・・
(自分のチョイスの仕方が悪いだけかもしれないが)
俺が「かがくのちからってすげー」と感動しているものに対して、
高校生が感じるのは、物心ついたときからある当たり前のものでしかないのだ。
そんな当たり前のものがここ10年近く、ブレイクスルーなしに改良を重ねていっているだけのように見えてしまい、
などと思わせてしまうのではないだろうか?
普通の人からすると大したことじゃないと思うけど、もう会社の中に貢献しようと思う気が失せたので、その実態を書いておく。
ソフトウェアを自社開発していて、顧客自身がWebアプリケーションを作れるようなマルチテナントサービスを提供しています。
とある機能設計でCTOが「コレ出来るよね?」ってすごい適当な図((丸と線をつないだだけ))を書いて説明してて、
別の部署の部下がちゃんと理由((CTOには言葉の意味すらわかってなかったらしい))を説明して何度も断ってたのに、
無関係なうちの部長が呼び出されて「出来るよね?」って詰め寄られて「簡単にできますよ」ってさらっと援護してた。
彼自身はその機能に関して別に作業も具体的な設計をするわけでもないので、頭を悩ませるのは援護射撃をもらった担当の開発者たち。
社歴が長い分既存製品に関する知識があり度々オブザーバーとして呼ばれるが、今はその製品を開発している部署に所属しているわけでもなく、
最近の方向性や技術動向に関しては全然理解していないにも関わらず。
普段は雑談しながら笑ってることも多くて人柄は悪く無いと思ってるけど、仕事に関しては全部CTOの発言を決定事項として下ろしてくる。
自分が板挟みになりそうなら部下を責める。あなたの意図はどこ?
思考停止と思えるほどに「今までもこうやって来たんだし」がバンバン口から出てくる。
それを変えるやり方や新しい概念の導入に戸惑うとイライラして険しい顔でとにかく前例に合わせるようにする。
そうやって前例にこだわってきたからなのか、ちょっとしたエピソードがある。
たった4人の小さい部署だから毎週のMTGの余った時間で持ち回りの勉強会を提案して実施してたけど、
彼以外の3人がミドルウェアやフレームワークや新製品の説明をしているのに対し、彼は割とすぐネタが無くなったのか既存製品の話とか会社の規則に関する話が出てくるようになって、
最終的に「忙しいから」というよくわからない理由で勉強会が消えた。
3人共「楽しかったのになぁ」って口を揃えたんだけどね。
部長がいる僕の部署は新製品と銘打って開発を進めてるけど、例によってCTOの発言によって既に現行製品をなぞる方向でただの焼き直しを進める形になっている。
僕とサシで話した時は「現行製品と同じ機能を作っていくんだったら新製品を作る意味ってなんだろうねぇ(´Д`)ハァ…」とか言ってたくせにCTOの前ではハハハと笑っている。
以前指摘したけど、彼は新製品に関するプロダクトマネジメントやステークホルダーの立場ではなく、あくまで開発者らしい。
じゃあ誰が責任者でステークホルダーなんだよと思ったけど、そんなものは既存製品にもいなかった。
おかげさまで「あの時はこんな事情があって…」ばかりで迷走しまくってるんだけど、そういう反省は生かさないんだな。
基本的に技術に疎い。もともと企画をやってた人らしいけど、アイデアマン((その場の勝手な思いつきは多い))ではないなぁ。
バズワードは大好きだけど肝心の内容は何も知らないし間違いを指摘しても「そんな解釈もあるよね」ってごまかす。
でもそれでCTOっぽく技術をリードしていると思っているらしい。
その他にもいろいろ。「ifとforが使えれば何でもできるだろ」だの暴言も多い。
社長は彼がCTOとして問題があることに気づいているらしいが、役員だしなぁ。
来期は彼を開発部署の上から外してくれるといいな。でもその頃には僕はいない。
目の前の利益にはすぐ食いつく。
「こんな案件の依頼が来ていてお金はいいんですが、確実に専用のカスタマイズが必要なんですが…」というのに開発陣にヒアリングなしに受注を確定させる。
サーバだってもともと予算はないけどサクッと購入する。開発者たちにサーバを買う予算はないって渋りまくってるのに。
うまく行けば自分の実績として社内で大々的にアピールしまくるが、火消しに走るときは営業に文句行ったり開発者に文句行ったり。
そして保守のことは全然考えてないので、積み残されたカスタマイズサービス群が開発者や運用者、更には顧客への次の担当者を苦しめる。
現行製品の仕様を切り替えた時にカスタマイズで問題が起こったおかげで製品の仕様にカスタマイズを考慮したあれやこれやを要求されてがんじがらめ。
ちなみに、コレよりひどい自称元SIerの営業が居るが、とにかくカスタマイズ案件を取って受注しておいてPMをしないもんだから、
突然「お客さんが明日欲しいっていうんだけど」って焦って飛んでくる事態を連発する。
もちろんそんなことを連発してても「大型案件」を受注するから営業成績はMVPとりまくり。そこからずっと続く保守・運用は彼の仕事じゃないしね。
CTOの話に戻ると、僕らが作っている新製品(?)に関してもとにかく自分の理解の範囲内に収めるべく発言しまくるし、
新しい概念を持ちだされて意味がわからない時は「それって現行製品のコレはできるの?」で畳み掛けてくる。
もちろんそれを聞いた部長は「そうですよね。それも必要ですよね!」って援護してきて考えてきた設計がことごとく旧製品になっていく。
どうやらCTOの中では既存ユーザが内容を移行できる新製品にする予定で、機能まで全て踏襲するらしい。
そんなもん誰が使うんだろうねぇ。
「新製品を世に出していくには実案件で実績を作っていかなければ」って話をして、案件を持ってきた。
最初は短期間で終了する案件だったけど、運用期限の決まっていない案件が発生している。
そのために製品名もリリース時期も何も決めてないけど、メインから分離した保守ブランチができ、APIv1は提供済みだから今後はv2にならざるを得なくなり、
それすら新しい案件で潰されていくことだろう。
当初は「お客さんにはあくまで実験的なものと説明し、お金は取らない」((そんな話を受けるお客さんはたぶんいないって指摘したけど聞いてくれない))とか言ってたのに、
今は「売り上げあげなきゃこれまでの開発費がリカバリできない」とか言ってる。
まともなデバッグシステムやエディタを使わずに果たしてユーザはPHPコードを書いて開発をするだろうか?もちろん、否。
お客さんから依頼を受けたら営業担当者が四苦八苦しながら開発代行を行い納品する。
それでも難しい場合、パートナー企業に依頼をして開発をしてもらい、納品する。
そもそもPHP以外の機能自体も複雑になってて、開発者自身が「ここに機能追加しろって言われたけど、そもそもこの機能どうやって使えばいいの?」と迷うレベルだし、
想定してた使い方を超えてバグを付く動きを相談なしでお客さんに提供しちゃってるもんだから、
どれが正しい仕様なのかすら不明瞭になっている。
Javaってオブジェクト指向のプログラミングが出来るはずの言語なんだけど、オブジェクトなにそれ美味しいの?って状態。
クラスがただの関数置き場になっててメンバー変数をいじるもんだから、副作用のせいで同じオブジェクトを使う処理がことごとく影響を受ける。
それを避けるにはどうするか?もちろん似たような機能を持つ別オブジェクトを作ったり、別関数で違うメンバーを使うようにしたりする。
とにかく既存の流れを邪魔しないように新しいコードを作ればいい。おっと既存機能と同じ処理をする部分があるな。コピペコピペっと。
もうリファクタをしようと思う開発者はいないし、単体テストもないからできない。いや、無いんじゃなくて単体テストを作れない。
あちこちにDBコネクションとか埋め込んであって都度データ取得するから小さなコードでも動作するにはDBコネクションが必要なんだ。
僕は新卒メンバーには「会社内の書き方は(どの会社でもそうだけど、ここは特に)独自のやり方だから、コレが正しいと思わないように。
今後も開発者であるためにはxUnitとかバグの少ないコードの書き方とか自分自身で勉強するんだよ。」と言っておいた。
Conwayの法則とはよく言ったもので、まさしくリファクタできない密結合で暗黙のパラメータの多い組織。
自分の部署の立場を守る発言は多いけど、1年後2年後3年後どんなふうに仕事を進めていきたいからみんなでこうしていきましょう、って意思決定していくことは無い。
未来像を描いて推し進めようとする人とよく飲みに行くけど、その人もCTOからとにかく押さえつけられてたりする。
製品の結合度や他社サービスとの連携を図っていく基盤となる部分を提案しているのに、内容も全然理解してなくて「話が大きすぎて工数かかりすぎ」と言われ、
役員会でCTOが勝手に「仕様検討にかかった時間が負債になった」と報告したらしい。
「なにより、こんなことで諦める俺が憎い!」じゃないけど、そんな中途半端に辞めようと思う僕も駄目なやつだとは思う。
誰にも頼まれないまま開発インフラを変える動きを有志で立ち上げて色々やってCI((例によってユニットテストできない))が回るようになり始めたけど、それも中途半端。
運用インフラを変える部分もやっと使える状態になったけど、まだまだ中途半端。
そういった点は大変に申し訳ない。
でも、今のまま居たって僕に未来はない。
こんなところでこんなグチグチ言ってちゃダメなんだ。
だから、ゴメン!
今月に入ってからJava(ゆくゆくはAndroid)勉強してる素人なんだけど
http://qiita.com/kenokabe/items/13ea8d2da6adce1b3b9a
http://d.hatena.ne.jp/nowokay/20140718
こういうの読むと、別に理解出来てるわけじゃないものの、じゃ今OOPやる意味ってなんなんだろと思う。
地固めというか、それでも基礎力つけるためにひと通りはやったほうがいいのかな。
デザインパターンはUML書きながら、動作と意味を追いながらとりあえず書経してるけど、
周りに相談できる人もいないので、ここで訊いてみた。
極々一部に本当に優秀な方もいるが、その他大勢がお察し。
「私はプログラミング全くわかりませんがマネージメントやっています!」なんて嬉しそうに言っている社員がいる時点で気付くべきだった。
「ビッグデータやクラウドに注力していきます!」なんて言っている社員が統計もサーバーに関する知識もない時点で気付くべきだった。
「グローバルに頑張って行きたい」とか言っている同期が実は海外にツアー旅行しただけだったと気づいた時にはもう遅かった。
「サーバーから組み込み、S/WからH/Wまで経験した俺から言わせると○○は糞」
みたいな。
○○は、何がいいかな。
Java以外
COBOL以外
関数型
とか。
そんなことないよ。シリコンバレーはエンジニアの数も求職数もものすごく多く、裾野がかなり広いので、実力レベルは上から下までさまざま。博士号なんてもってたら給料が高くなるから、雇用側もあえて学士程度を望んだりするケースも多い。すーぱーぷろぐらまーレベルがどうしても必要な会社なんて一握りだし。一部の花形企業以外は、実力はそこそこでいいから$80Kで来てくれますかありがとうみたいなところは多いと思う。
会社のスタンスもさまざまで、純粋にCSでやってきた人じゃなくても、新しいプロダクトを作るセンスがあるとか、HTML/CSSやJavaScriptに強いとか、NginxとかNode.jsを使って仕事したことあるとか、IT土方だけどJavaだけは人並み以上にできるとか、インディー系で携帯ゲーム作ってたとか、アジャイル開発プロセスに明るいとか、色んなタイプの人が評価される。何か得意なこと持ってれば、そういう人を探してる会社は必ずある。シリコンバレーは最先端で尖ってるっていうイメージもあるけど、枯れた技術での固い職ってのも多い。JavaとかPHPの仕事なんていくらでもある。Flashですらいまだに結構ある。ほんとに裾野が広い。多くの人が、それなりの実力でそれなりの仕事をしつつ、家族との時間や自分の時間を大切にして人生楽しんでる。
会社によっては、平均的な日本人の勤勉さを知っていて、そういう面で重宝されるケースもある。世界中から人が集まってるので、勤務態度も様々で、その中では日本人の真面目さは割と有利。まあ、日本人は英語しゃべれないとも思われてるけど。逆にちょっと話せればかなりインパクト強い。
結局、
・大学か高専出てるか(出てないとビザが厳しい)・・・できれば理系、できればCSメジャー
・採用したらすぐ来れるのか
くらいじゃないのかね。
aはまだ読んでない値のリスト、bは既に読んだ値のリスト、totalは読んだ値の総和を意味している。
f(xs, b+x, total+x)と再帰的にa,b,totalを更新していけば、一個ずつリストを読んでいくことができる。
後はf(randoms, [], 0)を呼んで、totalが50を超えたらbを返すようにすればいい。
まあこんなん実質変数使ってるみたいなもんじゃねえか、というハナシではあるけど。
関数型のメリットはパーツの再利用がやりやすいというところにつきると個人的には思う。
たとえばこれの応用として、総和が50を超えたらじゃなくて総和が素数になったら総和を返すような関数f2を作れと言われたら?
コピペしてif文の中だけ変える?
……手続き型の発想だけだとそうするしかないかもしれないけど、
関数型言語なら、fにcheckという引数を追加して、check(total)がtrueならbを返すようにすれば簡単にf2やf3を作ることができる。
ラムダ式を使って、条件を判定する関数をその場でポンと作ってfに与えることもできる。(今はJavaとかC++もラムダ式使えるね)
再帰があんまり深くなりすぎるとStack Overflowになってしまったり、速度がどうしても犠牲になりがちだったり、
もちろん向き不向きはあると思うけど、関数型便利ですよと、そういう話でよかった?