「コンピュータサイエンス」を含む日記 RSS

はてなキーワード: コンピュータサイエンスとは

2020-08-11

anond:20200811204718

上でロンドン大学院の事書いた増田だけど、ひょんな流れで今アジア欧州会社システムエンジニアやってる。

大学でやってた専門が違いすぎて概念が落とし込めない時が辛いんだけど、ちょうど今からコンピュータサイエンスの科目とか勉強し直すか考えてた。

ちょっと前向きになってみるわ。ただでさえオンライン講座ばかりなんだけど。

2020-08-04

ビジネス本に夢中な意識高い系低学歴文系くんは

その本の著者がハーバードコンピュータサイエンス学位をとってIBMエンジニアとして10年働いていたキャリアがあるという事実は見ようとしない。

2020-08-01

プログラマ勉強するな

よく「プログラマ勉強し続けなければいけない」といいますが、嘘です。

それは、レベルの低いプログラマの話です。そういう人たちが想定しているのは、たとえば流行りのフレームワークが出てきたらそれを勉強するとか、仕事特定プラットフォーム知識必要になったのでそれを勉強するとかです。

こういうことを一所懸命勉強している内は、プログラマとしての実質的な成長は見込めません。それらを勉強しても、特定フレームワークなどの使い方が分かる人になるだけです。ほとんどの場合、5年も経てばその知識は役に立たなくなります

実は、ソフトウェア技術などは、コンピュータ黎明期から本質的進歩ほとんどありません。だから本質部分が分かっている人は、流行り廃りのある技術習得に余計な労力を割く必要がありません。

プログラマ勉強すべきはこの本質部分、つまりコンピュータサイエンスの基礎です。フレームワークの使い方は知らなくてもリファレンスを見れば良いのに対し、コンピュータサイエンスの基礎はググっても決して身に付きません。

プログラマが身につけるべきコンピュータサイエンスの基礎は、多くの大学計算機科学情報工学の2〜3年生で学ぶような内容、

などです。逆に、こういう素養がないのにプログラミングスクールRailsとかCakePHPみたいなのを触って、プログラミングできる気になっている人に5年後10年後の市場価値はありません。

2020-07-28

企業から見た競技プログラミングガチ勢への本音

私はみなさんがよく知っている某社でVPとして働いている。VP仕事は多岐に渡るが、その中でもソフトウェアエンジニア採用は最も重要仕事の一つである。そんな中、弊社の採用対策として、特に新卒学生の間で競技プログラミングというもの流行っているようである。これについて私の所属する部門での印象を述べる。

まず、身も蓋もないことをいってしまうと、少なくともうちの部門では新卒・中途関わらず競技プログラミング知識はほぼ不要である新卒のヘッドカウントは少なくなっているものの、大学コンピュータサイエンスをしっかり学び、かつ自分で手を動かした経験がある人であればあとは人間性問題である事が多い。弊社は選考の際にコーディングスキル特に競技プログラミングスキルを見ていると思われることが多いらしく、学生もその対策としてまるで受験勉強であるかのように取り組んでる人が多いという印象がある。弊社はそれなりに大きい会社であるため、中にはそのような目線採用面接をする部門エンジニアもいると思うが、少なくともうちのチームはコンピュータサイエンスの最低限の足切りをしたあとは一緒に働いて和を乱さないかを重視している。つまり面接をしたエンジニアの単なる印象に近い(これをあからさまにいうと社内でも怒られるが、意外とそんなものである。)

これだけ聞くと弊社も一般会社と変わらないのか・・・と思われるかもしれないが、これには色々理由がある。まずは私が見ている部門の話をしたい。

まず弊部門革新的プロダクトを次々開発するための「高速道路」が非常に整備されている。あまり詳しく言うことはできないが、例えばソフトウェアエンジニアであればGitHubやCircleCI、AWS、といったサービスを使って開発をしていると思う。これらの10年先を行っているインフラが社内で自由に、しかも誰でも使いやすいように整備されていると思って貰えればよい。これによってプログラミング経験ほとんどない人(といっても最低限の足切りはされていると思ってほしい)でもドキュメントコードを参考にすることですぐにプロダクトとして出すことができるということである。これは逆に言えば競技プログラミングで青とか黄といった高度なプログラミングの技術力は必要ないということである。どちらかといえば社内に存在する膨大な技術資料を読み込み応用できる忍耐力と発想力、そしてわからないことは例え相手英語があまり話せない人だったとしてもコミュケーションを厭わない対人能力のほうがはるか重要である。これは社内の人材評価をする際の統計データでも如実に現れている。

一方で実験プロダクトや社内向けプロダクトを開発している部門おいては少々事情が違う。こちはいわゆる「高速道路」が整備されていないためコードを1から書く必要がある。こういう場所では競技プログラミングといった高度なプログラミングの技術力を持つ人が多数活躍している。完全にリサーチャーとまではいかないものの、半分リサーチャー、半分エンジニアといった感じの仕事になっていることが多いと思う。そのような部門では驚くべきことに「Gitの使い方がわからない」といった人まで存在する。だがしかしそれを圧倒する実績を保有しているか、または現在発揮中のいずれかである。ただ弊社も大企業になって久しいためこのようなポジションだんだん減少傾向にある。競技プログラミングで赤や黄であり高度なアルゴリズムを開発するポジション希望するという人は常に一定数いるが、正直採用されることは困難というイメージである。どちらかと言うとこのような部門は優秀な人を引きつけるための広告塔として機能していると思ったほうがよい。実際に採用されるエンジニアの大半は弊部門のような泥臭い作業を任されることがほとんどである

