「競技プログラミング」を含む日記 RSS

はてなキーワード: 競技プログラミングとは

2020-10-16

anond:20201015012446

あとは他人が書いた長大コード理解して、自分のつけたい機能をつける練習をしないとねって思った。

競技プログラミングだとスクラッチからコードを書くのが普通だけれど、仕事スクラッチからコードを書くことなんてまれでしょ。

趣味プログラムならコーディング規約なんて気にせずに自由に書けばいいけれど、仕事だとプロジェクトごとのコーディング規約に従わないとダメ

その辺のところを理解するためにはOSSに貢献すればいいよ。

実際の就職活動でも履歴書に書けるしね。

あとは門外漢だと計算量とか記憶装置階層とか情報工学を学んだ人だと普通に持っている知識が無いかもしれないというのも心配だね。例えば、とりあえず動いてもO(2^n)だったらnがそれなりに大きいことが予想されているところには使えないよね...という話が理解できない同僚とは働きたくないよね。

2020-10-03

anond:20201003194005

まじで、そのへんを歩いている人を

捕まえて、

やらせても

できるのに

なんでおまえはできないの案件

その捕まえた人が、競技プログラミングの上位常連とか

よくあるIT企業の前とかを、素人さんがあるいているわけないだろ

2020-09-22

社会人にもなって競技プログラミングかよ(笑)

個人がただの趣味パズルゲームとして楽しむ分には構わないんだけど、

就職エージェントとかがこういうのを利用するのは、本当に世の中のためになってないと思う。

一時期、フェルミ推定とかが流行って、企業面接かに取り入れられたけど、何の意味も無かったから今じゃやってる企業ほとんどない。

意味のないことはやめるべきだと思う。

2020-09-21

anond:20200921035827

年がら年中同じことやってるぞ。パッと思いつくのは今年の1月くらいか

 

競技プログラミング過去 問をやってみたところ解説を読んでもまったく理解できないので. C++の書き方以外にも今後どういった学習必要になるのかみなさんのアドバイスが欲しいです.

(anond:20200119110826)

俺もキモくて金のないおっさんハゲデブサイクだが

 

Atcoder解説が難しすぎるので、

1.ひたすらググッて解説が書いてある

ブログを5個ぐらい読むとぼんやり理解できる。

2.ブログ作者のコード写経しながら、理解する

を繰り返す。

一問につき3時間~6時間以上かかるので、

非常にツライが結局これしかない気がする。

 

英語抵抗がないならLeetcodeがおすすめ

Easy・Mediumなら解説が丁寧で良いし、GAFA対策に集中しているから。

純粋数学とかはあんまり出ない。

ワイは1行も書いてないけどGAFA入ったやで

(anond:20200119111924)

こういう人がいるのも事実なのは知ってます

経歴が良いとか、特定の分野に明るいとか、黎明期に入った人は

三顧の礼で迎えられ、どんどん入っていくらしい。

 

 

無能キモくて金のないハゲデブサイクな経歴で受かるには

コーディング試験通らないと無理なんです。

(anond:20200119112242 )

 

根本問題スキルや年齢や外見や体調じゃないぞ 

毒親および毒親・毒配偶者を原因とした、社会性の欠如、無駄な高プレッシャー反社会性パーソナリティだぞ

 

もちろん、誰かの共感創作自演よって癒やされるのなら別に何回同じことしても良いんですけどね

解決より共感必要な人はいから

2020-08-16

anond:20200816200845

ちがうちがう、相談しないで納品だけにしてくれると楽

相談させようとすると、あるいみ、人間国宝並みの品質にしない限り相談することがない。

から相談させようという課題にすると

それこそ

競技プログラミングだと、オリンピック級になって仕事にならないというか、仕事でこのランクでこの金額は、イジメだとなる。組み合わせ上無理なことを行った。

2020-08-11

私達で平均をとった場合、いちおう競技プログラミングなら世界ランカ世界上位ランクである人間で 6ヶ月は必要。となると

ふつうこれを、学生に1年 小学校で6年で教えることは小学生FFTをおしえるようなもの

これは物言いを付ける方に同意する

そりゃ上位ランカであれば、小学生でもできるだろうが

それを基準にすることは望ましくない

 

まさに小学生バイオリンをひかせるようなもの

たまたま通りすがった小学生を参考にしたの・・・銀座

2020-08-09

チェス将棋囲碁バックギャモンクイズ競技プログラミング麻雀知的趣味をたくさんしてきましたが、そろそろ違うのを開拓したい。

電子工作でもやるか?

2020-08-07

anond:20200807195858

勝つためにプログラミングをしている人などいない。

まあ強いて言えば競技プログラミングの人くらいはそうと言えなくもないが。

2020-07-28

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

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

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

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

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

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

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

