「C言語」を含む日記 RSS

はてなキーワード: C言語とは

2020-06-03

[]

覚えなきゃいけないことの量は多いし、学ぶ必要のある分野もC言語範囲だけに絞ってもかなり多い。最近少し ⊿(人数/年)が増えてきたせいで若干は調整という政治必要なのがわかってはきたが、まぁ、フリーでいいと思ってる。さすがだとおもう。

プログラマーは覚えなきゃいけないことが多い。学んでおかないといけないことが多い(どの分野もそうだろうが)プログラミングというものが、様々な学問で使われている以上、その数だけやはりどうしても技術が増えてしまう。

むかしはここまでは使われていなかった。やはり人数の急増というのがあり、問題が起きている。

それでも、自分たちよりも若い世代が、すこしでも楽ができるように工夫は残しているつもり。

これは昔からあったんだが、

コンピューターC言語などを使うコンピュータープログラムという分野はマルチメディアと呼ばれる学問や、映像表現技術ではなく

電子工学である

というのが、若い子には勘違いされやすい。

電子工学電気工学の違いは、ものすごい大雑把に言うと、デジタルアナログということも不可能ではない。

電子工学というのは電子デバイスまり大雑把には半導体のことでありCPUなどのプロセッサなどの学問であり、コンピュータープログラミング内包している。

他方、映像分野からきたひとからすると、メディア学問でも当然プログラムは習うのだが、そりゃならうだろうが、学問的に分類するとC言語などのプログラミング電子工学なのである

Bitってなに?っていいだすと、電子工学をつきつめていくが、原則的には電気工学だろうなぁというのにちかい

C言語ってどうして>機械語機械語ってどうして>電子工学電子工学ってどうして>電気工学

2020-05-28

anond:20200528095856

C言語必要だし、実際カリキュラムに含まれていた。Javaはいらないように実装されているが、いらないような実装とはどういう実装か?ということを理解するために、必要実装とはどういう実装かが比較対象必要から大学レベルだといる。

2020-05-27

anond:20200527201728

とりあえずC言語関数型言語って一体どこの平行世界の話だ?それに関数型言語状態を持つことができないっていったい?

fullStackEngineer() さんの脳内が一体どうなってるのか調べてみたいな〜♪

オブジェクト指向が分からないあなたへ

どうも、都内の某企業に勤めるフルスタックエンジニアです。この記事では、ITの非専門家に向けて、オブジェクト指向解説をしたいと思います

小学生プログラミング教育が開始されたり、AIIoTなどの技術が身近になった今日オブジェクト指向理解しておくことは極めて重要です。なぜならば、オブジェクト指向ITエンジニアとっての「共通言語」であって、今やあらゆるソフトウェア技術オブジェクト指向の上に成り立っているからです。したがって、オブジェクト指向理解すれば、ITのすべての分野の基礎が身についたことになります。難しい概念がいくつか出てきますが、分かりやす解説するので頑張ってついてきて下さい!

オブジェクト指向とは

まず、オブジェクト指向とは何かを解説します。オブジェクト(object)とは、「モノ」のことです。言い換えれば「モノ指向」です。つまりコンピュータのようなバーチャル対象ではなく、現実のモノをモデルプログラミングしようというのが、オブジェクト指向定義です。この考えは、今流行りのIoT(Internet of Things = モノのインターネット)にも取り入れられ、爆発的に影響力を増しています

モノという考え方は、18世紀哲学者カントに遡りますカント純粋理性批判において、理性と経験によって認識できる以前の「物自体」という概念提唱し、大陸合理主義イギリス経験主義を統一しました。オブジェクト指向におけるモノとは、カントのいう物自体です。したがって、オブジェクト指向世界の真理を記述できます。そのため、コンピュータというバーチャル世界を超えて、IoTを作ることが可能になります