最後個人的主観を述べておく。これはあくまでも私の周辺だけの話ではあるが(とはいえVPではあるのでみなさんが思うよりは広いと思う)、10年以上前入社した人はいわゆるプログラミングガチ勢が多かったように思う。しかし今採用されている人はそのような一点特価型はほぼいなくなり、技術力やコミュケーション力を含めたオールラウンダーが増えてきた。これはあくまでも想像であるが、現在シニアエンジニアとして活躍しているような人材技術力はかなり高いものの、やはりコミュケーション力や忍耐力といった点で難点のある人が多い。そのため、ジュニアとして採用するエンジニアはそういった人材とチームを組めるだけのコミュケーション力や忍耐力が要求されることになる。一方で技術力に関していえば社内で独自開発するよりは、外部から会社ごと買ってくるほうが簡単である。という意味でやはり求められているのはすべての面において難点がないことなである。これは会社の規模に応じた必要不可欠な変化であると考えられるし、また弊社は外資の中ではクビになりにくい体制であるというのも大きいだろう。

2020-07-09

anond:20200709073009

コンピュータサイエンスって計算機科学だよな? 計算って数学じゃねえの。 難しいわけじゃないって最低レベルの話してるんだからそらそうだろ。

anond:20200708122030

こういう価値観においては、猪の罠のためにラズバイ買って独学でコード書く猟師みたいな人より、高尚なコンピュータサイエンスを修めてHFT用のコードみたいな電力を浪費してチート染みた手法他人から金を掠め取り資産家を肥え太らせるだけの人類の99%には害しかないプログラムを書いて高給取る人間の方が圧倒的に正しいんだろうなあ。

2020-07-03

[]2020年6月はてブあとで読むトップ30リスト

はてブホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ

530あとで/4137users NTT フレッツ光における通信速度などの現状について、背景や仕組みから正しく理解する 2020 - diary.sorah

304あとで/1974users 高等学校情報科情報Ⅱ」教員研修用教材(本編):文部科学省

204あとで/2230users iPhoneでの料理撮影が苦手なライターカメラマン論理的指導を受けた結果→憂鬱撮影が楽しくなった - メシ通 | ホットペッパーグルメ

202あとで/1706users 天才プログラマーの「締切に対する考え方」に、感銘を受けた。 | Books&Apps

177あとで/1946users ネットワークエンジニアとして | www.infraexpert.com

170あとで/1064users 【翻訳技術負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wadaブログ

169あとで/826users 7つの設計原則オブジェクト指向プログラミング - ソフトウェア設計を考える

168あとで/1180users ローカル開発環境https 化 | blog.jxck.io

166あとで/1005users ソースコードブランチ管理パターン | Martin Fowler's Bliki (ja)

164あとで/991users 大学に行かずにコンピュータサイエンスを学ぶときに優れている教科書講義映像はどんなものがあるのか? - GIGAZINE

164あとで/1541users 衝撃の結末が話題 無名ラッパー投稿したYouTube動画が異例の48万再生投稿者と大学側を取材 - ねとらぼ

161あとで/1789users 無印良品によるサーキュレーターの季節別の活用方法有益すぎる→早速効果を実感する人も「部屋が快適…!」 - Togetter

147あとで/2111users 批判文化日本技術後進国にしているかもしれないという話 - メソッド屋のブログ

143あとで/809users データベース設計の際に気をつけていること - 食べチョク開発者ブログ

142あとで/731users Web企業/事業会社への最高の反面教師: "Spotify's Failed #SquadGoals"を読んで - アジャイルコーチ備忘録

136あとで/1777users 「言い切る人」が強すぎる。 | Books&Apps

129あとで/1655users iPhoneNFCシールでの自動化が便利すぎてシール貼りまくった – ごりゅご.com

129あとで/616users 良いコードを書くための8つの習慣 - New Relic公式ブログ

128あとで/1164users GAFAコーディング面接こんな感じでした - yambe2002’s diary

126あとで/1345users 無料で美麗な絵画カオスポスターなどがダウンロードし放題、編集や商用利用も可能な「Artvee」が登場 - GIGAZINE

125あとで/687users デザイン脳を鍛える方法ハラ ヒロシnote

125あとで/993users 1からイラスト勉強をした話|せたも|note

124あとで/608users Dockerとはどういったものなのか、めちゃくちゃ丁寧に説明してみる - Qiita

124あとで/992users Web制作の常識が変わる、便利な最新オンラインツール48個まとめ - PhotoshopVIP

121あとで/1091users なぜ、国ごとに差が出たのか。そして第二波がどうなるか。 - 楽園こちら側

119あとで/1321users アメリカ美大で学んだこと05:「絵がうまい」より大切なことKenta Shimbo|note