2020-07-25

コーディング面接は終わりかけている(けど代替案がない件について)

【21新卒SWE】 私はこうしてGoogleに落ちた ~Googleに挑んだ120日~

https://note.com/grouse324/n/n1f329de5ee50

Google特定じゃなくてこの業界一般的な流れなんですが。

もともとコーディング面接って、特定技術分野に強い人じゃなくて、何でもできるポテンシャルの高い人を採用するための手段として使われてきたんですよね。

それが機能していた時代(10年くらい前?)は、競技プログラミングやそれに類する経験のない人のほうが多数で、そういう人たちが競プロ的な課題をその場で解いたり議論してたりしてたんですよ。

ところがその後、競技プログラミング勢が増えてきたことによる弊害が明らかになります。というのも、彼らの競技プログラミング勢の入社後のパフォーマンスが明らかに低い。そりゃそうですよね、予習なしで面接課題を解ける人たちと、予習込みでないと解けなかった人たちとでは、前者のほうが優秀に決まってる。

しかし、時既に遅し。それが明らかになった頃には、いろんなソフトを書いてきた優秀なプログラマではなく、競技プログラミングに特化したアスリートばかりが入社するようになってしまっていました(というのは言い過ぎで、超超優秀な人たちはソフトも書けるし競技プログラミングでも優秀だから、そういう人たちは入社後も活躍している)。

事態を更に悪化させたのが、LeetCodeやモックインタビュー等によるコーディング面接対策サービスの勃興でした。コーディング面接に特化した訓練を積んだ面接者が激増した結果、エンジニアとしては十分優秀なのに面接訓練を積んでこなかった人が面接に非常に通りにくくなるという現状が生まれしまいました。

もちろん各社この状況は十分認識していて、さまざまな試行錯誤が行われている状況です。ですが、これといった対策は未だに生み出されていないようです。

どうすればいいんでしょうね?

2020-07-20

anond:20200720185001

いや、競技プログラミングランカーと、普通のやつを混ぜて、さらベテランまぜて、生産性重視でガンガンいこうぜでやったら

若い子が病院送りすれすれになってたけど、わかってやってるから問題ない。ベテランはこっそり、ドーピングまがいだったし。

2020-07-15

競技プログラミングコンテストの上位級の問題面接でだして

うわーがんばる子いるよね、じつは競技プログラムなみの難しいって

からないんだろうねー早くギブアップすりゃいいのに・・・これ口先だけプログラマーなんだろうなぁ

って競技プログラム入賞経験数の子相手人事部がいっても

そりゃ諦めずに頑張ると思うんだが、これ、だれがわるいの?

 

おれとしては諦めて、辞退したほうがいいと思うが・・・そうもいえねーしな

2020-06-22

anond:20200622181155

競技プログラミングだっけ

そりゃ世界大会とか世界コンテスト とか はては世界ランキング第3位 電脳ビリビリオンナとかいいはじめりゃ そりゃいたいわな。

いいはじめれば 若い子たちは いろいろあるだろうな というのはわかる。

あるいみ プロレスってわかりゃいいが 興行主の経験者がいない場合はいたいだろうな。

しか

理系

世界的なプログラムコンテスト

プレレスっておもわないひともおおいかもな

オリンピックも近いしな

 

ある一定水準が世界ランカーを名乗れるレベルか?というところに 嘘はないだろうが

そんなもん大手SI屋がすこしみりゃわかる。

 

そうではなくて ランキングとかは プロレスがわからないと そんなもん難しい。そういうのはプロレス屋にきいてくれ

競技プログラミング挫折したブログ読んだ

シャツヤーンの言葉みて、いやいや意識高杉wwww世の中のプログラマの99割は茶色イカ娘からwwwwと思った

まあそういうところにいるひとだからそういうとこにあつまるひともレベルたかくなるからそうなるんだろうけどね

底辺上棟生きててなんぼノンインパクトプリンタからしたらハラディ茶を濁せよwwww

2020-06-17

数学面白い」などと言う妄言

こんなことを言っている連中のうち、大学以降で学ぶ数学理解してる奴は1%にも満たないだろう。残り99%強は以下の2種類に分類されると思う。


前者は、たとえばフェルマーガロアラマヌジャン等の「逸話」が好きなだけとか、「数学の○○という分野が✕✕に応用される」みたいな話が好きなだけな奴である

こういう連中は数学に限らず、どこにでもいる。プログラミング等の具体的なスキルは無いが、技術トレンドを知ることでITぶってるような奴。率直に言って、私はこういう奴が嫌いだ。

あとは、数学的な内容が全く無いわけではないが、「0.999... = 1になるのは不思議」とか「Fibonacci数列の比が黄金比収束するのは神秘的」みたいな、どうでもいいようなことにいつまでも夢中になってる奴。