現代プログラミング言語オブジェクト指向サポートする最も代表的言語Javaです。これに対して、CやC++といった旧来の言語関数型言語といい、現在では顧みられることはありません。また、JavaMicrosoftであるC#や、Javaに組み込んで使うマクロ言語であるJavaScriptなどもオブジェクト指向言語であり、プロエンジニアは好んでよく使います。一方、学生向けの教育用言であるPythonRubyなども、一応オブジェクト指向サポートしています。これらはプログラミング入門には適していますが、実務で使われることはありません。

オブジェクト指向の三要素

オブジェクト指向で最も重要な要素は

の3つです。これらを駆使することで、食卓から宇宙までを豊かにするIoTを作ることが可能になるのです。一つ一つ解説していきます

カプセル化

カプセル化とは、実装利用者から見えなくすることです。

たとえば、ソフトウェア脆弱性があったとしても、カプセル化をしていれば、利用者からはその脆弱性は無いように見えます。したがって、オブジェクト指向で作られたソフトウェアには、セキュリティ上の問題存在しません。

また、IoTを用いていない従来の家電製品などは、ボタンがたくさんあったりして操作がとても複雑です。カプセル化を応用すると、この操作を全く包み隠してしまっても、機械が使えるようになりますiPhoneスマートスピーカータッチパネルや声認識などで操作できるのは、カプセル化のおかげです。逆に、ガラケーボタンがたくさんある家電製品などは、オブジェクト指向(=IoT)で作られていません。

継承

継承とは、あるオブジェクト性質を別のオブジェクトが引き継ぐことです。

たとえば、人間は「歩く」「喋る」などの動作を行え、鳥は「飛ぶ」「鳴く」などの動作が行えますオブジェクト指向世界では、鳥を継承することで、人間が飛んだり、鳴いたりすることができるようになります。これを応用したのが、VRVirtual Reality=仮想現実)です。

また、iPhone携帯電話であるにも関わらず、ツイッターをみたり、アマゾンで買い物ができたりするのもオブジェクト指向のおかげです。つまりiPhoneツイッターアマゾン継承しているのです。それだけではなく、iPhone時計や財布、メモ帳など、現実世界の多くのもの継承しています

ちょっと抽象的になりますが、この考えを突き詰めると、次のような応用が生まれます。将来必要となるすべての機能実装したオブジェクトを一度作っておけば、後続の開発者はそれを継承するだけで、新規の開発なしに新機能を追加することができます。このような性質を「再利用性」といい、ソフトウェア開発では極めて重要な考え方となります継承はこの再利用性をもたらすために、ソフトウェア開発のスピードを爆発的に加速させ、現代ITの発展の原動力となりました。

ポリモーフィズム

ポリモーフィズムは、日本語では「多態性」と言います多態性とは、読んで字のごとく、多くの状態を持つということです。

オブジェクト指向では、多くの状態を持つことができます。一方、C言語などの関数型言語状態を持つことができません。関数型言語では、プログラムを関数(つまり入力と出力をもつブラックボックス)の合成として記述します。関数は、中学校数学で学んだように、入力に対して出力が一意に定まるので、状態を持つことができないのです。この制約を「参照透過性」と言います

オブジェクト指向では、参照透過性の制約がないため、プログラマは自由コードを書くことができ、関数型言語と比べて遥かに生産的です。また、上に述べたように状態を持てるということは、プログラムの入力に対する出力を無数に持てるということです。この応用がAI(Artificial Intelligence=人工知能)です。AIが、まるで人間が考えたかのように答えを出すことができるのは、ポリモーフィズムにより無数の出力を得ることができるからなのです。

おわりに

全体的に難解な記事となってしまいましたが

部分的にでも理解すればIT世界を見る目が変わるはずです。

うさんくさい情報に惑わされずに、このような本物の知識を身につけ

そして、皆さんにはIT未来を見通せる人材になっていただければと思います

2020-05-26

プログラミング言語を学ぶってどこまで?

C言語知らんけどポインタ

学者変数関数制御文とポインタをただ渡されてもそれだけじゃ何も作れないよね。

プログラミング言語を学ぶのは何かを作るためだろ?

C言語だったらコンパイラOSを作れたら「学べた」といってもいいッ、とか?