119あとで/1684users 自民系の地方議員です。カネ配りについて書きます。 | はてな匿名ダイアリー

118あとで/1444users 料理に対するモチベーションゼロ」のぼくがたどり着いた、これだけで料理簡単&美味しくなる調味料 - ソレドコ

118あとで/1195users 視座の可視化|kgmyshin|note

116あとで/1224users 【公式ぷよぷよeスポーツ×プログラミング | SEGA

あとで読むタグの数が1月に近いレベルまで大幅に反発、増加した。

一昨日ホットエントリ選択するアルゴリズムが変わったというアナウンスがあったが、影響を受けているかどうかは不明

日毎のホットエントリ中の増田の数が大幅に増加していた。2月に比べて55%増の242本。2018年の秋以来の多さに。

2020-07-02

プログラミングスクールなんかに通わない方がいい理由

教材のレベルが低い

ほとんどのプログラミングスクールの何万円もする教材よりも、市販の数千円の参考書や、公式チュートリアル無料)の方がはるかに質が高いです。既にプログラミングができる人の参考書としてだけではなく、初学者入門書としても、後者の方が適切です。

率直に言って、これだけ良質な情報がどこにいても手に入る時代に、独学でプログラミング習得できない人は、もう諦めた方がいいと思いますプログラミングなんて別に生きる上で必要スキルじゃないのですから包丁持ったことすらない人が、何十万も払って料理習いたいと思うのかって話です。

講師レベルが低い

これが最大の理由です。

まず現実的に、ちゃんプログラミングができる人は、プログラミングスクール講師になんかなりません。少なくともこの日記を書いている時点では。

レベルが低いというのは、実務上の話をしているのではなく、本当に素人に毛が生えた程度ということです。彼らのほとんどには、コンピュータサイエンスに関する体系的な知識がありませんし、そもそも基礎的な言語仕様すら把握していません。

これは「文字列整数に変換する関数名前がToInt()だったかParseInt()だったか覚えていない」などということではありません。そんなものは調べればいいわけです。彼らはもっと基礎的なこと、たとえば「浮動小数点数には誤差がある」とか、そういうレベルのことを理解していないのです。

から彼らの「講義」は、間違いだらけであるか、言ってること自体は正しくても著しくピントがずれたものばかりです。昨日今日プログラミングを覚えたばかりの人と大して変わらない知識で、動くコード自己流に解釈しているだけなのですから、当然そうなります。喩えるなら、中学英語教師中学英語知識しかないようなものです。彼らはその範囲で「プログラミングを覚えるコツ」を編み出しています

2020-06-25

anond:20200624183807

十年前は俺もそう思ってたが、まさかここまで日本が没落するとは思わなんだ

その手の議論は結局のところ、

税金使ってでもコンピュータサイエンスの基盤技術/CPU設計/OS/インターコネクトopenMPI/etc.継承すべきだって人と

そういうのはアメリカ中国に任せておけって人の価値観の衝突にすぎない

2020-06-24

富嶽などのスパコンは国費をつぎ込んだ分の波及効果はあるのか

  1. スパコン製造した富士通事業として継続できるだけの規模があるのか。毎回スパコンを作る/作らないの議論になるのを考えると若手育成ができないのではないか
  2. スパコン製造ノウハウ富士通のみに閉じている。スパコンを作る企業が増えるわけではない。
  3. スパコンCPUから波及した民生用パソコンCPUが出るわけではない。
  4. クラウドのように研究室マシン性能が足りないかクラウドの高性能マシンジョブを投げるといったように、スパコンが好きに使えるわけではない。
  5. プログラム作成環境に、スパコンから切り出した小さいノードが欲しくなる。すぐに買えない。
  6. 一般的に使われている環境ではないので、Web検索して解決はいかない。サポート必要
  7. スパコンがある兵庫県産業育成につながっているのか?保守メンテ企業くらい?アカデミックに限っても兵庫県大学コンピュータサイエンスが発展してるわけではない。カーネギーメロンの分校はなくなった?
  8. スパコンCPUを作った経験をしたとしても、富士通以外の企業CPUを作っていないので、転職必要になった時点で詰む。
  9. スパコンを使って、スパコンを作れない。運用コストが高い。


インテルAMDサーバーCPUスパコンに使ってもらえる。ノウハウも残る。

NVIDIAも同様。汎用機からスケールアップなので、研究室にあるパソコン環境を整えやすい。

から次へとスパコン計画があるので持続的な投資ができる。


追記

RichReportのようにHPCを追いかけているメディア日本にない。

https://www.youtube.com/user/RichReport/videos

2020-06-23

オレオレフレームワーク百害あって一利なし

こんなことは、コンピュータサイエンスのあらゆる観点から明確に答えが出ている。つまり車輪の再発明だし、YAGNI原則にも反する。

オレオレフレームワークメリットとして挙げられる「フレームワーク自体トラブルに遭遇したときに、独自フレームワークなら対処やすい」というのは完全な嘘。

まず、そのトラブルの発生頻度が圧倒的に異なる。特定会社の数人にしかチェックを受けていないオレオレフレームワークと、世界中開発者によってテストフィードバックがされている有名フレームワークとでは、バグの発生率も情報の量も雲泥の差。

