はてなキーワード: C#とは
修正後: https://thinkit.co.jp/article/11373
差分: http://difff.jp/4jrxz.html
以下、大きく変わった箇所を抜き出します。
ちょまど:もう一つ言えば、開発ツールが無償じゃないのもなんか間違ってるって思っていたんですよ。なのでXamarinがマイクロソフトに買収されたって聞いた時にすごく喜んだんです。これでXamarinはきっとOSSになって無償になるって思って。
↓
ちょまど:もう一つ言えば、開発ツールが有償だと開発者に浸透しにくいって思っていたんですよ。なのでXamarinがマイクロソフトに買収されたって聞いた時にすごく喜んだんです。Xamarinはライセンス代が高かったけど、これによりきっと無償になるし、しかも(XamarinチームはもともとMonoチームが母体でOSS好きなのもあり)XamarinのランタイムがOSSになって人に勧めやすくなるかなって思って。
----
ちょまど:そうです。私は逆にマイクロソフトはWindowsの会社としか知らなくて、開発者になってからはVisual StudioやC#の会社で、とってもOSSな会社だって思ったんですが、入って気づいたのは世の中にはものすごくマイクロソフトがキライな人が多いって言うことで(苦笑)。なんかアンチな人が特にインターネットには多いです。
----
ちょまど:さきほどからマイクロソフトが変わって衝撃を受けていると言う話がみなさんから出てきてますけど、私からすればエディターがOSSなのは当たり前だし、開発ツールは当然マルチプラットフォーム対応だし、そういうのはもうホントに当たり前だったので一緒に盛り上がれなくて悲しいです(笑)。
↓
ちょまど:(さきほどからマイクロソフトが変わって衝撃を受けていると言う話がみなさんから出てきてますけど、)私からすればVisual Studio CodeのようにエディターがOSSなのは当たり前だし、Mac版のVisual Studioが出たように開発ツールは当然マルチプラットフォーム対応だし。マイクロソフトが変わって衝撃! という話題で一緒に盛り上がれなくて悲しいです(笑)。
----
ちょまど:でも無料じゃない開発ツールっていうのが不思議だったんですよ、そんなことしたら開発する人も増えないし、結果的に不利益を被るのは目に見えてるじゃないですか。「どんなに良いツール作ってもお金取ったら無意味だ!」って思ってました。なのでXamarinがマイクロソフトに買収されてホントに嬉しかったです。だってAndroidとiOSの両方作ろうと思ったら1年で25万円くらいかかるんですよ。
↓
ちょまど:でも無料じゃない開発ツールっていうのが不思議だったんですよ、ベースが有料だと、開発する人も増えにくいし、結果的に不利益を被るのは目に見えてるじゃないですか。「どんなに良いツール作ってもお金取ったら広まりにくいよ!」って思ってました。XamarinでAndroidとiOS版の両方のアプリを作ろうと思ったら、ライセンス代が1年で25万円くらいかかってたんですよ。私みたいな社会人歴2〜3年の人が趣味でやるには高過ぎる値段でした。
----
正直言って元記事のちょまど氏の発言は不正確なところが多々あった。
Microsoftの方によると
修正は本来ならあり得ないんですけど、コンテキストが落ちちゃってるところがいくぶんあったので(^_^; https://t.co/5TzS8rY5cH— Azure工事担任者 (@rioriost) 2017年5月12日
インタビューなので、なかなか難しい...。分かってる前提、つまりハイコンテキストで喋ってるわけで、そういう前提までは記事に書かれてないんですよ(^_^; https://t.co/lXLjOVg9D7— Azure工事担任者 (@rioriost) 2017年5月12日
勉強が不得意な職業プログラマですが、WindowsアプリをSPAに作り替えることになりそう。
プロジェクトメンバーに積極的に技術を習得するような人はいないので、簡単なフレームワークを探しています。
↑に近いようなフレームワークありませんか?
親父様は酒と野球とギャンブルが大好きなクズだったが、浮気と無職と借金だけはしない洗練されたクズだったので最低限の生活は保てていた。
鼻水を垂らしたまま何も考えず中学生になった僕は、そのまま何も考えず地元の底辺工業高校に進学した。
大学進学率0.3%未満の絵に描いたような地域密着型就職支援高校だった。
バカ、貧乏、次男坊のフルコンボを駆使し田舎を出て神奈川の大きな工場に就職した。
「僕ぁ、こんな事をする為に高校でプログラムを覚えたわけじゃないんですよねえ」等と同期のヤンキー達に吹聴してたら流れ的に辞めるしかなくなった。
とはいえ、ホントはプログラムなんか言う程できたわけじゃないので、どっかの会社に応募して落とされたら、周りも納得するかーなんて軽い気持ちでテキトーに選んだ会社に応募したら内定きた。
その会社でアセンブラとかいうミトコンドリアみたいに原初なプログラム言語を叩き込まれた。
おかげで、CだろうがCOBOLだろうがC#だろうがJAVAだろうがハイソサエティだよね、て気持ちになれた。
結局そのままいろんな会社を転々としつつもプログラムの仕事を今でも続けられ、不自由なく暮らしていけてる。
僕の未来予測では35歳になるまでに、能力的に限界がきて、pepperくんに仕事を奪われ、飲んだくれた挙句、アル中で手の震えが止まらずキーボード打てなくなり、プログラム以外の仕事もできず、部屋に引きこもりxvideosばかり見てたら奥さんに愛想をつかされ、底辺高校に行かせるのがやっとの長男と、承認欲求をこじらせてニコ生やらツイキャスやらで裸体を晒す娘を連れて出ていかれるハズなのだ。今頃。
だが、現実はどうだ。
天海祐希似の奥さんと、映画やCMとかで使われるくらい良ロケ高校に通う長男と、部活に汗する健全な娘に囲まれ、それなりにシアワセに生きている。
小学校時代に道端で座り込んでた奇妙な婆さんに「お前さん、34で死ぬよ」と言われ、なるほどですねーと過ごしていたが、既にそのXデーから十年以上経過しても元気に生きている。
たぶん、何十回か別の世界線で死んでるよね?僕。
じゃないと、そろそろ変な死に方しそうで怖い。
定期的に思うんだけどプログラムで無理な英語にせず日本語にすればいいのにって思う。
(実践はしていない)
日本語で書ける言語使うんじゃなくて変数名や関数名がUnicode対応で日本語書けるもの。
○画面に表示する時
フレームワークや言語にもよるけど表示するときに英語の名前から日本語の名前に変換して表示って手間があるものがある。
最近見かけた例だと.NETでプロパティの属性に表示名書いて表示するときに取り出していた。
最初から日本語だとそのまま表示でいいことが多くて一段手間が省ける
次に他の人の英語化したのを見る時。
その人の英語力にもよるけど、動詞名詞が変に混ざっていたり、sがついてたりなかったり、そもそもchildsみたいな謎の語があったり。
そこそこできる人同士でも、「私はニュアンス的にこっちの単語」「僕はこの単語のほうがいいと思う」とかある。
相手の書いたところがわかりづらいのはもちろんだけど、プログラム的に同じ意味なのにクラスや関数によって呼び方違うと辛い。
かといって全員に日本語と英語の対応を先に渡しておいて統一しようというのは大変すぎる。
(日本語だと仕様の時点で日本語で書いてるからまぁおかしなことにはそうならないはず)
----
次にデメリット
軽く調べた感じ主にこの2つな感じ。
○IME
と思うけど、実際チャットやこういう文章書いてて英語が出るときに割りと頻繁に押してる。
ほぼ無意識でやってて意外と苦じゃない。
短いとF10変換で半角にすることもあるけど、キーボードのタイプ数カウンタとか入れてみると半角全角キーはけっこう上位にいた。
それに、なんだかんだコメントは日本語で書くことが多くて、他の人と作るのならこまめにコメント書いてる。
そうなると全角半角の切り替えは普段からあるもので、あんまり気にするほどじゃない気がした。
最近じゃIDEやエディタの補完が優秀だし、日本語にするにしても「最初はjから始める」とかルール入れておけば「j」って打ってあとはスコープにあるいくつかの候補から選ぶだけで全角にしなくていいかもしれない。
githubで公開したりとかライブラリで再利用してもらうときに日本語じゃ使ってもらえない。ってことみたい。
私が日本語にすればいいじゃないって思ってるのは、ビジネスロジックというかそのアプリケーションの固有名詞みたいなところ。
「足し算」って関数名は 「add」 でいいと思うし、配列のそれぞれは element とか item とかそういう一般的な英単語でいいと思う。
具体例がいいづらいけど、業務システムで表示する金額の名前とか、日本語独特なものとか、一般的な単語じゃなさそうなの。
こういうのを日本語にしたいってわけなので、ライブラリ的な共通なところは英語で良いからgithubで公開する範囲も英語のものでいいと思う。
ただ、最近はやってるマストドンとか、ライブラリ的なものじゃなくアプリケーション自体をgithubで公開する場合はできない気がする。
でも、海外も対象にしてるものだと日本語特有なせいでわかりづらい英語になる苦労とか少なそうだしそういうのだと英語でいいんじゃないかな。
----
長くなったけど、まとめると、
業務システムの固有名詞とか日本語特有なものとか無理に英語化してよくわからないことになってり、見づらくなるくらいなら日本語使えばいいんじゃないかな
ということ。
まあ思ってる割には実践してないので、やってる人がいたら良かった・悪かったとか聞きたいなと思ったのが書いた理由。
帰ってきたらすごいブクマついてた。
絶対「自分でやってから言えよ」みたいな意見来るだろうと思って今日の空き時間に日本語行ける言語調べたり軽く日本語使ってコード書いてみたので、そのあたりと目についたコメに答えてみる。
まず、思いの外日本語プログラミング言語上げてる人がいたので、うまく伝わってなかったぽい。
具体例上げずにサッと書いたらからかな。
あと自分もわりとするけどタイトルだけ見て中身見ずにコメントしてた人もいるだろうなー。
これが、などしこやひまわりや、BF系のmisaやら北斗のあれやらうにゃーとか色々な「構文など最初から日本語を前提とした言語」ではないってこと言ってた。
---
最近の主要な言語ならだいたい Unicode 対応でしょと思って環境があった言語を試した結果はこうだった。
JavaScript/Python/PHP/Scala/Kotlin/C#/Go/Swift
rust と Lua は無理だった。
rust は確か前に、変数名が ascii 文字だけなことに日本以外のどこかの国からUnicode対応にしてって多くの要望あったみたいな記事があったし将来的に対応するんじゃないかなって思ってる。
実際に今どんな状態かは知らない。
その記事のコメントとかでみたけど、日本語以外は割りと自国の言葉を使ってたりするっぽいね。
VBA を上げてる人がいたけど、私はそこまでのはみたことない。(幸せ者っぽいな)
稀にエクセルマクロいじるときに使い方ググってて出て来る、解説してるページで関数名が日本語なのをたまに見るくらい。
パット見なんか気持ち悪い感はあるけど、読んだときのわかりやすさはけっこう大きい。
---
○使ってみて
大規模案件に使ってみてこその問題もあるだろうけど、簡単なスクリプト程度のを日本語にしてみて気づいたこと。
割といける。
PHPて言語は変数は全部$からはじめないといけない欠陥言語。
まあ変数のみのgrepのしやすさや予約語キーワードを変数名に使えるからメリットもある。
だが、$って打ちづらい。
Shift+4ってすごいつらい。
に比べて全角半角キーってちょい遠いけどそこまで苦痛じゃない。
GoogleIMEだけど、多少のタイプミスは補完で修正してくれるし、予測変換が優秀だし。
IDE重いから補完機能のない軽いエディタで書くようなときなら、IMEのおかげで英語の変数名で書くより速度は早いと思う。
---
少し前に知人から言われた日本語のデメリットを思い出したのでそれも触れとく。
「仕様変更で言葉変わったときに日本語だと全部書き換えないといけないよ。英語だと別にそのままでいいし。」
英語わからない人が、英語を言葉とみなさずただの記号として考えてるから、っていうような発言。
仕様変わって変数名まで変えるのは面倒なのはわかるけど、あとからコード読む人が英語で見て意味不明になる。
英語と日本語の対応をコメントに書いたとしても、全然意味の違う英語があるのは混乱でしかない。
こういう考えの人がいたら本当にやめてほしい。
---
あとは気になったコメントについて書いてく。
表記ゆれとか方言とか言い回しなどについては、全部日本語にするとあるだろうけど、私が想定してるのは直感的に英語にならないような固有名詞とか。
年金の例も○○年金というのがいろいろあって、全部英語だと嫌になってくるしよくわかる。
こういうのを日本語にしたい。
なので年金額を取得する関数で「年金額を取得する」「年金額を取得」「年金額を取り出す」とかの表記を迷うんじゃなくて「get年金額」でいいと思う。
特にDBにある項目だと仕様とかで先に言葉が決まってることが多いだろうし。
---
見た目について。
見た目が残念とか見づらいというのは同意。
見た目が悪いというのも全部英語っていう前提があるからで1ヶ月も日本語のコード見ればなれるんじゃない?って思う。
---
へとヘ
これはありそうな問題。
ただ、IDEを使う前提なら未使用変数のエラーとか、選択したときに色が変わってないとか、割と気づけると思う。
lとIとかアルファベットでもあるけど、IDEや高機能エディタ使うと困ることはほぼなくなった。
---
私が日本語にしたいような固有名詞をローマ字化してるプロジェクトにであったことはある。
それにローマ字のほうが「ん」でnは1つか2つかや、ヘボンorローマ?という日本語より表記が揃わない問題ある。
特にローマ字の場合自分がキーボードで打つ方じゃないと書きづらいのでそろえてもらうのに抵抗がある。
---
海外向けとか海外の人と一緒に作る系なものって最初から英語で困らない単語ばかりだと思う。
そういうのは対象外。
今回いいたいのは、元から日本しか対応してないような業務システムなど。
そういったところの固有名詞が日本語になったからって、困ることはないはず。
日本でしか使われないもの・海外向けにするにしてもフルスクラッチで作り直すことになるようなもの、
---
テストだと日本語が使ってる人多いのかな?ブコメのスタートップだし。
---
長くなったけど参考になる意見もいろいろあって助かった。
結果
Java https://ideone.com/V7rEZP
Javascript https://ideone.com/pUmDJI
Python https://ideone.com/aF48Dm
Ruby https://ideone.com/oyknMD
参考:http://www.oreilly.com/animals.csp
プログラミング歴10年ちょい、仕事でWebシステムとかiPhoneアプリとか、色々プログラミングしてるアラサーのおっさんからだ。
増田は10代後半〜20代前半くらいかな?と思って、書く。参考にしてほしい。うっかり年上だったら何かゴメン、でも少しは参考になると思う。
こういう「どこからやったらいいんだよ…」っていう悩みは俺もちょうど中学生くらいの頃に思ってて、悩みながら薦めたんだけど、
結局の所「どの経験もムダにはならないから、とりあえず沢山やってみるといい」ってことだ。これについては後述するけど、まずは細かい疑問に答えていこうと思う。
まず、色々調べてて、結構詳しいし感心した。ただ、その詳しさは、まだスタート地点だ。
どの言語がどういうものなのか、何となく知ってるのは役に立つから、これからもアンテナを張り続けるといい。
MySQL使うべきなのかSQLite使うべきなのか、GolangにすべきかRubyにすべきかいっそJava?いやC#?
こういう悩みが出るのは勉強した証拠。しかし、この問題はレベルの高いプログラマーでも難しい。
何故かというと、作ろうと思うもの次第だし、作ってみたら意外と相性が悪いみたいな事も起きるし、
疑問に思っているらしい、言語を複数触れた方が良い理由は、こういう「どれを選んだら良いか」という問いに答えやすくなるからだ。
自分が理解していないものが、今作ろうとしているものにマッチするかしないか判断するには、言語や環境に対する深い理解が必要だ。
エディタは個人的にはVisualStudioやXcode、あるいはIntelliJ系をオススメする。
何も設定していなくても好ましくない書き方の時に警告が出るから、強制ギプスみたいに作用するからだ。
Twitterとかで騒いでる強いプログラマーの皆さんはvimやemacsを薦めるけれど、意外にもchokudaiさんとかはVSでC#を書く派なのを思い出して欲しい。
IDEを作っているのもプログラマーなので、IDEを使うメリットもかなりあるんだ。使った上でやっぱりvimが良ければvimに戻ると良い。
パソコンのスペックについては、確かにスペックが低すぎる。そのマシンで開発するなら、vim/emacsにせざるを得ない。 AtomやSublimeでもキツそうだ。
書いてる通りで、Core i7/RAM 4Gくらいあればとりあえず基本的人権って感じ。
性能は高ければ高いほど良いけど、予算の都合だってあるだろう。 10万用意できるなら、結構選択の幅は広がるんじゃないか。バイトなり親の説得なりお金ためるなり、頑張って調達するんだ。
何から勉強したら良いか分からないなら、とりあえず何かをパクれ。Twitterクローンみたいなのでも良い。フォローとテキストの書き込みだけなら作れるんじゃないか?
なんならそれを公開してもいい。
もしアイディアがないなら、それこそTwitterで誰かが「こんなのあったらいいなぁ」って言ってるもののうち、何となく頑張れば作れそうなものに手をつけてみると良い。
意識低い企業内研究者です。プログラミングはサブウエポン。だけど趣味でも勉強してる。
働き方改革のせいで早く帰れって言われて、酒のみながら今これを書いてる。
C言語とかC++は・・・これで作らないといけないものが今の所ないし、これでお金を稼ぐのはハードルが高いし、
WindowsのAPIを使って複雑なプログラムを作りたいわけじゃないのでwhileとかifとか基本的な構文だけ覚えるだけで満足。
組み込みプログラミングではC言語はいまだに現役。お金も普通に稼げると思うよ!次代のCOBOLと化しそうで怖いとこはあるけど。
Javaは・・・使える人が多いからあえて今から学習しなくてもいいような気がする。
文字列の結合だけでもダメやり方と良いやり方があるらしくて、何かPHPのようにその言語特有のセオリーみたいなのを覚えるのが面倒くさそうなので入門の時点で学習するのをやめた。
セオリーとかあるかもしんないけど速度とか気に揉むまえに書いて測れ。たいていは杞憂か、あるいはCPUパワーで殴れるから。
Goは・・・HTTP/2が使えるから学習してる。他の言語だとnghttp2をインストールしないといけないようなのでGo便利だと思ってる。
ライブラリの選択肢が多すぎるのでこういうのが作りたいってときにこれを使うのがいいよっていうのが知りたい。
GUI作るのにライブラリありすぎてどうやって選べばいいのかさっぱりわかんない。
Goでデータベース扱うならこれを使え、だけどMySQLしか使わないならこれを使え、あっSQLiteならこっちのライブラリ使うと便利みたいなこういう情報が欲しい。
GoでGUIつくるの?あんまり普通じゃない気がする。軽量プロセスのうまみがそんなない(詳しい人に否定されそうだけど)
普通にC#(mono/.net)かwebアプリにするかで良くないか?
ただ、言語をあれもこれも覚えるのって僕は意味があるのかなという思いもある。
広く浅く学習するより、狭く深くいきたいとおもうけど、paizaでCランクしか取れない。
twitterで有名な人てやっぱりSランクとか余裕なのかな、こういうのもいろんなプログラマーに聞いてみたい。
一応著名なプログラマーをTwitterでフォローしてるけど、ご飯の画像を載せてたり、若者の僕には通じない寒いギャク連発してたり、ロリっぽい画像をRTしてたりと、twitterはメインの情報収集としては利用してない。
twitterやってるプログラマーって勉強会とかオフ会に参加してるようなリア充の人ばっかりなので、肩身が狭いから自分からリプは送ったりはしない。
ファンがたくさんいるのに最近ニコ生配信してくれないchokudai先生みたいに、アルゴリズムを学ぶのがいいのかな。
アルゴリズムは使うものだ書くものではない!高階関数とかテンプレートプログラミングとかその辺勉強するといい。
あと計算が制限時間内に終わるなら総当たりが最速で品質も高いぞ。
どうしてVimかというとプラグインが多いしIDEっぽくできるから。
Vimってハードル高いイメージあったけど、入門記事がたくさんあるので助かっている。
NetBeansが重すぎるんだよ。補完ボックスが表示されるの遅すぎて警告メッセージが出た。補完ボックスが表示されるまで7秒ぐらい経過すると警告メッセージが表示されたと思う。
Vim知らない。Linux使うならVimかemacs使えるだろみたいな雰囲気あるけど、GUIならgedit, CUIならnanoでいいよね。
パソコンのスペックもどのくらいのものを用意したらいいのかわからない。
10年前のVistaが搭載されていた頃の家電量販店で一番安かったCeleron 1コア メモリ1GB グラボなしノートだからプログラミングに向いてないのかもしれない。
VirtualBox上のubuntuでMySQLをコンパイルすると2時間20分ぐらいかかった記憶がある。
CPUが1コアなのでコンパイル中にそれ以外の作業なんて重くてできない。
スペックにお金をかけることで時間の節約ツールの選択肢が増える
EclipseなどのIDEが支障なく使えるレベルのスペックってどのくらいするんだろう。
3年前のCore i7, SSD, 8GB。最近はもっぱらJupyter。
Pythonは・・・・機械学習する上で避けて通れないけど、今のPCだと無理。
Pythonはいいぞ、機械学習だけじゃなく計算系はエクセルじゃなくてJupyter使う。でも周りはエクセルつかってる、勿体ない。
使ってないけど最先端の研究では機械学習使って当たり前感があってそろそろヤバい。
僕は中学生の頃、いじめにより心の余裕なんてなかったから勉強どころではなかったけどもっと英語の勉強しておけばよかったと後悔している。
迷宮にいる感じ。
なんとなく、プログラミングじゃないほうがいい気がするなあ。
そういうのがない言語に心当たりがないのですが、、、。
目に付いたのをやって、廃ってしまったら、別なのをやる。
ただ、廃ってしまっても大抵その経験は別なのの習得に役立つので、適当に決めると良いです。
ま、まずは一つの言語で、paizaでSランク取るのも良いと思います。
ただ、本当に深く習得するのは、一部の人にしかできないので、壁にぶつかったら他言語に手を出すのも良いです。
仕事は言語指定のものも多いので、Goしかできないときついかもしれません。
JavaかC#かC++はやっといた方が無難です。(C++が一番オススメできない)
制限時間集中してやったことはないのでなんともですが、だいたい何かしながら制限時間*2くらいでといてます。
各パーツを組み合わせて、希望の形を作る。
まずは、もともとあるものに、オプションパーツ的なものを作って、作る能力を上げると良いです。
PCは待たせるものであって、人がPCを待つのはナンセンスです。
VirtualBox等を動かしたいのであれば、メモリーは多めにしましょう。
ホスト側は64bitOSで、メモリー最低8GBは欲しいです。
グラフィックボードは、3Dレンダリングや機械学習をしたいなら欲しいです。
ふと、思ったんだけどよ
籠池理事長率いる森友学園の問題として大きく取り上げられたやつで、幼稚園児に
「安倍首相ガンバレ!安倍首相ガンバレ!安保法制国会通過良かったです!」
言うまでもないと思うけど、このセリフは籠池理事長が考えたはずなのよ。
そんでもって、当の安保法制の時、国会の周りでは連日デモが行われていて、それが毎日のようにテレビで流れてた訳だ。だけど、インターネットの方では違った動きもあった。
俺のTwitterでは暇つぶしのアニメ系とC#言語とUnity系のアカウントをフォローしてた筈なのになぜか、政治系のツイートが流れてくる。
それで、気になったからTwitterで軽くググってみたんだが、当時はSEALsが有名で、それらや、デモをやっている人間を否定するようなツイートが目についた。つまり、安保法制を支持してる人間達がいる訳だ。もちろん、支持しない人のツイートも見かけたが、フィフティーンフィフティーンではない。たぶん7:3ぐらいの割合で支持してるツイートの方が多かった気がする。
さて、ここまで書けば何を言いたいか大方の人が勘付いてくれると思うがちょっと待ってくれ。最後に言いたいことがある。
最初に戻ろう。あの幼稚園には不相応な宣誓を見て皆は何を思った?
幼稚園児らしくない宣誓であると本人も分からないわけではないはずだ。政治について語れる幼稚園児がいる方がびっくりだ。
でも、幼稚園児に言わせるぐらい籠池理事長はウズウズしてたんだと思う。幼稚園児を通した自己表現って奴だ。
(そもそも、幼稚園児を自己表現の道具に使うなんて論外だとは思うけど。)
だが、結局、ツイッター上(もしかしたら2ちゃんねるとかでも)で言われていたのも、難しい言葉を取っ払って本心を言ってしまえば、
「安倍首相ガンバレ!安倍首相ガンバレ!安保法制国会通過良かったです!」
これをツイッター上でたくさんの人達がツイートしているのを俺は見てたわけだ。
(幼稚園児を使わない分マシではあるけど)
彼らは籠池理事長と変わらない。
んで、最後にだ、
インターネット上では今日も明日も安倍首相を指示する派と支持しない派がどこかもしらないURL上で論争をしているんだろうけど、大事なことがある。
つまり、それに対応して殴り合っている間は、あなたも知らぬ間に籠池理事長って訳だ。
プログラミングの入門者には伝統的に変数や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禁止というのはそういう活動の一環として生み出されてきたハウツーです。
そして自分の作りたいものは往々にして自分の実力を超えた所にあります。
幾多の困難を乗り越え、今の自分ならどの程度の規模のものを無理なく作れるかということがわかる場合があります。(わからない場合の方が多いんですけど)
最終的に何を作るか、何を作れるかというものを見据えながら、本当に必要な機能を選別しないといけないのです。
欲しいものは全ては手に入りません。
全部じゃないと意味が無いなら、即座に全てをあきらめるか、考え方を変えなければ生き残れません。
プログラミングをする上で、夢を実現する技術を学ぶわけですが、
それには、何を実現したいと願うか、何を夢とするか、をコントロールする術も含まれます。
そしてそれこそが、プログラミング、ひいては
昨今話題になってるヤマトや佐川関連のブックマークが上位を占めるかと思いきや、まったく違った。
(2016年12月29日10:54時点、本文、新着順で検索)
Amazonの検索結果 (絞り込み: 3 users 以上) 約 3,423 件中 1 - 40 件目 (0.26 秒)
(以下略)
ECサイトを連想させるトピックがほとんどなくて、AmazonがB2B向けサービスを充実させていることに驚いた。
Amazonって表向きは物流業界に革命と問題を起こしている要因に挙げられているけど、EC以外のインパクトがどれだけ大きいのか門外漢なので分からない。
↑でブクマ付けた人、何が起きるのか教えて
例外ってあるじゃろ。tryしてる間にthrowされたのをcatchするアレじゃ。あれは、たしかに有用な仕組みじゃ。何かの関数に失敗したとき、本来の値のかわりに特定の値を返すのもダサいし、参照型の引数で成功したか否かを返すのもダサい場面、というのは確実にある。そもそもプログラマは怠惰で忘れっぽい生き物なので、例外という仕組みがなければ、関数で失敗したことにすら気づかないかもしれない。
だがな。例外は魔物じゃぞ。昔は、gotoというものがあってだな。好きなところに処理を飛ばすことができる。あまりに、いろんなところに飛ばせるので、邪悪だと言い出した奴がおって、今ではあまり使われなくなった。なぜgotoが邪悪と呼ばれたか。gotoというのは、順接、分岐、反復という、プログラムを組む上で最低限必要な制御構造から逸脱した、どっかからどっかに飛んでいく、という行為が容易にでき、それを多用したコードはまともな人間には読めなくなるからであった。そして、例外は、まさにその「どっかからどっかに飛んでいく」を容易にするための仕組みなのじゃ。
例外は、順接、分岐、反復による基本的な制御構造があった上で、あくまで対処を要するアブノーマルな状況に使われるべきものであり、例外というのは、制御機構として使ってはいけない。値を返す目的で例外を使ってはいけない。一体どこから来て、どこへ行くのか分からない、そんな、流れ星のような例外の使い方をしてはいけないのじゃ。例外を使うなと言うつもりはまったくない。じゃが、例外は制御構造を壊しうるものだと認識し、例外を悪用していないか、それによってコードが追えなくなることはないか、と、考えてから、使ってほしいのじゃ。
イベントの悪用も見た。イベントは非常に有用な仕組みだし、GUIなんかだと、もはや必須とも言える。なので、イベントを使うことは有用なことだ。けれど、イベントは、いつどこで発生するか予想が付きづらいものが多く、また、スレッドなどを使って非同期でイベントが処理される場合(今時は、多くがそうだろう)は、マルチスレッドと同じく、リソースの排他制御を行う必要があるかもしれない。複数の処理が同時に動くというのは、恐ろしいことなのじゃ。いつの間にか、変わってないと思ってた変数が途中で変わるやもしれない。「まー、滅多に起こらないし、ええじゃろ」って判断の上、何も対策しない、という手もあるが、ええじゃろで済むのか済まないのか検討するくらいは必要じゃわな。C# なんかだと、言語レベルでイベントが実装されておる。じゃから、イベント必要ないじゃろと言いたくなるような場面で、イベントが使われていたコードを見た。
便利な仕組みがどんどん出てきて、新しいものがどんどん古くなる今のコンピュータ業界。新しいものを追いかけるのもいいが、基本は基本として、しっかり押さえて欲しいのじゃ。今更、アセンブラでゲームを作れるようになる必要なぞ、微塵もないが、自分のコードがどのように動くのか、興味をもってほしいのじゃ。わしのような新しいものに不勉強な老害は、最近の若いものが基本的なことを不勉強だからこそ、居場所があるのじゃ。じゃが、わしももう長くない。若いもんは、新しい仕組みの表面だけでなく深い部分に触れて、学んで、わしら老害を追い出せるくらいになってほしい。わしからは以上じゃ。
Imagine Cup 2008のアルゴリズム部門で世界3位のchokudai先生ならVimにrand()とsrand()の必要性を力説してくれるはずだ。
その筋の人ならbramを説得できるはずだ
我々はchokudai先生を早急にVimワールドに引きずり込むべきだ。
vimmer「Vim使ってみませんか?おすすめのエディタです」
chokudai「Vim?Visual Studioで間に合ってま〜す」
vimmer「vimプラグインのomnisharp-vimを入れたらVimでC#書けますよ」
vimmer「中でもおすすめなのがShougoさんのVimプラグインです。これがあれば暗黒の力が簡単に手に入りますよ」
vimmer「neobundle.vimを入れるとプラグイン管理が楽になります」
vimmer「unite.vimを使えばもっとVimの操作が楽になります」
vimmer「更に開発中のdein.vimやdenite.nvimやdeoplete.nvimを使えばさらに強い暗黒の力が手に入りますよ」
chokudaiは唾液をゴクリと飲み込む
vimmer「暗黒に染まったプラグインを更新する度にパワーがはるかに増す・・その更新を無限にオレは残している・・その意味がわかるな?」
震えるchokudai「いきなり意味がわからないことを言いやがって!!でも怖いっ!!!!」
震えるchokudai「tanakhさん!助けて!!!」
tanakh「だめだ!暗黒の力が強烈過ぎて僕のemacsの力では太刀打ち出来無い(´・_・`)」
震えるchokudaiとtanakh「きさま!まさか!!(((((((( ;゚Д゚))))))))ガクガクブルブルガタガタブルブル」
就職活動では文系学部ながらSE職を目指していたことが社長に伝わったらしく
最初は既存の営業システムを触るために1か月程度営業のアシスタントとして働く
しかし肝心の社長はプログラミングスキルはなく、研修にも連れて行ってもらえず
もちろん上司もプログラミング経験者も社内にはいない(実質的な上司は社長に当たるが忙しく業務報告のみで終わる)
結局営業システムはVBAで開発することが決定し、本で買った知識で外側(フォーム)を作成しOKサインを取る
しかし相変わらずコードが書けないため、自分が作ったフォームから要求される機能を実装できない
就職先も自分で決めたものではない(親に他社の内定蹴りを強要された)し研修も行かせてもらえないし
ことごとく自分の気の弱さのせいで自分で物事を決めたいように決められなくなっている
定時で帰れているくせに(仕事もひとりの部屋で窓際族のくせに)休日になったら寝たい以外のことをしたくなくなるくらい生命力が弱いのも災いしているんだろうなあ
追記
就職活動の経緯(親に内定蹴りを強要された)についてはhttp://anond.hatelabo.jp/20160119225411
に書いてあります
1月の高速バスの事故のあと親がヒスって路線バス運転職の内定を蹴らせたことは事実です
自分の反論/主張できない気の弱さがいけないと常々思っています
さらに追記
最初はC#で開発する予定でしたが、コードの書き方すらわからないのにサーバとの接続等さらにわからないものをやらされるのは無理だったのでVBAで開発することになりました
「ファイルまたはアセンブリ 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。 」
http://stackoverflow.com/questions/4742894/mvc3-deployment-dependency-problems
IIS を実行させているサーバの GAC に Microsoft.Web.Infrastructure.dll のアセンブリキャッシュが存在しないようです。
プロジェクト参照設定にある Microsoft.Web.Infrastructure のプロパティを開いて「ローカルコピー」を True に設定して、発行(デプロイ)しましょう。
コンピュータ言語って世の中に山ほどあるけれど、それぞれの言語ごとに特徴がある(特徴のない言語は廃れていく)。
あまり言語に詳しくない人相手に、俺の考えるそれぞれの言語の特徴を書いてみようと思う。
なお、取り上げるのはある程度広く使われている言語に限りたいと思う。
言語名 | 概要 |
---|---|
C言語 | 高速動作するバイナリ生成を目的としたコンパイル言語。だいたいどんな環境でも使えるがバグ出やすい |
C++ | マニアック言語、高速、習得大変 |
Java | サーバで高速かつ安定に動作するコンパイル言語、大規模でよく使われる |
C# | 主にWindowsクライアント用のバイナリ生成に使われるコンパイル言語 |
Perl | 広く使われていたが今は若干時代遅れのスプリクト言語。汚い |
Python | Perlにかわって主流になりつつあるスクリプト言語。綺麗 |
PHP | Web開発にフォーカスされたスクリプト言語。一世を風靡した。 |
Ruby | とても綺麗なスクリプト言語 |
JavaScript | ブラウザで実行出来る唯一の言語。言語自体はいまいちだが、ブラウザの事情で需要あり |
Go | サーバサイドで安全かつ高速動作するバイナリ生成を目的としたコンパイル言語 |
メモリに直接アクセスして書き換えるといったコンピュータの機械語に近い言語構文を持つため、高速な処理が可能な言語。
コンパイラの歴史も古く環境も整っており、組み込み系などを含むほぼ全ての環境で利用可能な万能言語。
一方で、メモリの確保や解放といった基本的なことも自前で処理する必要があるため、コーディングの効率が良くなく、多種多様のバグを生みやすい側面も持つ。
ある程度以上のエンジニアであれば常識として知っておきたい言語だが、初めて覚える言語としてはあまり適当ではない。
C言語にオブジェクト指向を導入した言語。C++言語とはあまり呼ばれず、しーぷらすぷらす、もしくは略してしーぷらぷら、しーたすたす、などと呼ばれる。
C言語の速度を維持したままオブジェクト指向やテンプレートなどの効率的な記述を可能にしようとした意気は真っ当だったのだが、
当時最先端だった色々な技術や思想を叩き込んだおかげで、あり得ないほど複雑化した言語としても有名。
「C++を理解しています」という人はほぼ初級者で、本当に理解していくほど「C++には自信がありません」となっていく。
速度を追求する分野では良く使われている。完全に理解するのは難しいとしても、テンプレートくらいまでは理解しておくと仕事上なんとかなる…かもしれない。
サーバサイドで安全にコードを実行する目的でよく使われる言語。長い歴史を持っており、比較的高速に動作する。
当時は画期的だった「バーチャルマシン」や「ガベージコレクション」という機構を備え、CやC++でよく問題になるメモリの解放忘れというバグを生まず、
サーバサイドなどで何千時間と動作するソフトウェアに適した言語として受け入れられた。
必然的にエンタープライズ用途で利用されることが多く、各種ツールなども豊富。人海戦術がしやすい言語という側面も出てきた。
一方でブラウザにHello Worldを出すだけでも大変な労力を必要とするので、スタートアップなどではあまり使われない。
ガラケーのアプリや(ちょっと違うが)Androidなど、クライアントサイドでも使われることがある。
プログラミング言語で最初にJavaを覚えるという人は結構多いが、仕事としてJavaを使うのは大抵SI系の業務になり、なかなか辛い労働を強いられる可能性が高い。
クライアントサイドで安全にコードを実行する目的でよく使われる言語。こちらも比較的高速に動作する。
元々はWindowsのクライアント用の言語であり、Javaとは違ってクライアント向きのAPIが多数ある。
マイクロソフトが開発した言語ということもあり、マイクロソフトの優れた開発環境が利用出来るので開発効率は非常に高い。
Unityなどでも利用可能であるが、基本的にはクライアントの実行形式ファイルを生成する目的が大きく、サーバサイドではあまり使われない。
自作のゲーム開発をしたいのであればうってつけの言語。初めて覚える言語としても十分に良いだろうが、C#を使う仕事は近年無くなりつつある。
ほぼ全てのLinux系ディストリビューションに含まれており、ツールや様々な用途で使われていた。
上に紹介したC、C++、Java、C#のようなコンパイル言語とは違い、(少し語弊はあるが)1行ずつ実行してエラーがあれば止まるスクリプト言語である。
ちょっと開発してすぐに実行ということが出来るのと、コマンドラインでワンラインのコードを読み込ませてちょっとした処理が出来るなど応用範囲の広い言語である。
20年近く前にWebでCGIが普及した時には、ほぼどのようなサーバ環境でも実行可能だったこともあり、Perlを使うことが極めて多かった。
しかし、主に読みづらい言語仕様のせいで、近年新規ではほとんど使われなくなった。既存のコードもどんどん別の言語に置き換えられていることが多い。
日本の大手Web企業の一部が使っているので、そこに就職するために覚えるのもアリっちゃアリだけど、今からPerlをわざわざ覚えるのは強くオススメしない。
後発のスプリクト言語。こちらもほぼ全てのLinux系ディストリビューションに含まれており、それゆえに広く使われている。
インデントまで言語仕様で規定することで、誰が書いても読みやすいコードになるように考えられている言語である。
Perlの代わりに使われることが増えていて、周辺ツールなども充実しており、小規模から大規模までカバーする勢いがある。
ただ、Python2とPython3のバージョン間での非互換性があまり綺麗に設計されていなかったため、そこで混乱を招いていたこともあった。
最近だとマシンラーニング系のライブラリでPythonが使われていたり、海外ではPerlに代わる言語として受け入れられつつある。
Web開発に特化したスクリプト言語。CGIの代わりに使われ始め、一世を風靡した。
以前CGIでWebに何かを表示するには比較的大変な労力を割かなければいけなかったのが、PHPを使うと誰でも即座にWeb開発が出来たので爆発的に普及した。
またphp.netの豊富なドキュメント&スニペットのおかげもあり、開発初期の効率が大変に良い言語である。
残念なことに、言語やAPIの設計がいけていない点が多く、一部の人からは蛇蝎の如く嫌われている。
今でも根強い人気があり、海外でも小規模プロジェクトの最初の開発にPHPを選ぶのは比較的よくある選択肢であるようだ。
Webアプリを開発をしたいという明確な目的を持つ人が、最初に学ぶ言語としてPHPを選ぶのは理にかなっていると思う。
なおこの言語を本気でディスってる人は大体視野の狭いエンジニアであることが多いので、地雷エンジニアを見分けるのにも役立つ。
綺麗なスクリプト言語。日本発で世界的に普及している数少ないIT技術の一つ。
言語仕様が美しく、それゆえにファンが多い。Ruby on RailsというWeb用フレームワークの登場で、Webアプリでの採用例も一気に増えている。
基本的には他のスクリプト言語と同じくサーバサイドでのプログラミングに用いられることがほとんどである。
スクリプト言語で何かを作成するのであれば、Rubyを選んでおけばそう失敗することはない万能言語。
サーバサイドで何かすることに興味を持っているならば、最初に覚える言語としてはとてもオススメ出来る。
一方で、なぜかRubyが採用するWeb側のフレームワーク(具体的にはprototype.jsやCoffeeScript)はいつもクソなので、そちらは深入りしないのが吉。
ブラウザで動くスプリクト言語。ブラウザ戦争が勃発していた18年前、奇跡のようなめぐり合わせでベンダー間の合意が取れ実装された言語。
言語としてはプロトタイプベースのオブジェクト指向という少しめずらしい形式を取っているが、実際にはあまりその特徴は利用されていない。
言語仕様がイマイチで、大変バグを生みやすい言語であり、また関数のスタックが深くなる特性もあり、あまり積極的に使うべき言語ではないが
ブラウザで動く言語が現在これしかないので、大きなシェアを持っている。
一部の物好きがサーバサイドでこの言語を使おうと(主にnode.jsで)四苦八苦している(とはいえ、1つの言語でWebとサーバが完結するのは大きなメリットだ)。
ブラウザで動く唯一の言語のくせにとにかく書くのが面倒ということもあり、多数のAltJSと呼ばれるJavaScriptに変換される別言語を生み出されている。
まあJavaScript本体人が手で書く言語ではない…というのがECMAScript5までの印象だったが、新しい規格が順次導入されており、今後に期待。
Web業界で生きていくならば、好むと好まざるとにかかわらず覚えなければいけない言語である。
最初に覚える言語としては、ブラウザ上でゲームなども作れるし、node.jsでサーバサイドもできるしで、意外とオススメだったりする。
C、C++やJavaと同じでコンパイル言語。サーバサイドで高速かつ安定なバイナリを出力することを目的とされ設計されたGoogle発の言語。
その目的においてはかなり高性能を誇るので、特に速度を要求されるサーバサイドでのプロジェクトでは導入が進んでいる。
それ以外の目的ではあまりこの言語を採用するメリットはないが、ニッチな用途をピンポイントで抑えており、これから広く利用されることも期待される。
コミュニティも活発であり、初めて言語を覚える人が参入すれば喜ばれるだろう。言語としても美しい言語なので、サーバ系のプログラムに興味があればオススメである。
繰り返しだけれど、それぞれの言語ごとに特徴があり、特徴のない言語は廃れていく。
ここに挙げた言語は何らかの特徴があり、何らかの用途で必要なので生き残っている。
その背景を知った上で、ここにある言語は全部ある程度読み書きが出来るようになると素晴らしいと思う。