言語によって「学べた」の基準は違うだろうけど。

anond:20200526180601

なるほど。

かに基礎は重要だと思うわ。

でもそれは昔の話だともいえる。

昔はCで物作る方が多かったし、今ほど選択肢が無かった。

でも、今はCがすべての分野の主流と言うわけでもないよ。

コンパイルする言語勉強した方が良いと思うけど、

最近の状況に合わせた言語選択の仕方もありだと思うよ?

今も最前線で開発している人には本当に申し訳ないが…

学生の授業で言うと、C言語って世界史やで。

歴史先生に「これ勉強して意味あるの?」って言うのと同じ感覚から

大学歴史を先行したいならあえて勉強する位のスタンスでいいんじゃね?

anond:20200526175845

わざとならわかるが、C言語がわかってない

そういうふうにかくなら、count++よりcount=count+1;と書いたほうがC使いっぽい

count++とかくとかくと、素人っぽさがでちゃう

anond:20200526180449

初心者C言語から始めるのがいいとか

から使われているかC言語が一番ってどこかで見たか

大体みんな一緒だからどれやっても同じとか

理由は分からないけどみんなそう言ってるから

C言語分かってきた

配列の使い方まで分かってきた。でもやっぱりこれをやって何が面白いのか分からない。

これで何をどんなことが出来るのか分からないままやってて不安になってきた。

#inclued <stdio.h>

int main(void){

  

int count = 0;

char masuda[5] = {"unti","panthi-","sushigal","neko","kko"};

  

while(count < 5){

printf(masuda[count]);

count++:

}

retuen 0;

}

  

プログラミング初心者C言語から入門するのはオススメしない、と思っていた

一般論で考えて、それは100%正しい。機械制御のためにプログラミングを学ぶとか、計算機科学が専攻なのでなければ、もっと抽象度が高く、ライブラリ豊富言語を選んだ方が、手早く目的を達成できる。

しかし、現実は違う。多くのプログラミング初心者は、プログラミングで何がしたいのか、それに必要技術要素などが思い浮かんでいるわけではなく、大抵の場合、どの言語でやっても変わらないようなことをすることになる。

そして、これはもっと本質的問題なんだが、ぶっちゃけプログラミングの出来不出来は、言語の差よりも個人の差に圧倒的に大きく左右される。つまり、出来るやつはCから始めようが出来るし、出来ない奴はRubyPythonから始めようが出来ない。これが現実

2020-05-25

anond:20200525153939

じゃあコンパイルするやつかな。javaいいんじゃない

敢えてのC言語メモリ意識させるとか?

環境構築するときコード規約みたいなのも突っ込んだら自然と身に着くんじゃないか

というか増田相談に乗ったり教えたりできるやつがいいんじゃない?

2020-05-24

[]2020年5月23日土曜日増田

時間記事文字数文字数平均文字数中央値
00799759123.538
017310105138.437
02507940158.852
0339280571.958
04283662130.843
05141973140.956.5
0633285886.654
0755472886.036
0890622069.136
0995582761.346
10111680261.336
1111612405106.941.5
12119879173.936
1313014864114.337.5
141141118398.139
151441248186.751
16118854972.445.5
17120929877.549
18111939284.635
191621478091.248
2016517291104.838
2115217375114.343
222071718283.044
231981664984.145
1日252323291992.343

本日の急増単語 ()内の数字単語が含まれ記事

テンピン(8), テラハ(6), スーパーティ(4), eval(4), 大多数(4), ルイ14世(3), 女子プロレスラー(3), テラスハウス(11), セックスドール(5), 御札(4), 岡田晴恵(3), 誹謗中傷(22), 麻雀(14), 中傷(15), プログラマ(18), 同調圧力(11), ネットリンチ(8), プロレス(7), コネ(11), リメイク(7), プログラマー(20), 支持率(11), 解除(21), 公務員(41), 待遇(17), 安倍政権(20), ネコ(8), アベ(14), 有能(13), 借金(17), 政権(24), 安倍(39), 自殺(34), コード(10), 番組(15), 絶望(16)