そもそも、「オレオレフレームワークからトラブル対処やすい」のは、作った奴だけであって、その他のチームメンバーにとってはただのバグだらけの使いにくいフレームワークしかない。

anond:20200623025131

コンピュータサイエンスのそういう側面はわかるけど

逆に医学ってそこまでIT「よりも」産学直結してるってイメージではないな

しろいろいろ法律的とか医療倫理的とかで制約が厳しくて色々時間とかがかかる印象が

anond:20200623021537

おっしゃる通りだけど、コンピュータサイエンス例外だと思う。

多分医学に次いで、学術界と産業界が近い分野なんじゃ無いかな。

というか、進歩が早すぎで学術界=産業界になってるか、学術界が産業やってる感じ。

Google Amazon Microsoft intel Arm nvidiaの方が大学よりも研究力上なのは事実な訳で。

日本プログラマースパコンに興味無いのは、

日本ITを使ってサービスを作るエンジニアが大半で、ITのものを作るエンジニアほとんど居ないからでしょ

2020-06-14

「こいつプログラミングセンス無いな」と思う奴の特徴

頼むからセンスのない奴はプログラマにならないでくれ。迷惑から

不要機能を作りたがる

これが最もプログラマになってはいけないタイプ犯罪行為などの言うまでもないことを除けば)。

たとえば

等。

組織で開発する上で、こういう人がいるメリットは無い。

不要機能を作ることで、プログラムは複雑になり、メンテナンスの手間は増え、バグは発生しやすくなる。

一定レベル以上のプログラマが最も自然だと同意するような実装(「実装しない」という選択肢もふくめて)をパッと思い付けない奴は、センスが足りていない。

将棋で言えば、駒がぶつかったら先ず取る手を考えるといった基本的な手筋が思い浮かばないようなもので、現実的に使い物にならない。

基本的コードなんて書かないに越したことはない。

これは、「Code Complete」「The Pragmatic Programmer」等の著名なプログラミングの本に共通する結論である

DRY原則を守らない

すべての知識は、システム内において単一の、曖昧さのない、そして信頼できる表現を有していなければならない。

これが「The Pragmatic Programmer」にあるDRY原則である

要するに、すべての情報単一ソースから決定されるべきということだ。情報が二重化すると、それらの間で不整合が生じバグの原因になる。また、二重化した情報は、修正の手間が二倍になる。

たとえば、ユーザープロフィール管理するレコードクラスに「生年月日」と「年齢」を同時に保持する必要はない。年齢は生年月日から計算できるからだ。

世の中には、「xxxFlag」みたいな不要変数を作ったり、共通ロジック抽出せずにコピペコード濫造するダメプログラマーが多すぎる。

もちろん、合理的理由があって、この原則適用されない場合もある。

たとえば、多くの言語組み込み配列文字列は、その要素と長さを二重に管理している。配列の長さは要素を数え上げることで求まるが、それには要素数に比例した計算時間がかかるためだ。

ただし、こういう場合でも、公開されたメソッドによる操作では、必ず内部の変数は同期されるように作ることが可能である。それをしないのは、怠慢でしかない。

変数命名が雑

文字変数とか連番とかは論外だが、「ary」とか「setData()」みたいな何の情報も伝えないような変数名・関数名を付けるやつ。

正直、コードの読みやすさなんて6〜7割くらいは変数名の付け方で決まると思っている。

名著「The Art of Readable Code」も、半分以上が変数名の付け方に関連する内容だ。

なぜ変数名が曖昧になるのかと言えば、怠慢を除けば理由は2つある。

1つは、コードを書いた奴自身が、そのコード機能を明確に言語化できないということ。

もう1つは、1つの関数で多くのことをやりすぎたりしていて、その変数役割曖昧になっているということ。

スコープを広げたがる

変数関数を参照できる範囲のことをスコープという。

たとえば、関数の内部で宣言した変数は、多くの言語では関数の外からは参照できない。

スコープは狭い方が良い。これはほとんど全ての状況に適用できるプログラミング大原則だ。

スコープが広いということは、ソースコードの多くの場所からその情報を参照・変更できることを意味する。

たとえば、クラスのメンバ変数は各々のインスタンス内でしか参照できないが、静的な変数はすべてのインスタンス共通に持つ。このため、静的な変数を変更すると、すべてのインスタンスに影響を及ぼし、影響範囲の把握やテストが困難になる。

スコープを広げるか狭めるか、2つの選択肢があったとして、広げる方に心が傾く奴は、プログラマをやめた方がいい。

結果的メンテナンス困難なコードを生むというのも勿論だが、単に書くだけでも、スコープが広い方が書きづらいのだ。つまり必要もないのにわざわざ変数スコープを広げようとする奴は頭のおかしい奴しかいないということになる。

コードが長い

複雑なメトリクスなどを持ち出すまでもなく、たとえば1メソッドの行数が何百行もあるとか、1クラスのメンバ変数が何十個もあるとか言うの。

これは論外であるプログラマとしての能力云々以前に、明らかな怠慢であり、社会人としての常識が疑われる。