プログラミングで言えば、Hello worldとかFizzBuzzなどに、「感動」を覚えているよく分からない奴である。まあ、知能が低いのだろう。

後者については、まあ好きな人はそれでいいと思うが、単純に、私は全く面白いと思わない。

中学高校入試などに出てくる図形問題は、出題者はまず間違いなく余弦定理などを使って答えを求めている。そのような問題のうち、上手いやり方を思い付くと小学校範囲で解ける問題が出題されるわけだが、いい大人がそんなもんやって何が楽しいのか甚だ疑問だ。

プログラミング世界でも、競技プログラミングというものがあるが、同じ理由で楽しさはよく分からない。

2020-06-16

anond:20200616161331

全体的に同意

趣味でやってる人は勿論やればいい。

アルゴリズムプログラミング勉強がしたいならそのための勉強をすればいい。競技プログラミングが、モチベーションアップに繋がるならやればいいし、本読んだり具体的なプロダクト作るのが好きならそっちをやればいい。

2020-06-08

競技プログラミングプログラミング技術には、なんの関係もない

あれは単純に、制限時間内に出題者の想定した解き方を思い付けるかどうかという遊びであって、プログラミング技術ではありません。

競技プログラミングで求められるのは、単に「競技プログラミング問題にしやすいごく一部のアルゴリズム」のひらめきです。

一方、現実ソフトウェア開発には、モジュール設計ミドルウェアOSハードウェア等の広範な知識が求められます

また、アルゴリズムを学ぶなら、アルゴリズムの本を読めばよいのであって、わざわざ競技プログラミングを通じて学ぶ必要はありません。

喩えるなら競技プログラミングとは、「数学コンテスト」と銘打ちながら、ただの単純計算問題しか出していないようなものです。

それも「19 * 21 = (20-1)(20+1) = 400-1 = 399」のような、単に上手いやり方があるだけで、数学的に重要でも何でもないような問題を解く速さを競っているに過ぎません。

2020-06-03

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

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

225あとで/1710users Windowsの「タスクマネージャー」を開発した本人が直々に使い方や知られざる機能を伝授 - GIGAZINE

151あとで/1895users Google社のテクニカルライティングの基礎教育資料がとても良かったので紹介したい - Qiita

136あとで/1235users Amazon従業員が学ぶ伝わる文章構成の極意|Sangmin Ahn|note

131あとで/1221users 社畜も唸るアマプラ邦画 - はてな匿名ダイアリー

122あとで/2599users アフリカ出身京都精華大サコ学長 コロナ問題でわかった「日本人のホンネ」 (1/4) 〈dot.〉|AERA dot. (アエラドット)

121あとで/1823users 普段使ってる便利なWebサービス教えて - はてな匿名ダイアリー

111あとで/1207users エンジニアはどのようにして技術を学べば良いのか | /etc/motg

110あとで/527users 第1回 CDN の 仕組み (CDNはどんな技術で何が出来るのか) | REDBOX Labo

110あとで/2292users いったい検察庁法改正案の何に抗議しているのか|徐東輝(とんふぃ)|note

110あとで/1539users 発信するということ|村本大輔note

109あとで/748users 伝わる提案書の書き方(スライド付)~ストーリーコピーデザイン法則 | knowledge / baigie

102あとで/1821users #検察庁法改正案に抗議します Q&A : 東京法律事務所blog

101あとで/962users 競技プログラミングで解法を思いつくための典型的な考え方 | アルゴリズムロジック

100あとで/552users JavaScriptの非同期処理Promise、AsyncとAwaitの仕組みをGIFアニメ解説 | コリス

100あとで/568users 便利なツールWebサービス - JavaScript勉強会

99あとで/605users 短編映画カメラを止めるな!リモート作戦!』本編 - YouTube

99あとで/807users 『無敗営業』の著者が語る営業のコツが学びが深すぎてヤバい!! - Togetter

99あとで/1342users AWSの膨大で複雑なサービス群をすべて「たった1行」で説明していくとこうなる - GIGAZINE

99あとで/1506users 太陽系消滅までの22分をループし続けるオープンワールド宇宙ADVOuter Wilds」がとんでもない傑作だった|てっけん|note

98あとで/1360users 【朗報iPadを使って英語論文10倍のスピードで読むライフハック発見される - Togetter

98あとで/1400users 八木啓代ひとりごと 黒川弘務の正体

97あとで/962users どうやってテクノロジーを追いかけていますか?ジュニアソフトウェア開発者として応募したときCI/CDクラウドコンピューティングDockerとか大量のことを要求されました。もういっぱいいっぱいです。 - Quora