頻出トラックバック先 ()内の数字は被トラックバック件数

■結果だけ見ればコロナ対策日本が圧倒的に優秀っていうけど /20200523130406(31), ■借金ありおたく女、結婚する /20200522180754(16), ■人形性愛者による幼児ラブドール反対運動への抵抗 /20200523115226(13), ■漫画リメイク /20200522111714(11), ■社会人になるとコネがすべてなんだなとわかって絶望する /20200523121007(11), ■こりゃ誰も検察官役人になりたいと思わないわ /20200523064651(10), ■ /20200522090921(9), ■ほかほか白ごはん想像してください /20200523103410(8), ■かな入力使ってる人っているの? /20200522204708(8), ■anond20200521200340 /20200522113919(7), ■なぁ反アベの人達、石破で妥協しない? /20200523171936(7), ■ニートだけどプログラマーより俺の方が凄いと思う /20200523001242(7), ■人生真面目に過ごすと損する話 /20200523004850(7), ■デレマス総選挙 /20200523134844(7), ■日本国民が頑張っただけって外国の人を馬鹿にしてね? /20200523185157(6), ■女性専用車両に感じた違和感 /20200522175433(6), ■ /20200523185956(6), ■人間、皆自分が一番いいやつだと思ってる /20200523192332(6), ■ /20200523120033(6), ■C言語(またはC++)できると書いてる人に必ず出す問題 /20200523231034(5), ■質問しにくい原因 /20200523002006(5), ■深夜アニメを「きもいから萌え系じゃなくてオエ系」って /20200523103655(5), ■anond20200523111515 /20200523111809(5), ■先輩が異動させられるかと思ったけど多分コロナのどさくさで無かったことになった /20200522130445(5), ■パヨクネットの外で行動をしろ /20200523180019(5), (タイトル不明) /20200523194939(5), ■マスコミにだまされる馬鹿 /20200523202544(5), ■一週間分の飯をお任せする通販みたいな仕組みができないかな /20200523205116(5), ■子供と観るのに良い映画 /20200523213410(5), ■みんな政府のことを信用してないのに、号令には従順不思議 /20200523215720(5), ■○○はevil /20200522220514(5)

2020-05-23

C言語(またはC++)できると書いてる人に必ず出す問題

int a=1;

int x[] = {2, 3};

int b = a[x];

bに格納される値とその理由を答えよ。

(includeとかmainとかは省略)

ちょっと意地悪な問題だけど、

即答できない人はC/C++根本的に全く理解してないので落としてる。

コンパイルエラーだと思った人は入門書読み直してきてね。

anond:20200521175300

10年超のプログラマやってるものだけど自分の成長過程を書いてみよう

  • この後にもいろいろあったが面倒になってきたから省略。しょぼいゲーム会社就職する。
    • JavaScript でなんか色々作る
    • Python でなんか色々作る
    • C# でなんか色々作る
    • はてなを始めたり

2020-05-22

anond:20200522214331

それが正しい。

そういうもんだったんだよプログラマーって。

よくわからない変態が使ってるC言語

まぁ、その認識で正しい。俺たちはマニアックなCを使って、みうちでその話をしてるけど

普通WebPHP

科学技術系はPython それで十分だと思う。俺も使うし。ただ、なんだろうね。

YES,New generation Optimizer STL/C++ Level Code Optimizer.I think too. you can!

X86以前のコードレベル自動的コード最適化をかけた後にX86最適化を行う。このさいに文法的最適化ではなくX86が最速になるようにCのコードを並び替える。

これはたしか新時代オプティマイザーなんだろう。だれが発案したの?

 

みんなx86で最適化を考えるがCのレベル等価コードであれば並び替えたほうが、さらX86最適化されるケースはあり得る。

たとえば、ライナーサーチだと判定できたら、さらに最速なアルゴリズムにCを置き換えることは不可能ではない。

 