定期的にメンテナンスされ続けているOSSソースコードなどを見ると、関数メソッド)の行数は平均して5〜10行。20行を超えるものは稀である

長いものであっても、外部で定義した関数を順番に呼び出しているだけであったり、リクエストハンドリングして各々の処理に振り分けているだけのようなものほとんどである

それを超えているコードは、合理的理由があってそうなっていることよりは、単に悪い設計であることの方が多い。

結論

これらは実はプログラミング云々というより、内容の理解力国語力の問題なのである

ある情報を得るために必要十分な情報は何かが分かってないから、余計な変数を作ったり、無駄変数スコープを広げたりする。

そして、自分が作るものを正確に理解していないから、適切な名前がつけられないし、適切なモジュール分割ができない。

それがすべての原因。

こういう人がまず身につけるべきは、プログラミングテクニックではなく、日本語を正しく読む力。

低学歴が「プログラミングなら自分でもできるかも」なんて思っちゃいけないってこと。もちろん、下請けSIerとかで使い捨てコード書きとして働くことはできるが、上に書いたような最低限の力がないなら、それ以上を望んではいけない。

ちなみに、上に書いていることと反対のことを思っている人も世の中にはいる。

特に、昔からプログラミングをしてきた自称ベテランに多い。その人は、能力があるというよりも、単に現代の開発に際して必要知識がないだけなので、真に受けないように。

また、大学コンピュータサイエンスの基礎を学びたての学生なども、知識をひけらかしたくて上と反対のことを言う傾向がある。その程度のことは、良識のあるプログラマはみんな分かっているのだが。

2020-06-12

ITプログラミングセミナーなんかに出ても、得るものほとんど無い

理由1. まず参加者レベルが高くない

ほとんどの参加者は、コンピュータサイエンスなどの学位を持っているわけではなく、国内SIerなどでパソコン弄りをしてるだけのただのオタクです。

彼らの大半は、まともなコードが書けるわけでも、インフラ等の保守ができるわけでもありません。

非エンジニアの連中に到っては、流行りのIT用語を援用したポエムを作ってるだけであり、話を聴く価値はありません。一部の技術のある人たちも、そういう人たちに合わせて話をしています

理由2. そもそも情報技術自体に、学ぶべき新しいことなんかない

よく、「プログラマはつねに最新技術を学ばないといけない」などと言われます

これはある意味正しいのですが、この主張が指している対象は、新しいツールフレームワークの単なる「使い方」であって、根本理念ではないのです。

実際のところ、ソフトウェア技術なんてものは、コンピュータ黎明期から大して進歩していません。進歩しているのはほぼ全部ハードウェア技術です。

例をあげれば、「オブジェクト指向」なんてものC言語ができた時点で既に確立されており、有能なエンジニアはみんな知っていたのですが、90年代に入りJava等が普及すると同時に量産型コード書きの間でにわか流行りだしました。

エンジニア第一義的に学ぶべきなのはコンピュータサイエンス全般の基礎であり、それを欠いた人が流行りに飛びつくのは虚しいだけです。

2020-05-28

就活で一番ヤバいと思ったのは野村総研

 

ITサービスSI通信キャリアと幅広く受けたが、

ESサークル名(〇〇大 〇〇など) を書かせた企業はここだけ

面接ITというかコンピュータサイエンス方面のこと何も聞かれなかったのはここだけ

およそソフトウェアエンジニアと呼べるような社員が一人もいなかったのはここだけ

こっちがCS専攻だからって面接官が卑屈な感じだったのはここだけ(だいたい所詮学生だし大したことないのにね。もちろん化け物級の天才もいるけどごく少数)

こんな会社が日系IT企業年収トップとか終わってる

2020-05-26

プログラマだけど細かいことよくわからん

10年やってるけど相変わらずなんとなくやって過ごしてる

この仕事始めた頃は周りが何言ってるのかさっぱりわから

ノート単語メモって帰りの電車スマホでググってとかしてたけど

3年目あたりからなんか雰囲気仕事できるようになって

それから惰性でなんとなく過ごしてる

元々がニートなので基本情報だとかコンピュータサイエンスなにそれ?って状態

アフィリエイト生計立てようとブログを始めるが続かず

プログラミングCGM作れば自分記事書かなくてよくね?から勉強開始

当時はプログラミングスクールなんてないから落ちてるコードをとにかくコピペ

よくわからんが動いた!を繰り返しいくつかのサイトを公開

しかアフィリエイト収益は確か1ヶ月で400円

流石に働いた方がいいだろうと思ってプログラマバイトを探す

幸い自分で作ったサイトを見せたら即内定して翌日から仕事

今でも覚えてるが初日に言われた言葉

svnチェックアウトしてbacklogチケットどれでも好きなのやって」

何一つ単語意味がわからず帰ろうかどうしようか悩んだけど質問しまくってなんとかした

あと退社する時にぼそっと言われたのも覚えてる

「なんで未経験なんか取ってくんだよ」

基本情報ホッテントリ読んで特に必要ないよねってことを書こうと思ったら

なぜか自分語りになってしまってこの文章の落ちをどうしようか考えてる

まあ仕事に関していえば必要になった時に必要なことをその都度覚えれば問題ないので

