
Python、2 年連続 TIOBE Index で最もレーティングを伸ばしたプログラミング言語に 58
ストーリー by headless
連続 部門より
連続 部門より
TIOBE Index で 1 年間に最もレーティングを伸ばした TIOBE Programming Language of the Year のタイトルを 2 年連続で Python が獲得した
(The Next Web の記事)。
TIOBE Index では開始以来 Java と C が不動のトップ 2 だったが、2020 年に入って Java が急速にレーティングを落とし、2020 年 11 月には Python が Java を抜いて Java と C 以外の言語で初めて 2 位となった。Python はその後 Java と横並びの状態が続いており、2021 年は 3 位でスタートしたが、10 月に C を抜いて初めて 1 位となって以来トップを維持。11 月以降は C に 1 ポイント以上の差をつけている。Python は Language of the Year のタイトルを最も多く獲得しており、今回が 5 回目だ。最近 5 年間では 3 回獲得している。後の 2 回は C が獲得しており、累計獲得数は 3 回で Python に続く。
1 月の TIOBE Index では 1 位の Python が前年同月比 1.86 ポイント増の 13.58 % となる一方、2 位の C は 4.94 ポイント減 (12.44 %)、3 位の Java は 1.30 ポイント減 (10.66 %) と大きくレーティングを減らしている。このほかの言語でレーティングが 1 ポイント以上変動したのは 5 位の C# (5.68 %、+1.73) のみ。C# は 12 月までタイトルを獲得する勢いだったが、Python が 1 月に逆転した。
4 位の C++ (8.29 %、+0.73) や 6 位の Visual Basic (4.74 %、+0.90) が 0.5 ポイント以上増加し、11 位の PHP (1.40 %、-0.60)や 12 位の R (1.25 %、-0.65)、17 位の Groovy (0.94 %、-0.90) が 0.5 ポイント以上減少している。Groovy はランキングも前年の 10 位から大きく下げており、19 位の Fortran (0.77 %、+0.31) が前年の 30 位から大きく上昇している。
TIOBE Index では開始以来 Java と C が不動のトップ 2 だったが、2020 年に入って Java が急速にレーティングを落とし、2020 年 11 月には Python が Java を抜いて Java と C 以外の言語で初めて 2 位となった。Python はその後 Java と横並びの状態が続いており、2021 年は 3 位でスタートしたが、10 月に C を抜いて初めて 1 位となって以来トップを維持。11 月以降は C に 1 ポイント以上の差をつけている。Python は Language of the Year のタイトルを最も多く獲得しており、今回が 5 回目だ。最近 5 年間では 3 回獲得している。後の 2 回は C が獲得しており、累計獲得数は 3 回で Python に続く。
1 月の TIOBE Index では 1 位の Python が前年同月比 1.86 ポイント増の 13.58 % となる一方、2 位の C は 4.94 ポイント減 (12.44 %)、3 位の Java は 1.30 ポイント減 (10.66 %) と大きくレーティングを減らしている。このほかの言語でレーティングが 1 ポイント以上変動したのは 5 位の C# (5.68 %、+1.73) のみ。C# は 12 月までタイトルを獲得する勢いだったが、Python が 1 月に逆転した。
4 位の C++ (8.29 %、+0.73) や 6 位の Visual Basic (4.74 %、+0.90) が 0.5 ポイント以上増加し、11 位の PHP (1.40 %、-0.60)や 12 位の R (1.25 %、-0.65)、17 位の Groovy (0.94 %、-0.90) が 0.5 ポイント以上減少している。Groovy はランキングも前年の 10 位から大きく下げており、19 位の Fortran (0.77 %、+0.31) が前年の 30 位から大きく上昇している。
本屋でやたら推してるけど (スコア:0)
時代に取り残されたお爺さんには何が良いのかわからない
Re:環境の始動に時間がかかるけど、動き出すと早い (スコア:4, 興味深い)
たが、python の経験が少ないとそこら辺が大変。動かし方やビルド環境が落ち着くまでに色々かかる。C/C++ がメインだった人は完全に慣れるまで半年ぐらいかかる。
他言語経験者だった場合は、一度、開発体制の歯車がカッチリ合うと早い。
依存関係としては、ライブラリなどが多いと API の動作変更や削除など 意図しない変更を避けるために、プログラム事に全てを囲っておかないと危ない。 別の言い方をすると、一プログラム事の venv かな。 そうしないと、静的リンクが出来ないので、こっちのプログラムは動くけど、あっちが動かなくなったがある。 C++ や C でも動的ライブラリを使うと起きる問題だけど、静的ライブラリで逃げられる。 これは、緩いライブラリ API の塊で、グループの数が多かった場合に陥る問題。 この為に特別な処理をいれる必要があった。
言語としてはやりたいことは google で探すと、大体解説と共に載っている。 細かい一つ一つの実装は大体これで見付かる。
pytest が秀逸でテストを書きやすい、付け足しやすい。 unittest の patch で関数呼び出しの戻り値を入れ換えたり、 特定の関数に渡す引数を調べられたりして、取っても強固。 C/C++ もあれこれあるけど、色々と手間がかかるし、低レベル関数乗っ取りはかなり無理。
シェルスクリプトよりも書きやすくて、それなりの速度で動けば良い所だと手軽。 C/C++ だと構造体やクラスを作るところを dict で済ませられる事も多い。
json ライブラリも便利。 ファイルに json で読み書き。内部構造としても、json のまま保持したりする。 ある意味、データとコードが同じになるので、テストで使う json データも 直打ちだったり、ファイルから読み込んでも一、二行で済むので楽。 別の言い方をすると、最悪の場合、プロジェクト毎に書かれている C/C++ の 設定ファイルの書式と各種 API を書くような人は Python ではいない。 Pytho では json で読んで、必要な dict キーがあるかの検査をする程度。
ただ、型指定は弱い。 typing と言って、変数型や関数の戻り型を指定できるが、言語としては無視している。 意図していない型で渡して、例外の原因になっている事もある。 酷いのだと、デバッグに print を入れたら、そこで例外が投げられるようになって 余計何が起きているのか分からなくなったり。 スクリプト言語主体の人達はそこら辺が寛容すぎて間違ったものが渡されていてもなかなか気にしない。 静的型言語主体の人達はどんな型が渡されるかとても気になって、気になってしょうがない。
長くなったが、一言でまとめると「開発環境がこなれて安定し、利用者が慣れてると、 とっても便利。短い行数で意図する事が出来るので、慣れると作業が早くなる。」
元、C/C++ を主体にしていた者が、ここ一年程 Python だけの環境で作業した感想。
Re:本屋でやたら推してるけど (スコア:2, 参考になる)
・WindowsをUNIX-Like OSと同列にファーストクラスの環境として扱っている。
・環境隔離(venv)を標準で持っている。
・標準ライブラリが充実している。nodeのleftpadみたいな小指のツメほどのライブラリとかで、ちょっとしたプログラムで数十のサードパーティライブラリみたいなことにならない。
・型の硬さが程よい。rustとかgoほどガチガチではないが、lsp使ってればスイスイ補完されるぐらいにはしっかりしている。
・I/Oバウンドなプログラムはasyncで平行性上げられる。
コマンドラインツールからWebアプリまで汎用性があってバランスが良いってのが良いところですかね。
実行時のパフォーマンスが必要ならrust、開発効率ならpython。
標準でパッケージング機構もってるってのもポイントか。cargoやpipのように、配布まで含めて面倒見てくれる言語でないと使う気しない。
Re: (スコア:0)
C/C++言語も標準ライブラリ増やせばいいのに
とくにデスクトップ用やサーバ用で使う場合、CPUもメモリも有り余ってるんだから、
標準ライブラリ増やして、車輪の再発明をなくし使いやすくすればいいのにね
Re: (スコア:0)
C++はだいぶ標準ライブラリ増えてるぞ
Cはフリースタンディング環境で無用の長物が増えるだけだし…
Re: (スコア:0)
Windowsで使うMSVC限定でどんどん使いやすくなってる感じがするな
UNIXやら機種問わない使い方する場合便利になってるとは思えない
Re: (スコア:0)
Rubyは長年、windows捨てすぎなのよな。
昔のActivePerlも、やっぱwindows捨てていたし。DBなんかに繋げなかった。
Re: (スコア:0)
Windowsでしか動かないActivePerlがWindows捨ててるって意味わからない、
Re: (スコア:0)
WSL使えば済む時代にわざわざActivePerlなんて入れないし。
Re: (スコア:0)
とりあえずPythonに因んでスパム [wikipedia.org]でも食べときましょ。
Re: (スコア:0)
プログラミングしたいけど言語は何がいい?と聞かれてPythonと答える勇気はない
Re: (スコア:0)
自分で言語を選べるレベルなら何でも好きにすれば良いと思うけど、
普通にSIerに入って食っていこうとするなら何が最適なんだろ。
一昔前ならJava一択で幸せになれたと思うんだけど、今はなんかモヤモヤしちゃう。
かといってC系統でもないと思うし、あえてCOBOLの茨路を歩く人生はやだなぁ。
Re: (スコア:0)
正解はSIerに入らないことかと・・
Re: (スコア:0)
うーん、IT土方とか揶揄されるけど、理系コミュ障にとってはベターな選択肢の一つだと思うんだよね。
それなりの会社なら普通の30代でも6~700万位は稼げるようになる可能性高いし。
他の理系研究職程要求水準が高くない割に汎用性があるので、マシな方ではないかと。
ベンチャーとかだと、自分たちで立ち上げてボードメンバーに入っていれば大きく報われる可能性もあるけど、
あとから入ると待遇とか福利厚生が微妙だったり、要求される能力の割に報われない感じ。
ただ、業界引っ張る程の力量があれば、好きなだけ稼げるとも思う。
Re:本屋でやたら推してるけど (スコア:1)
SIerでコミュ障はダメだろ。人と関わらなくていい商売じゃない。
Re: (スコア:0)
40代にもなると続けられない。
タクシー運転手でもやるか。
Re: (スコア:0)
Python辺りが十分に操れるのなら、入社後にその業務で使う言語をマスターするので十分だろう。
いくつかの微妙な言語よりもPythonなら十分にコーディング能力を評価できるし、Pythonが業務に直結する会社も少なくない。
相手方の人事がPythonの意味を理解できないなんて事がなければ。
Re: (スコア:0)
わしゃーぷろぐらみんぐしたいけどげんごはなにがいいって問いに答える勇気がそもそもない
Re: (スコア:0)
プログラミングの目的を指定されていないなら自分の使える言語を答えておけばいいのでは?
本屋に行かなくなりました (スコア:2)
プログラミング関連の書籍は読まなくなりました。本屋にも滅多に行きません。
Webを見た方が早い。日本語でも情報が沢山あります。そして最新の情報は全部英語。
書籍はたまに洋書を買うぐらいで、日本語の本は買わなくなりました。日本語訳が出る頃には時代遅れになってるからです。
日本の本屋でやたらとpythonが推されてると感じるのは、ネット検索さえできない初心者にしか書籍が売れない、
その手の初心者は「python入門」みたいな「なんか知ってる単語」+「入門」という形の本を好んで買う、という事かもしれません。
Re: (スコア:0)
10年前なら「Webを見た方が早い」と言えるけど、今どきは「いかがでしたか」ブログと謎機械翻訳サイトとプログラミングスクールのゴミに埋め尽くされてまともな情報得るの困難になってない?
かと言って書籍が復活したわけでもないのでシンプルにまともな情報源がなくなった
Re: (スコア:0)
いかがでしたかブログと共に育ってきた世代ならゴミの避け方も心得てるんだけど今からネット始める層にはきついだろうなー
アフィリエイトがいろいろとネットの価値を破壊してきたと思う。反社の収益源にもなってるし法規制が必要。
Re: (スコア:0)
とりあえず、トップにジャンボトロンが出てくるサイトを避けるようなサイト、無駄Q&Aサイトを避けるようにしている。
まあ、そうなるとQiitaかよく分からない個人blogしか残らないけれど、大体それで求める答えは得られる。
Re: (スコア:0)
> ゴミの避け方も心得てる
初めからゴミ漁りしかしてないだけじゃん
運営が反社だと分かってるなら規約違反なので、アフィ業者とサーバー屋に詳しく通報すればいいよ、犯罪なら警察にチクってもいいし。
Re: (スコア:0)
アプリケーション、処理対象が定まればそれに適切なプログラミング言語も自然と定まる
うちは組込、数値計算関連なので必要とあらば今でもFORTRANを使う
MATLABやMathematicaは普通に使う
他の特定用途向けライブラリに依存するような開発はしないのでPythonを使う機会は無い
Re: (スコア:0)
FORTRANすっきやで❤
(*´ω`*)
Re:本屋でやたら推してるけど (スコア:3)
同じく。ただ新しい仕様のFortran本が少ないのが残念なところ。
なので最近はPythonに浮気気味です。Fortranを除く他言語よりは複素数が使いやすいので。
でも数式と同様に書ける点ではFortranの方がやっぱり書きやすいですね。そういう目的の言語ですし。
Re: (スコア:0)
Pythonを使うことが要件でなければJuliaがおすすめ。
Re: (スコア:0)
10年以上前から使っていますが、数値計算用ライブラリが揃っているのが当時からのメリットですよ。
Pythonが無かったら(あるいはnumpyが無ければ)RとかMatlabがもっと使われていたと思う。
Re: (スコア:0)
Pythonという言語の存在を知ったのは
ダウンローダーのIria(後のIrvine)のスクリプト
20年前か…
Re: (スコア:0)
制御用の数値計算でMATLABをばりばり使ってましたが、今はPythonの方が多いですね。
最近はAI系でPythonを避けられないこともあって、顧客企業にPythonで提案して困ることが無くなったのも大きい。
Re: (スコア:0)
非プログラマーでも扱いやすい点が良さげ。VBAの代わり。
Re: (スコア:0)
C++程ではないと思いたいが、昔Joel on softwareで言われていた「コード片から確定できることが何もない」になりつつある。
書いて極楽、読んで地獄なんだよ。lispもマクロを多用するとそうだったしな。
Re: (スコア:0)
foo = Bar()
foo.hoge = 'hogehoge'
しかしBarクラスにはhogeなどという属性は存在しないのだみたいな。
Re: (スコア:0)
ディープラーニングでよく使われてる
Cは何に使われてるの? (スコア:0)
こういうランキングの上位に必ずCがあるけど一体どこで使われてるの?
組み込みはもうほとんどがC++でCなんてほぼ絶滅しちゃってるし、
linuxカーネルぐらいしか思い浮かばないし、そこでのレーティングがそんなにあるとは思えないし・・・
Re:Cは何に使われてるの? (スコア:1)
貴方の周囲ではそうかもしれませんが、組み込み系はあなたの知らない世界なのですよ。
本気で。
Re:Cは何に使われてるの? (スコア:1)
組み込み系CPUで使ってます。
ルネサスとかの開発は、Cのみみたいな、、、。
まあ、ROMサイズ 32KB, RAM 8KB とかで、使えるのって、あとはアセンブラ?
最近、組み込み世界でもアセンブラ、知らないって人もありの模様。
----
「最適化: 標準」でやってるが、ブレークポイント置けない行があって困る。
まあ、困ったら、NOP()とか入れて、、、、でも最適化された。
Re: (スコア:0)
最終的にCがRustに置き換わるといいなと思ってるけど、Unsafeの嵐になりそうな予感も。
Re: (スコア:0)
コンパイラーのバックエンドにLLVMしか使えないの限りマイナーな組み込みに進出するのは難しいのでは
Re: (スコア:0)
個別にツールチェインを用意しないといけないようなマイナープロセッサこそ
LLVMの恩恵を受けられると思うんだけどね。
Re:Cは何に使われてるの? (スコア:1)
たとえばモーター制御用ドライバとか、そんなのはいまだにアセンブラやらC言語だったりするでしょ?
Re: (スコア:0)
C++だよ。
8bitCPU使ってブラシレスモーターを単純回転させてた頃はアセンブラだったけど、今は制御が複雑になりすぎてC++でないと無理かな。
Re: (スコア:0)
残念ながら、昔ながらのソフトウェアではCがいまだに現役です
「一度作ったプログラムを継ぎ足し継ぎ足しごまかしていく、言語を変えてまで作り直したりはしない」っていうトコがほとんどです
絶滅してると言えるあなたのところは、ちゃんと技術的に更新できているところなので誇っていいと思います
まぁ元記事の方でもCは大きく割合を落としてますしC++は着実に増えていっているので、今は過渡期ということなんじゃないかと
Re: (スコア:0)
あなたが言うように、共存ではなくCを捨ててC++というケースは、もうほとんどないので、
Cの置き換えという意味では、移行先はC++でなくRustじゃないかな。
Re: (スコア:0)
ベアメタルの組み込みで普通に現役
特殊用途向けCPUだといまだにC89しか使えないことがある
Re: (スコア:0)
電源制御用のマイコンはCで書いて、アプリケーション側のリッチな方のCPUはC++で書いているものを知ってるなあ。
そのC++も関数の中身はほとんどCで書かれていたりするけど。
Re: (スコア:0)
工業の制御寄りの世界では、昔作ったC言語が現役ですね。
大規模な生産ラインの変更でもしない限り、現役稼働中の生産設備の制御周りを書き直すことはないです(PLC以降はちょっとわからないですが)。
とはいえ小規模な設備導入はあるので、その度にメンテする感じでした。
ちょうど、レガシーシステムの代名詞として、経理系がメインフレーム&COBOLのセットであるのに対して、制御系はC言語な位置付けですね。
新設の工場とかではC++やJAVAなのかな。
これは日本の話ですが、海外も多分似たような状況なんじゃないかなあ。
Re: (スコア:0)
Python や C++ を作るのに C が必要。
Re: (スコア:0)
安定性を考えると動的メモリ確保を一切しないという選択肢もあって
C++として使ってしまうと危ういのでCとして使うとかあるかも。