コンパイラアルゴリズム最適化まで許可された場合 Pythonなどで培われた技術を使ってアルゴリズムコード最適化をしてCのコードアルゴリズムごと改変してもよく、その後X86最適化を行うことは、次の時代にはふさわしいと私は思う。

例:ライナーサーチをもっとはやいサーチアゴリズムに、このC言語コードライナーサーチだと判別して、コンパイラ自分関数化した後に、もっとはやいサーチに関数ごと置換する。

その考え方はすごい。

さすが。これは日本も負けてられない。(結構前の技術らしいです)

anond:20200521175300

"重要からもう一度言うけど、とりあえず作れに賛同するやつは自分がとりあえず作ったもの晒せよ?"

クソみたいな煽り増田だけど、自分プログラマ歴を振り返るにはいいかもな

 

 

以降は大学グラフィックスを専攻、課題とかサークルコーディング

この段階でプログラマと言ってもいいと思う

いずれも成果物は残っていない(古いHDDに残してきた)

anond:20200521175300

高校入学時にパソコンを買ってもらって、FrontPageExpressってソフトウェアが入っていた。

触ったら、Webサイトを作るソフトって事を知って、その日に本を買ってHTMLでページを作った。

数日たって、掲示板を置いた。

その時にPerl言語を知って、ソースを見て何となくいじったりして覚えていった。

掲示板の返信処理のルーチン見たり、色々覚えていった。

そっから掲示板自分用にカスタマイズした。

コメント書くとレベルアップしたりする機能追加したり。

大体ここまでが、高1の夏休みくらいまでで、その後高校中退。

そんで、親戚が務めている会社Webサイトを作ってくれって頼まれて作ったり、その会社経由でPCサポートバイトをしながら

自宅でサーバを立ててみたくて、その時はFreeBSDインストールして、色々必要アプリソースコンパイルしながらソース見て行って

C言語何となく覚えて、自分ファイル圧縮作ってみたソケット通信作ってみたりした。

その後、たしか高3くらいでDirectX面白そうでいじり始めて、一回挫折して

VB6暇つぶし電卓作ったり、関数C++で作ってdll化とかしていて

ふと、DirectXをいじったらすんなり扱えるようになってたり

って感じで、とりあえず何かを作って表示させるってのは成功体験として凄く楽しいし、

からといって、自分で調べないで教えてもらって表示出来ましたってのは、成功体験として弱すぎる。

から最初に何か作れって事だと思ってる。

何も見ずに全部作れるレベルになるまでには、相当な回数の検索をしないといけないから、その練習にもなる。

今は、会社員のWebプログラマーで、Go言語をメインで色々作りながら

自宅で新しいサービスを作って独立したいと思ってる。

anond:20200521225730

プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。

JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScript改名されたり、規格を話すときECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。

Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。

Javaは初期のころオートボクシング / アンボクシングもなく、ストイックオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコード簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である

PHPWebネイティブ言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能初期化していない変数最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列数字臨機応変に切り替える機能もあり(今もそうかは知らん)、数字文字比較比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。

C#Hello Worldくらいしかいたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。

C++黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーション腱鞘炎になることもない。PC Unixにも最初から環境インストールされているか簡単インストールできるので毛嫌いせず使うとよいと思う。

Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。

CSS...はプログラミング言語なのか?そうか。

TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。

Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

これ以下のランキングのもその気になったら書こうかな。

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

anond:20200521175300

プログラミング自体を知ったのは中学校技術・家庭の授業。そのあと、初代プレイステーションゲームC言語で書かれていることを知って興味がわいた。

当時、家にパソコンはなかったけど、初心者向けのC言語本を読んで巻末の素数一覧出力プログラム理解した。

高校入学したあたりで祖父母からパソコンを買ってもらって、C言語プログラムパソコンに実際に入力して動かすようになった。

大学情報工学科に進んでから生業にすることを決めた。

anond:20200521122756

さすがに、用語定義からだろうな。C言語の中がコーディングというひとはおおい。スタックサイズだと16Kから1Mぐらいというのが多いと思う。

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