若い子はあんまり間に受けず気楽にやるといいよ

anond:20200526120911

同意見です。

基本的情報処理試験は、請負業務を前提としたSIerを想定した試験だと思います

なので、自主的プログラミングコンピュータサイエンス勉強する人などが受ける必要はないです。

anond:20200526002227

基本情報応用情報コンピュータサイエンス系の大学で授業受けてたらノー勉で通る内容なので、

暗記ものだと思ってやらされてる人は不幸だなとは思う

2020-05-23

anond:20200523224015

趣味リアルタイム処理とかやってたかコードはある程度書けるけど、なんつーか、「頭脳労働から集中させろ」的な主張とか見てると、ほとんどの奴は普通デスクワーカーと大して変わんない作業しかしてねえよなとか思う。それ言ったら企画書練ったりパワポ作ったり見積もり書くんだってそら集中したいっしょ。

まあ、コンピュータサイエンス学位持ってるような人達は知らんけど。

2020-05-21

anond:20200521233716

大学計算機科学結構本格的に教えてくれるから

コンピュータサイエンスの基礎が理解できている人間と、

APIライブラリの使い方知ってるだけの人間では、手がけられる仕事範囲全然違うし生涯年収も違う

初心者向け】プログラミング言語人気TOP20簡易解説

概要

プログラミング経験からプログラミング勉強してみたい、でもどのプログラミング言語をやればいいのかわからない」というような悩みを聞くことがあるので、https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/ に載っている人気の言語TOP 20について、未経験者が最初に学ぶのはどの言語が良いかという観点簡単解説してみます

対象読者はプログラミング経験者なので、なるべく難しい言葉を使わないようにしたつもりです。また、正確性よりもわかりやすさを重視しているので何かしら間違っているかもしれません。ご留意ください。


ランキング

1位 JavaScript

Webブラウザの上で動くプログラミング言語。元々ただの文書しかなかったインターネット世界に、グリグリ動くページを作りたいという欲求により生まれた。JavaScriptのおかげで今のWebページグリグリ動きまくりである

元々HTMLちょちょっといじる為だけのものだったが、どんどん進化を続けて今は一つの超人プログラミング言語である。今ではブラウザ上でなくても普通に動かせる(Node.jsという)ので様々な用途で使われている。

ブラウザ上で動くプログラミング言語基本的JavaScriptしかないので、JavaScriptはすべてのWebプログラマが学ぶ必要があると言っても過言ではない。

ちょっとしたプログラムを書いてすぐブラウザ上で動かせるので楽しい。そういう点ではプログラミング入門に適していると言えるかもしれない。


2位タイ Python

機械学習を始めとしたデータサイエンスの分野で激烈に人気のある言語理由としてはNumPyとかTensorFlowのようなライブラリが充実しているというのが大きく、資産がたくさんあるのでこれからも使われ続けるであろう。

Webも作れるが、日本ではWeb系の求人は少ない気がする。

言語としては、誰が書いても簡潔で読みやすコードになる傾向にあり、小さいプログラムを書くにはいい感じである米国ではプログラミング教育Pythonがよく使われているという話も聞くし、初心者プログラミングを始めるのにはいいのかもしれない。

将来AIデータサイエンスをやってみたいと思うのであればPythonから始めましょう。


2位タイ Java

ランキングでは常に一位に近い順位をつける言語Javaができた当時は色々と革新的だったらしく、組み込み業界からWebまで流行りまくっていた。今でもその名残か使っているところは多い。過去資産プログラマの数が多いのが一番の理由だと思う。AndroidアプリJavaで書く(もしくはKotlin)。

実行速度が速く、また下位互換性がしっかりしているので過去に書かれたコードが新しいマシン上でも動きやすいのが長所短所としては、歴史ある言語下位互換性を保っているため文法が古い感じがする。タイプ量も多くなるし、学習コストJavaScriptPHP, Ruby, Pythonあたりに比べると高い。