96あとで/537users タダで学べるデータサイエンス名著5冊 【日本書は高額でも英語ができれば怖くない】 - Qiita

96あとで/516users 『みんなのデータ構造』でデータ構造の基礎を学んだ - valid,invalid

96あとで/561users 自動テスト限界を感じた私がなぜ形式手法に魅了されたのか - 若くない何かの悩み

94あとで/833users たった20万円で作ったサイトが6ヶ月後に月間300万PVを達成した方法SEO】|阿部隼也|note

93あとで/588users プロダクトの成功必要な 3 つのステージ20タスクについて:現場の動き方をまとめました|Fritz | Product Manager @ Mercari|note

92あとで/847users 大体いい感じになるKeynoteGoogleスライド無料テンプレートAzusa 3』作った - SANOGRAPHIX BLOG

91あとで/1353users 趣味電子工作をする前に知っておきたかたこと - izm_11's blog

91あとで/1291users コロナに乗じて町内会の属人業務改善しまくった一人のおばあちゃんの話 | Books&Apps

文章資料の書き方ハウツーが目立つ。今月もあとで読むタグは減少したままだが下げ止まり、少し反転した感じも。

2020-05-25

競技プログラミングプログラミング技術とは何の関係もないという話

競技プログラミングは、プログラミング技術とは何の関係もないです。あれは、「巧いやり方があることが分かっている問題を、制限時間内に手際良く解けるか」を試しているに過ぎません。

受験競争の激しいアジア圏に固有の特徴なのでしょうか。そういった「問題解きの上手さ」を「賢さ」だとか「地頭の良さ」だと思う人が多く存在するようです。小学校受験中学校受験などが盛んなのも、その表れでしょう。

アルゴリズムを学びたいのであれば、アルゴリズムの本を読めば良い話です。たとえば、

  • Cormen-Leiserson-Rivest-Stein "Introduction to Algorithms"

は、世界的に有名な計算機科学教科書で、基本的アルゴリズムとその計算量等の性質を丁寧に解説しています

これは少し考えれば納得できるはずです。たとえば、社会人になって英語を再学習したいと思ったとき、わざわざ大学入試問題を解こうと思う人はいないでしょう。普通に英語圏で書かれた文章を読んだり、自分でも書いたりすればいいです。

2020-05-21

初心者向け】プログラミング言語人気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) の現代版かつより初心者向けなものを書いてみたいと思ってこの記事を書きなぐった次第である。あまり真に受けないよーに。

2020-05-20

理数系/エンジニア業務における「沈む」感覚

理数系やエンジニアプログラミングとか設計とか)の業務で、理数的な考えを巡らすことがある。これは言語で考えると言うよりは、なにか得体のしれない脳の動きをしている気がする。プログラミングなら変数構造設計かになるのかもしれないが、そういう具体的なところではない。もっと抽象的なところで言語化できない何かが脳内で動いていて、ある程度まとまると一気に理路整然とアウトプットする。このアウトプットに至るまでの部分である

私はこれを「沈む」と言っている。傍から見るとぼーっとしているように見えるので、仕事していないように見られるのが困る。しかし、この沈みがうまくいくとよい結果が出せる気がする。またこの沈みの感覚が心地よく続けられているときは、理数系の勉強がはかどる。

例えばプロ数学者はこの沈みにおいてとんでもない深海永遠に潜り続けられるのではないかと思う。また例えば競技プログラミング上級者は、一瞬で深海に沈んで一瞬で水面まで戻る技術に優れるのではないかと思う。

こういう「沈む」みたいな表現について、なにかもっと具体的または別の説明があれば教えてほしい。例えばスポーツにおけるゾーンとかはこれに近いだろうか?

ちなみに私は最近幼児を育てているのだが、幼児と接する限り沈むことは許されない。何らかの呼び出しですぐ水面に戻される。なのでこの沈む感覚が鈍っている気がする。あと普通デスクワーク社会人でも、電話取りとかしていたら沈めないと思う。

2020-05-16

ワイ東大生いじめられてて草

東大にもいじめはある.むしろ能力の低い人に対する風当たりはかなり強い.周りは天才ばかり.才能なんて言い訳だと思って戦ってきたけどやっぱり奴らとは何かが違う気がする.精神科カウンターにいたら発達障害らしき男が通っていた.ちょっと喋り方のおかしい男をみんなでいじめ精神科送りにする世界観.才能のないキチガイはいらない.数学ができなければ人権はない.競技プログラミングで水色しか取れないやつは算数パズルのできない無能.それでいて女の子にかかっている圧力は低い.とんちんかん発言をしても許されてる感.この全てを皆わかっているが明言すれば抹殺される.卒業できるかも怪しい (人間関係のため) 俺はここで数学をやりたかったはずだ.なぜこうなった.

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