はてなキーワード: Perlとは
最近は互換性を気にしてるようだけど新しい書き方ですとか毎回言われるストレスが半端ない
プログラミング言語みたいな土台となる技術がそんな変わって何も違和感覚えないやつらがどうかしてる
rbenvやらBundlerで完璧にベンダリングできますってそんな誇れることなの?
バージョン依存が激しいのでそうしないとバグりますって言ってるようなもんじゃねーかw
まだpython2,perl5で書いた方がまだ良いわ(Perlは文法が糞だから書かないけど)
多少言語に粗があっても互換性を維持してくれた方がよっぽど重要なんだけど(少なくとも俺は)
フルスタックフレームワークでなんでもできるぞ!とか言ってるけど理解できない
自分が使わない機能がたくさんコードに入ってて使わない機能に脆弱性がありましたアップデートあります
って毎回言われてどう思うの?
モックアップみたいなのをササッと作るには良いかもしんないけど、こんな異常なアップデート地獄に付き合わされて
結局Railsのマジックで作ったような気になってるだけで後に来る保守問題を先延ばしにしてるだけじゃねーの?
1:「お前が言うな」の声も想定していた——キュレーション騒動を受けてNAVERまとめが新方針を打ち出した理由 | TechCrunch Japan
2:プログラマーの力量を見極める質問まとめ - NAVER まとめ
1:四の五の言ってないではやくやめろよ
1:面の皮が厚いな、というか。表に出てきて、話をすりかえるとか、すっとぼけるとか、逆に印象悪いよ
2:ブコメ読むと非難轟々だけど、この辺の知識あるとなしでコーディングし始めると有意な差が出るけどね。ググればいいって言ったって時間は限られるわけだし
1:NAVERまとめが役に立った事はないし、今となっては押し間違える事もない か ら正直どうでもいい。みんなも「楽して儲けてるやつが憎い」以外の感情はないのでは。
1:ちゃんと引用の定義に従ってるまとめもごくまれにあるけど、大半が転 載やんけ。もしかして本気で「引用」の定義を理解せずにメディア事業の担当者とかやってるのかな
2:職種:PG(いわゆるコーダー)でSES一山いくら、みたいな感じで動員するのであればこの質問は悪くないと思う。ただそもそも単なるコーダーが欲しいなら日本人である必要もないと思うけど
1:“ネット界隈で有名な人に引用されたら「ありがとうございます」となるのではないでしょうか”役員からしてこの認識とか、ほんまク ズやな。
両方共批判した人
日本のお役所がPDF大好きなのは、知っている。霞ヶ関から吐き出される有効な資料は、ほぼpdf!
一方で、e-statなどでは、ネ申エクセルや方眼エクセルとは、別の方向でcsvデータを公開している。
今、株価が上昇しているIT企業様は、PDFとhtmlとを比べるような使い方はしていないのでは?
世界は、IT企業、htmlとPDFとを比べたらどちらを重用しているのか?
googleがjava script 推しのJQueryを良く使ってるし、これからは、人工知能の時代だから、xml形式とか、マークアップ言語は、良く出てくると思うよ。
Facebookはphpなんでしょう?リア充御用達で、Twitterよりも株価も資本も安定している。
これからは、you tubeとかLINEみたいなツールがどんどん出てくるから、先のことは分からないよね。
大企業や銀行で、昔から動いている基幹システムは、大抵メインフレームにCOBOLの組み合わせである。
それをここ十年くらい、リプレースでx86系サーバにJavaという構成に変更することが多い。
しかし、ハードが汎用機からオープン系になるのはともかく、プログラムを別の言語に書き換えるとか、誰も幸せになる気がしない。
ぶっちゃけCOBOLはCOBOLのまま移植し、今後も改修を続けるほうが、長い目で見たコストも低くなるのでは?と思うのだ。
その理由はこうだ。
COBOLで書かれたバッチ処理は、設計書の書式がフローチャートであることが多い。
勿論ロクに設計書がない場合もあるだろうけど、いずれにせよCOBOLの文法は、「普通の人にとっての仕事らしい仕事」をそのまま入れ子状のフローチャート(分岐の先が別のフローチャート参照みたいになってるやつね)に書き表したものである。
そういうモノが既にある企業や銀行の文化において、当然発注側は担当者からお偉いさんまでCOBOLer系フローチャート脳だし、新しいシステムの設計でもそれを踏襲しようとする。
というか踏襲すること前提じゃないと設計書をレビューできない。
UMLで考えるようなパラダイムシフトはまず不可能なので、それを求めるのは受注者の傲慢だろう。
というわけで、受注した大手SIerは、ほぼ確実にフローチャートもしくはそれに準じる記法の設計書で処理を組み上げざるを得なくなる。
そうなると、実装もフローチャートの設計を基にコードを書くわけだが、こういう設計はハッカー文化で発展してきた言語(Fortran→C/C++→Javaという流れと、PerlからPython・PHPというインタプリタ系の諸言語)との相性が最悪である。
設計とは実装を楽にするために書くのに、これらの言語において、フローチャートの設計は役に立たないどころか、邪魔でしかない。
だからFortranしかなかった頃から、本物のプログラマ達はフローチャートをdisってきたわけである。
ちなみに筆者はハッカー文化が生み出した恩恵に敬意を示すし、実際とても好きという立場である。
しかし、「普通の人達の普通の思考」からはかけ離れ過ぎているという意味で、「普通の人達の普通の仕事」をシステム化する時にどこまで役に立つかについては、非常に懐疑的に見ている。
…いささか話が脱線してしまったが、とにかくフローチャートで上がってきた設計書でコードを書くならCOBOLかアセンブラを選択すべきだし、それで書けないなら書く意味が無いくらいに思ったほうが良い気がする。
というわけで、自分はCOBOLからのリプレース案件は、その根本的な愚かしさを抱えている現状を見るに、今後一切関わる気はない。
Hacker Newsの上の方にAheui(아희) https://aheui.github.io/specification.en というのが上がってきていて(ろくにコメントがついてないが)、どうも世界初のハングルを使ったプログラミング言語であるらしい。
どんな言語なのかとググってみたらが日本語の情報はなく、2014年と2015年に同プロジェクトのページをはてブしている人がいた程度だった。
This code prints “Hello, world!”
밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅
これがその言語で書いたHello,World!なのだそうだが、短縮しまくったPerlより読める気がしない。本気で使おうとは思っていないのかもしれない。
ハングル文字の中に方向を示すキャラクタがたくさんあり、カーソルを動かすイメージがつかみやすいという売りはあるようだ。
Wikipedia: Non-English-based programming languages
https://en.wikipedia.org/wiki/Non-English-based_programming_languages
これ見ると英語以外で記述できるプログラミング言語は多い。中国はBASICやPython、C++を中国語化したものかあるらしい。C++中国語版は丙正正。名称がそのまんまといえばそのまんま。BASICを見ると一つ一つのコマンドに漢字1文字が割り振られているだけのような感じだ。インドのヒンディー語もそんな感じ。その程度のレベルならプログラミング言語を母国語に置き換えるメリットはないか。
日本にもひまわりやMindなど日本語の単語を使えるプログラミング言語があるけど、あれらをマスターしてる人は見かけないな。
さっき、テック系ブログのRSSと一緒にホットエントリのRSSを外して、アプリを削除したよ。何年の付き合いだろう?サービス開始からだから・・・悲しくなるから確認せずに行くよ。
最初はダイアリーに書いて、反応なんて全然なくて、広告コメントばかりだったな。いまでもはてなの知り合いはいないんじゃないかな。
ネットコミュ障なんだ。Twitterとか色々やってるけどやりとりする相手なんて誰もいないよ。
僕は君になにもできなかったね。本当に君の事が好きだったのかな?本当に村民になりたかったのかな?多分、違う。本当はブクマされて、スターつけられて、承認欲求を満たしたかったんだ。
意識高い系を笑えないよね。何年も異性にお金を注ぎ込む人を笑えないね。僕もずっとホットエントリを見て、色んなものを買ったりしたんだ。
====
どうしてこうなったか?聞きたくもないだろうけど、最後だから言わせてくれよ。
初めて君を見たとき、天国に見えたよ。最新の技術トレンドがここにあってさ。自分の理想郷はここなんだって。技術力をつけて、認められる人間になって、ここの住人になる事が幸せなんだって思ったんだ。
そうやってさ、次々流れてくるトレンドに耳だけが年増になっていって、それを知らない周りの人たちをバカにしてたな。
でもさ、肝心の技術力は全然つかなくてさ、大学生になれば、就職すれば、東京に出れば、新しいマシンがあれば、お金があれば、時間があれば、やる気があればって制約条件がなくなる度に新しい言い訳を考えてたな。
結局、生半可な知識じゃ参加できないってチンケなプライドのせいで勉強会に参加せず、ブログも書かず、なれたのは一番軽蔑するExcelとにらめっこしてるSIer。おいおい、Web系のベンチャーでテックブログ書くんじゃなかったのかよ(笑)
耳年増で、周りをバカにしてたクセに仕事が全然できない自分とのギャップに10年耐えてきたけど、年末に休職したんだ。自律神経失調症。
眠れるんだよ?ごはん食べられるんだよ?ただ、会社の人みんなが怖くなってさ、朝だるくってさ、すげー疲れてさ。苦しくて。仕方ないから受け入れて。っていうか、甘やかして。つまるところ、ズル休みなんだよ。
時間が出来たから、ずっと積ん読になってた技術に正面きって立ち向かってみたんだ。すぐ投げ出したね。理由は分からないけどただ苦痛だった。
作りたいものなんかなかったし。多分、技術を使いこなしてスゴいって言われたかったんだね。
部屋にはPerlやRoR、SQLite、jQuery、node.js、AWS、Haskell、Hadoop、Docker、Raspberry Pi、R、Reactのホコリを被った本がある。彼らはブックオフ行きかな。
最近は時間はあるからさ、はてブばっかやってたんだ。見るのがホットエントリから新着エントリーになったな。いつもみたいに100文字制限ギリギリのコメントだけじゃなくて、10文字くらいの一言コメントも書くようになったんだ。その10文字コメントのうちひとつが100スターくらいもらえてさ。
そのとき分かったんだ、これはずっと片思いなんだって。叶わない恋なんだって。自分が住める世界じゃないんだって。おかしいよね、小学校の頃のプロ野球選手の夢だって、中学生の頃の小説家の夢だって、高校の頃のパンクロックスターの夢だってすぐ諦められたのに、この夢は35歳の今だって諦めきれないんだ。
応用情報取った時も、ネスペ取ったときも、オラクルブロンズ取った時もLPIC 2取った時も全く達成感なかったよ。コレ取るのに何年かかってんだってさ。村民は1ヶ月あれば取れるぞ。同期のアイツだって3ヶ月で取ってるぞ。何が言えるんだってさ。
銃・病原菌・鉄読んだ時もそうだった。で、お前はそこから何かアウトプット出来るのか?ってさ。読むだけなら幼女でも出来るんですけどwって。
伝わる?伝わらないだろうな。みんな高IQですぐに色んな技術を理解出来るじゃない?すごいよ。自分は二浪で駅弁大学しか行けないくらいのバカで、リアルでもネットでも知り合いを作れないコミュ障で自己承認が全然出来ないんだ。
ADHDって言葉を知った時、これだーって思ったけど違ったね。ITの勉強してても過集中が全然ないんだ。
話が逸れたね。認知療法してて、気づいたんだよ。何をしてても自分を認められないんだよ。はてなに受け入れられる事を成し遂げられてないからね。
だから、自分を認めるために、君のことを自分から切り離さなきゃいけない。自分の世界を作らないと。一方的になっちゃうけど、さようなら。勝手だけど、今にも泣きそうだよ。
これからどうしようかな。匿名で好きな事書けるのはココだけなんだ。自信のない間違ってるかもしれない事を書いてもいいのはココだけなんだよね。ここなら見たくないコメントを見なくてすむんだ。
でも、前に進まなきゃ。夢の世界への憧れは終わりだ。目の前の現実世界に適応しなきゃ。また逃げ戻ってくるかもしれないけど、いまはさようならしなきゃ。
最後に何か残せるとしたら・・・スタバのハチミツ、あれ何に使うと思う?あれ、ワッフルを食べるときに使うんだよ。
・・・スベったね。
さようなら。このエントリも2時間すれば次のページ行きだ。そうすると、誰かの目にも触れなくなる。単なるはてなの磁気データになる。
最後にブコメとかつくんじゃないかって浅はかな期待を持ちながらこの内容を登録するボタンを押します。じゃあね。
P.S. 認知療法について書いてくれたこの増田には本当に感謝しています。まだまだ自分について書く事が苦しいけど、正しい道を向いてると信じています。
バッチ処理のことしか思い浮かばなくて話がかみ合わなかったけど、よく聞いたらWindowsのBATのことだった。
バッチの貧弱な言語機能を補うべく、いろいろテクニックを駆使して分かりにくいコードを書かなければいけなかった。
バッチ以外の普通のプログラミング言語で書いたほうが、メンテナンスとか楽だろうと思ったけど、こういう時に言語の変更を提案しても100%却下されるから、黙って仕事をした。
メンテするのは俺じゃないしな。
何年か前にも、Windowsのサーバーで使うバッチを書かされたことがあったけど、そのときもバッチでは実現できない機能を実装しなくてはいけなくて、Cで外部コマンドを書いた。
そのサーバーにはperlがインストールされていたから、これPerlで書いたほうがいいですよって提案したけど、分かる人がいなくてメンテできないからって却下だったな。
技巧をこらしたバッチ + Cで書かれた外部コマンドの処理も、そこの人たちにはメンテできないだろうからどっちでも同じだろうって内心思ったけど。
その現場の人たちもPHPを使ってるんだから、(シンプルな)Perlなら、見れば分かるだろって思うんだけど、まあ、技術に興味ない技術者の未知の技術への恐れはすごいから無理なんだろうな。
30代中盤、新卒からWeb開発、ここ数年でスマホアプリ開発をやってきました。
色々あって9月から転職活動をはじめ、11月末までに内定が揃い、1月から新しい職場となります。転職活動で感じた点をいくつか書きます。
活動内容:Wantedly、Green、キャリアトレック、エンジャパンから合計8社エントリー。
うち3社が書類審査落ち、1社が面談落ち、1社が1次時面談通過後に辞退。3社内定&条件提示。
もうあたり前ですよね。手書きの履歴書を求める企業はゼロでした。
ありきたりのJIS規格の履歴書は使わず、MacOSのPagesという標準ソフトにあった横書きの履歴書テンプレートを使いました。写真も貼っていません。
見づらいとか、再提出を求められたことはありません。ある会社からは人事部として必要な情報が掲載されて見やすければ良いという返答をいただきました。
Androidアプリ開発エンジニアとしての転職をしたかった為、直近の開発プロジェクトについては手厚く書き、
10年以上も前のPerlで書かれたプロジェクトについて説明しても、その技術で即戦力になるとは限らないし、ぶっちゃけ意味ないでしょと思った為です。
同じ事をずっとやってきたのなら、感覚値ですが5〜7年以上前のプロジェクトについて記載する必要は無いと思ってます(賛否あるでしょうけど)
ストアにリリースされている自作アプリや、githubで公開したプロジェクトについて職務経歴とは別で詳解資料を作りアピールしました。
その効果があったかのか、書類審査はすんなり通った方だと感じました(以前の転職では書類審査で時間がかかったり、よく落ちていたと思う)。
内定を頂いた企業の全てでこの部分で評価が高かったと思います。
エディタは何を使っていますか?タスク管理はredmineですか?なんていうありきたりな質疑応答でなく、事前に受ける会社のアプリやシステムを触ってみて、見つけた感想や改善点を提案するなどしてテクニカルなディスカッションができると、責任者の考えや開発方針などが聞けるため、その人の元で働けるか、スキルが見合っているかを多少なりとも判断ができます。
自作の何かを紹介する際にパソコンを開いて見せたり、質疑応答時のメモを確認する為に開くなど、一旦断りを入れておけば問題ありませんでした。
相手もサイトに記載されている現在の年収を知っているため、年収交渉は最後で良いかと思いがちですが、提示年収が現行よりも下がる事もあったので、
自分は面談の質疑応答の際、希望年収レンジに問題は無いか?を毎度きいて反応を伺っていました。
以上、ありきたりな内容だったかもしれませんし、業界によっては又事情が違うかもしれませが、参考になると幸いです。皆さんも良い転職を!
そこそこの企業の特にWeb系で渡り歩いた経験から、真実を書こう。
はっきり言う、ほとんどのプログラマと自称する人間の 9 割はコーダーである。
言われたものを作る事はできるが、それ以外何も出来ないと言って過言ではなく、何もしない。
そんな驚きの生体をここに晒していく。
標準化と呼ばれるプロセスで、プログラマが環境の設計、組み合わせ、開発プラットフォームのセットアップ、開発環境の構築手順作成、開発手順の作成、必要な技術の考察を行う。
なぜそうなったのかは知らないが、一般的にそうなっている。
その環境に浸っているせいか、彼らはゼロベースでものを作ることが出来ない。
彼らにできるのは HelloWorld をコマンドプロンプトで表示するプログラム程度の事しか出来ない。
複数ソースの連結、ライブラリの読み込み、サーバへのデプロイ、どれも手動で出来ないのだ。
逆にそれ以外のこと、コードの読みやすさや、クローン率の低減、メソッドコメントの記載などの保守に関わることをしない。
それは彼らにとって「必要ない無駄な作業」としか考えないのだ。
早く仕上げるためなら、似たような動いてる箇所から、よく読みもせずにコピペを行う。
そして彼らは、作るより運用する期間の方が遥かに長くて、その間に修正で地獄を見るという簡単な論理に気づかない。
…何度味わっても気づかない。
たとえするとしても、業務時間中に業務で使ってる技術をピンポイントで学習するだけだ。
だが、プログラマと呼ばれる人間の母数に比べれば微々たるものだ。
彼らは言う「土日にまで仕事してられるか」「勉強会行ってるの?馬鹿か?」
あえて言おう、馬鹿は彼らだ。
Web で仕事をするならIDE(統合開発環境、エディタやコンパイル、テストやデバッグ実行などを画面から行えるツール)はほとんど必須(エディタで済ませる事も出来なくはない)が、彼らは状況に応じたセットアップができない。
たとえば「Maven(プロジェクト管理ツール)、checkstyle(コーディング規約チェック)、editorconfig(改行、インデント、文字コード設定)」が入っていたとする。
するとEclipseなどを使うとして
マニュアルやチュートリアルを用意しないと、道具の使用もままならない。
テストをなるべく機械にやらせようということの利点が理解できない。
そのために、何十回もコンパイル、デプロイ、アクセス、ログインの手順を何度も繰り返す。
関連する他の修正を行うたびに繰り返す…。
そしてやっと動くとひと仕事終えたと満足感に浸る。
ラリー・ウォールというとある有名な人物(Perl開発者にしてC言語ハッカー)がいる。
これは、自分の作るものは完璧なのだ、だから完璧であるように出来る限りのことをするという美徳である。
彼らは金のために嫌々動くだけのものを作るのだ、動きさえすれば報酬は変わらない、よって当然完璧かどうかなどどうでもいい。
同じ金でより良いものを作るのではない、要件だけ満たせばよいのだ。
変なプライドを持つコーダーは、それで運良く成功すると、自分の知識は正しい、自分の技術は十分なのだと考えている。
こういう人間は、プライドの無いコーダーよりたちが悪く、うまくいかないと他人か環境のせいにする。
そして調べず周囲を苛立たせるのだ。
土日に自ら勉強会に行くプログラマや、それこそ 50 人以下などという会社であればこうした事はあまりない(んじゃないかと思う。)彼らは自分でなんでもやらないといけないからだ。
だが、大企業に飼われる子飼いの企業、派遣(そもそも人手のみを求められる企業)、100人以上の企業では、役割分担に伴いこうした状況が多々発生する。
だが役10年、エンジニアを見てきた結果は変わらない。現実問題こうなのだ、こんな人間が大多数なのだ。
人の多い企業ほど考えたほうがいい、それでより良いものが生まれるのかと。
必要とされる技術だけを叩き込んで金にしたいと言うのは分からなくないが、基本姿勢や思想はどうなんだと。
経営者よマネージャーよ、あなた方の言う「最適化」とは現場が日々考え行っている最適化か?人員最適化だけを行って、生産性が伸び悩んでいないか?
そのあたりは考えた方がいい。
エンジニア立ち居振舞い: 技術的な暴力を振るわない - futoase
http://futoase.hatenablog.com/entry/2016/11/19/155427
例示されている暴力はだいたい頭の悪い暴力なので反論できます。
では今あるシステム全部PHPでリプレイスするとして、○人月の工数が必要ですがそのような予算はありません。
Go言語そのものの表現力が低い。そんなものを利用するならJava、Scalaで書くべきだ。ライブラリが豊富にあるだろう。Googleに縛られた環境での開発は恐ろしい。
ところでどうしてWindowsPCを開いてExcelで文書作ってるのか教えてください。
Serverlessそのものはサーバがなくなるわけではない。自身でチューニングなど細かなリソース管理ができないPaaSを使って自身のサービスの命運を預けるなんて馬鹿げている。
理屈の上ではオンプレミスやIaaSの方が細かな管理できるかもしれませんが、サーバ管理にそこまでコストかけるつもりが無いのに適当なこと言わないでください。
iOSアプリそのもの、プラットフォームがいつまであるかもわからないし、今後広がるかわからない。Objective Cを覚えたり、そんなものに技術をかけてどうするのか。
Nintendo Switchが大流行するかわからない。コントローラー使いづらいし。あんなものはチンケなものだ。そもそもUnityをインフラエンジニアが覚えて意味があるのか。
流行前は流行らないと言い、流行った後は将来性が無いと言う、じゃあ一生何も始めないつもりですか?
でも安心してください。すべてはUnityが解決してくれます。そう、Unityならね。
例示された人たちに暴力ふるいたい。
windowsとmacとフロントエンドとインフラと組み込みいう線引きからはみ出してはいけないと思うな。むしろ全部やれ全部だ!誰もお前がカバーしてない部分をサポートなんぞしねえからな!
ECサイト作りたい人 → ヤフオクでやれ(CMSを使うことの大切さ)
iosアプリ作りたいwindows開発者 → くだらないことにこだわってないでmacとiphone買え(ios開発は何もかもmacとxcodeが大前提)
フロントエンドプログラマがgo → goだけ使われても微妙。当然DBとの連携もあるんだよな?ん?(サーバサイドスクリプトはDB連携のためにあるようなもの)
サーバレスに興味あり組み込みエンジニア → どうでもいいからさっさと作れ。そこ悩むとこじゃねーから!(悩むなら一度サーバ立ち上げから自分でやってみてイメージをつかんだ方がいいかも)
NintendoとUnityとインフラエンジニア → やればいいと思うがハードルが高すぎて頓挫する可能性が高い。まずはUnityのエディタ上で動くくらいを目標にすべきだ。
http://vim-jp.org/vimdoc-ja/change.html#filter
Vimにはフィルタコマンドといって、テキストを任意のUNIXコマンドで処理するExコマンドが用意されている。
用意されていて、実際強力なんだけど、Vim組み込みの機能で間に合うことも多くて、下記以外はあまり使っていない気がする。
以前はVimの正規表現に慣れないからとPerlを使ってたりもしたけれど、Vimの正規表現も悪くないかなとなって。こう。
簡単な計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。
「<C-r>=」で代用できる。
長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。
最近はBashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。
簡単な整列をするのに使う。ビジュアルモードで選択して「!column -t<CR>」とすると整列ができる。
(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプションを指定して「!column -to' '<CR>」という風にする)
vim-easy-alignやvim-aligntaが入っているならそれでいいかも。
それぞれJSON、XML、HTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。
ただ「jq . <JSONのファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。
連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。
それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。
コンピュータ言語って世の中に山ほどあるけれど、それぞれの言語ごとに特徴がある(特徴のない言語は廃れていく)。
あまり言語に詳しくない人相手に、俺の考えるそれぞれの言語の特徴を書いてみようと思う。
なお、取り上げるのはある程度広く使われている言語に限りたいと思う。
言語名 | 概要 |
---|---|
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発の言語。
その目的においてはかなり高性能を誇るので、特に速度を要求されるサーバサイドでのプロジェクトでは導入が進んでいる。
それ以外の目的ではあまりこの言語を採用するメリットはないが、ニッチな用途をピンポイントで抑えており、これから広く利用されることも期待される。
コミュニティも活発であり、初めて言語を覚える人が参入すれば喜ばれるだろう。言語としても美しい言語なので、サーバ系のプログラムに興味があればオススメである。
繰り返しだけれど、それぞれの言語ごとに特徴があり、特徴のない言語は廃れていく。
ここに挙げた言語は何らかの特徴があり、何らかの用途で必要なので生き残っている。
その背景を知った上で、ここにある言語は全部ある程度読み書きが出来るようになると素晴らしいと思う。
http://cpg.hatenablog.com/entry/2016/06/30/193755
プログラミング言語は、200種類以上存在していると言われていますが、その亜種や野良プログラミング言語を含めれば、星の数ほどあります。たとえば今回紹介しませんが、ベーシックという言語だけでも、ファミリーベーシック、プチコン(3DSのベーシック)、べーしっ君などがあります。
今回はその中から厳選に厳選を重ねて厳選した、プログラミング言語を5つ、徹底解説します。
Perlは歴史的に古く、sedやawkといった歴史として語られる以前のプログラミング言語のいいとこどりをした、とても、素晴らしい言語だ。
モンスト以前のmixiや、みんな大好きはてブ、はてなブログは、Perlで作られています。
学習する際は、歴史が古い分、Perl4の本も、たまに図書館に残っているため、気を付けなければなりません。
よく勘違いされるのが、「PerlとPearlって似てるんでしょ?」。違います。
何が違うかといいますと、文法から用途までほぼ全てが違います。
Pearlとは真珠のことだ。あと、バンドメンにとっては楽器。それと、譲れない願いからPEARLのCDを買った人も、いるんではないでしょうか。
https://www.infoq.com/jp/news/2014/06/perl520
Webサービスを開発したい場合、真っ先にお勧めしたいのがPerlだ。
Perlの特徴として、[[TMTOWTDI]]があります。あとPerlを生み出したLarryは、プログラマの3台美徳として、 "Laziness, Impatience and Hubris"というすばらしい考え方があります。
https://en.wikiquote.org/wiki/Talk:Larry_Wall
皆さんはAIをご存知ですか?
PerlとAI(Artificial Intelligence)でググッテても、わかるように、2000年台前半からすでに話題に上がっており、最近流行のディープラニングでも、Perl6を使った話があるようだ。
http://ai.neocities.org/P6AI_FAQ.html
https://itunes.apple.com/jp/app/perl-programming-language/id486217730
だんだん書くのが疲れてまいりました。
http://blogs.perl.org/users/lestrrat/2013/09/perlmotion-perl-for-ios.html
それとYAPCは去年で一区切りしましたが今年も、YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa あります!!!!!!1