正しく使えば強力な言語だが、日本のクソSEもどきは全員(自称JavaエンジニアであることがJavaが毛嫌いされる理由の一つになっている[要出典]。いわゆるGAFAJavaをかなりヘビーに使っているので要は玉石混交ということである

Androidアプリ作ってみたいというならJavaからはじめるのはアリ。


4位 PHP

Webページを作るためだけに生み出された言語プログラマの数が非常に多い。日本求人が一番多いのはJavaPHPであろう。

初心者でもとっつきやすく、すぐに動くプログラムを作れるので入門に使われることも多い。学習コストの低さはトップレベルであるしか基本的には古くてダメ言語とみなされており、PHPで作られたWebサービス脆弱性が多いという都市伝説もある。真実は闇の中である

近年のバージョンアップ比較的良い方向に向かっている(と個人的には思う)ので、選択肢としては意外と悪くないかもしれない。


5位 C#

Microsoftが生み出した言語で、.NETというプラットフォームを使ってWebサービスを、Unityというゲームエンジンを使ってゲームを作ることができる。

最近有名なのはUnityで、今やほとんどの3Dソーシャルゲーム(の一部分)はUnityで作られている。そう考えるとC#プログラマ結構いそうだし将来もある程度安泰かもしれない。もちろん.NETも広く使われている。

ただし.NETUnityも触らない人にとっては基本的に縁のない言語である

なんかゲーム作ってみたいかもなーと思う人はC#から始めてもいいんじゃないでしょうか。


6位 C++

C言語に色々な機能を足しまくってできた巨大な迷宮のような言語言語仕様は複雑怪奇だが実行速度は全プログラミング言語中でも最速レベルなので、パフォーマンス重要な開発において使われる。アプリサービスというよりは、それらを作るためのライブラリプラットフォームなどを作るときに使われることが多い。Web系の会社でいうとGoogleなどは主にC++を使っている。

基本的には初心者が触る必要はない。競技プログラミングを極めたいとかならC++からはじめてもいいかもしれない。


7位タイ Ruby

このランキングの中で唯一、日本人によって作られた言語。作者のまつもとさんは世界有名人である。ちなみに島根県出身、在住。

プログラミングを楽しくすることがモットーらしく、確かに書き味は良い。また作者が日本人なこともあってか日本情報が多く、情報収集という点ではとてもやりやすい。

Ruby on RailsというWebサービスを作るためのフレームワーク世界的に大ヒットしたため、必然的Ruby知名度も上昇した。少し前まで日本Webスタートアップは猫も杓子もRuby on Railsといった様相であった。今は少し落ち着いたようだが今も人気は根強く、Webプログラミングスクール等ではだいたいRuby on Railsを教えているとかいないとか。

Webに興味があるのならRubyから始めるのが一番無難選択肢と言える…のか?まあ悪くはないと思う。今でも需要は多い。スクールに行きたいのであれば黙ってスクールカリキュラムに従いRailsをやりましょう。


7位タイ CSS

これは他の言語とは毛色の違う言語である。というかCSSプログラミング言語と呼んでいいのだろうか?

CSSHTMLを装飾するためのものである。字に色をつけたり、背景を変えたり、レイアウトサイズを変えたりするのは基本的CSS役割である

すごく大雑把にいうと、HTMLで表示する内容(文章画像)を定義し、CSSでその見た目を整え、JavaScriptで動きをつける。というのがWebサービスの”見た目”を作るやり方である

なので、Webに興味があるのであればある程度はCSS知識必要である。が、これ単独で学ぶようなものではない。Webサービスを作る時についでに調べて少しずつ覚えていけば良い。


9位タイ TypeScript

TypeScript比較的新しい言語で、JavaScriptさら拡張したものであるMicrosoftによって開発されている。

プログラムにはデータの型(Type)というものがある。例えば「1」や「2」は数値型、「あいうえお」は文字列型といった具合である。大まかに言うと、この「型」に対して厳しい言語は型チェックによりバグの混入を防ぎやすいがプログラムを書くのが大変、というかコード量が多くなる。型が緩い言語サクサクかけるし短く書けるがバグを生みやすプログラマの力量が問われる。ランキングの中だとJavaScript, Python, PHP, Ruby, Perlあたりは緩く、Java, C++, C, Swift, Go, Kotlinあたりは厳しい。

そんな中、世で広く使われているJavaScriptの型チェックが緩すぎるのでもっとちゃんと型をつけたい、そんな要望を叶えるのがTypeScriptである基本的JavaScript理解している人間が使うべき上級者向け言語というのが現状なので、初心者が始めるには適していない。

ただしこの先主流になっていく可能性は大いにあるので、どこかのタイミングで勉強してみても損はしないと思う。


9位タイ C

C言語基本的OSを作るための言語であるOSというのはWindowsとかmacOSとかLinuxといったもので、マシンを動かすための基盤となるソフトウェアであるAndroidスマホにはAndroid(という名のOS), iPhoneにはiOSが載っている。コンピュータ基本的OSがあって初めて動かすことができ、OS提供する機能を使ってブラウザスマホアプリなどを動かせるのである

というわけで、初心者が学んで実用的なものではない。ただしC言語というのは世の中の様々なものの基盤になっており、他言語文法C言語から拝借しているものが多い。例えばC言語をある程度勉強していればJavaPHPなどはなんとなく雰囲気で書けてしまったりする。

そういうわけで、コンピュータサイエンスをこれからちゃんと学んでいきたいという人(大学生とか)はC言語から始めるのもいいと思う。ちなみに筆者は初めて書いた言語はCであるが、意味理解できるまでに2年かかった。才能がないとこうなるので注意。


11Swift

SwiftAppleによって作られたAppleのための言語であるiOSアプリiPhoneアプリと言い換えても良い)を作るためだけに存在している。

言語自体は他と比べて新しいため文法機能イケてる雰囲気があるので基本的はいいのだが、iOSアプリ以外で使っている人は多分世界で5人くらいしかいないと思う。なのでiOSアプリに興味がない人はやめておきましょう。iOSアプリを作りたいあなたは他に選択肢はない。Swiftをやりなさい。


12Objective-C

Swiftが生まれる前はiOSアプリを書くためにObjective-C必要だったため、多くの人がこの言語を使っていた。が、今はSwiftがあるので、古くからあるObjective-Cアプリメンテナンスする時以外に使う機会はない。名前すら覚える必要がないので存在を忘れてしまって構わないが、これだけ順位が高いということは多くの企業がいまだにObjective-Cで開発し続けているということであり、ニッチ需要はこれからも残るのかもしれない。


13位タイ Scala

Scala関数型言語と呼ばれる言語の一つ。Javaの親戚みたいなものなのでJavaとの連携が容易であり、上手く使えば性能も出るしコード量も少ないしバグも少なくて最高、な感じらしい。が、その分難易度が非常に高いので初心者が手を出すものでは絶対にない。どんなに早くても他に二つは言語を覚えてから勉強しましょう。Javaを覚えてからやるのがベター


13位タイ R

R言語データ解析用のプログラミング言語である

正直ほとんど書いたことがないのでよくわからないが、ビッグデータというワード流行りだした頃はデータ解析用途でかなり流行っていた。その後機械学習AIブームが来て、今でも現役で使われてはいるがPythonがどんどん勢力を拡大しているので少し目立たなくなってきた、というのが個人的な印象である。まあプログラミング初心者最初にやるようなものではないことだけは確かである


15位タイ Go

Go言語比較的新しいGoogle製のプログラミング言語で、Googleのように巨大なシステムでの使用目的に作られたものであるしかし実際には様々な企業が利用しており今一番勢いのある言語と言ってもかもしれない。

他のプログラミング言語の良い点や悪い点を参考に設計されており、実行速度の速さと生産性プログラムの書きやすさ、読みやすさ)を両立できるような言語になっている。ただし、機能を増やすのではなく本当に重要機能だけに絞るという思想があるようで、他の言語に慣れていると機能の少なさに不便を感じるかもしれない。

学習コストが低いという点では最初に学ぶ言語として適しているかもしれないが、GoだけでWebサービス等をサクッと作れるのかというと微妙なので、アウトプットを出しにくいというのはあるかもしれない。

二番目や三番目に学ぶ言語としてはオススメ


15位タイ Shell

シェルというのはテレビなんかでハッカー的な人間PCを開いて謎の黒い画面に白い文字を打ち込んだりするアレである説明としては正確ではないがまあ大体そんなもんである。何が言いたいかというと初心者最初に学ぶとかそういうものではない。しかし実際に開発の仕事をやるとシェル知識はあったほうがいいし、シェルに多少詳しくなるとPC上でテキスト操作をしたりファイルをいじったりというのが便利にできるようになる。ただし(通常は)極める必要はない。

Shellと言っても実際にはbash, csh, tcsh, zshなど色々あるのだがそれらをひとまとめにしてShellとなっているようだ。


17PowerShell

PowerShellは上のShellの親戚みたいなもので、ShellがMacLinuxで動くのに対しPowerShellWindowsで動く。そんだけである。あと正直あまり知らない。


18位 Perl

ランキングの中ではかなり昔からある言語で、サーバーと呼ばれるマシンには大体Perlが入っている。そのくらい市民権を得た超有名言語で、C言語C++で書くほどでもない小さなプログラムはとりあえずPerlで書く、というくらいには広く使われていた。インターネット初期はほとんどのWebサイトはPerlで書かれていたとかいないとか。PHPなどの登場はその後である

今でも広く使われてはいるが、RubyPythonPerlの後継的な位置付けであるため、初心者が新しくPerlを学ぶメリットというのはあまり思い浮かばない。何か特定目的があるのであればいいと思う。


19位 Kotlin

Kotlin簡単に言えばBetter JavaであるJavaをもうちょっといい感じに書きたいという気持ちで作られた言語で、Scalaと同じくJavaの親戚のようなものである

ランキングの中ではSwiftと並んでかなり新しい部類。AndroidアプリKotlinで書けるようになったことがきっかけで人気が爆発的に上昇、今ではWebの開発にも使われていたりする。

とは言えまだまだ新参者といった感じで、ドキュメントなどの情報も他の言語に比べると物足りないので初心者には厳しいかもしれない。

言語自体はとてもいい感じなので、もう少しコミュニティ成熟してくれば最初に学ぶ言語選択肢として有力になるかもしれない。


20Haskell

HaskellScalaと同じく関数型言語であるScalaJava的な書き方でも動くの対し、Haskellは「純粋関数型言語」と呼ばれ、ランキング中の他の言語とは一線を画した書き方になる。どう考えても初心者にはオススメしない。少なくとも他に二つは言語マスターしてからやりましょう。


総評

なんとなくWebに興味がありそうならJavaScriptRubyもしくはPHPAndroidアプリに興味があればJavaiPhoneアプリに興味があればSwiftAIデータ分析に興味があればPython3Dゲーム開発に興味があればC#。この辺りをやりましょう。

特に目的がないのであればフィーリングで選んで大丈夫ですが、やめておくべき言語というのはあるのでその辺だけ参考にしてもらえれば。

なお筆者はただのヘボプログラマであり、大好きな記事http://www.mwsoft.jp/column/program_top10.html) の現代版かつより初心者向けなものを書いてみたいと思ってこの記事を書きなぐった次第である。あまり真に受けないよーに。

ログイン ユーザー登録
ようこそ ゲスト さん