もっとも「WTF」なプログラミング言語って? 110
ストーリー by headless
調査 部門より
調査 部門より
ITworldの調べによると、開発者に最も嫌われているプログラミング言語はVisual Basicだったそうだ。一方、「WTF(what the fuck)」というキーワードを使い、困った状況に陥りがちな言語のランキングも行っている(ITworldの記事、
本家/.)。
プログラミング言語の比較に「WTF」を使う方法は開発者のSammy Larbi氏が考え出したもので、GitHubでの検索結果から各言語1リポジトリあたりの「WTF」出現頻度を集計する。調査の意味が少しわかりにくいが、困惑したり怒ったときなどに使われるインターネットスラング「WTF」の出現頻度を調べることで、開発者を悩ませる場面の多さを知ることができるのだという。2年前にLarbi氏が集計した際にはObjective-Cが1位だったという。なお、Larbi氏はコード全体から「WTF」を検索していたが、今回ITworldではGoogle BigQueryを使い、コミット時に添付されるコメントのみを検索対象にしたとのこと。その結果、1位がC++で2位以下はLua、Scala、C#、JavaScriptと続く。特に1位のC++は2位以下に圧倒的な差をつけている。一方、Objective-Cは16位。Visual Basicは20位以内にも入っていないそうだ。
プログラミング言語の比較に「WTF」を使う方法は開発者のSammy Larbi氏が考え出したもので、GitHubでの検索結果から各言語1リポジトリあたりの「WTF」出現頻度を集計する。調査の意味が少しわかりにくいが、困惑したり怒ったときなどに使われるインターネットスラング「WTF」の出現頻度を調べることで、開発者を悩ませる場面の多さを知ることができるのだという。2年前にLarbi氏が集計した際にはObjective-Cが1位だったという。なお、Larbi氏はコード全体から「WTF」を検索していたが、今回ITworldではGoogle BigQueryを使い、コミット時に添付されるコメントのみを検索対象にしたとのこと。その結果、1位がC++で2位以下はLua、Scala、C#、JavaScriptと続く。特に1位のC++は2位以下に圧倒的な差をつけている。一方、Objective-Cは16位。Visual Basicは20位以内にも入っていないそうだ。
言語に関係なく (スコア:2)
私がコーディングしたものを改修する人は言語に関係なく嫌われているかもしれない
普及率で割らないとだめだよ (スコア:1)
古い言語ほどやられるし、普及している言語ほどやられる。
Re:普及率で割らないとだめだよ (スコア:2)
そもそも使ってみないと(しかもある程度深く)、WTFと言いようがないのでは?
Re:普及率で割らないとだめだよ (スコア:2)
普及しててバグがあればよりその影響は大きいんだから。
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re:普及率で割らないとだめだよ (スコア:1)
経済的損害額 と 精神的苦痛(?) を正規化できたとしてでっち上げてみる。
OSの悪影響指数 = (バグ数 + 精神的苦痛 ) x ユーザ数 + 経済的損害額
さすがに、こんなには単純じゃないか。
#プログラマの苦労は知りません
Re:普及率で割らないとだめだよ (スコア:1)
マイクロソフトのエラい人が言いました。
「ユーザ数で割ればWindowsのバグの数などたかが知れている」と。
Re: (スコア:0)
じゃあ、OS X >> 超えられない壁 >> Windowsだね。
Re: (スコア:0)
『WindowsXPがユーザ1人あたりのバグが最も少ない』みたいな“不都合な事実”が見つかったりして
Re: (スコア:0)
バグ数をユーザ数で割ると何か良いことあるのか?
Re: (スコア:0)
マイクロソフトのエラい人に聞いてくれ
Re: (スコア:0)
もうやめて!COBOLのライフはゼロよ!
Re:普及率で割らないとだめだよ (スコア:1)
しかしアーレイ・バーク級として復活 [wikipedia.org]しているんだが...
対象は英語話者のみですか (スコア:1)
使う言語がひどかったのか、プログラムの題材が悪いのか、
はたまた前任者/同僚がクソコードを書いただけなのか、
コメントからは判断できないだろうね。
言語? (スコア:0)
言語に対してWTFなのか、コード自体に対してWTFなのか分からんのじゃないの。
Re:言語? (スコア:1)
VC++(MFC)で、有る画面と継承された別の画面で、修正前、チェックは親画面側にしかロジックが無く、
チェック追加時に、子側画面にも親側のまねをして、チェック関数を追加し、そのデリゲートに差分ロジック
のみを書いたら、
子側画面で追加した以外のチェックが働かなくなってひどい事になった事が有ります。
何で、Shadowsと書かなくてもシャドウしてしまうのか不思議でなりません。これこそまさにfxxxxxxxxxxxxxxk
の典型だと思います。単なる文追加が、それ以上の意味を持ってしまうなんて、吃驚仰天です。
Re:言語? (スコア:3, すばらしい洞察)
オーバーライドってそういうものだと思うんだけど。
C++じゃなくとも、.Net以外のOOD言語って基本オーバーライドするものだよ。
他にもあるかは知らないけど、OverridesかShadowsかを選べる.Netのほうがむしろ異端じゃないかな?
ポリモーフィズムってのを勉強するといいよ。
素人がオブジェクト志向系言語に近づくとこういう痛い目に遇うって言う典型だね。
Re:言語? (スコア:1)
仮想関数についても学んだ方が良いかも。
Re: (スコア:0)
それって言語の問題じゃなくて、フレームワークの問題でしょ。
たぶん、Windows関係は、MFCの問題でWTFが多くなっているんじゃないの。
純粋なC++のフレームワークじゃなかったからはまった人多数ってことで。
Re: (スコア:0)
WTFなコードを書けるような言語はダメ,ということかもしれない
Re: (スコア:0)
そういうことがないようにした場合、プログラミング言語といえるほどの自由度がなくなりそうですね。
Re:言語? (スコア:1)
1行ぐらいテンプレート使うコード書いたら100行ほどエラーが出てWTF
日常茶飯事
WTFなプログラミング言語はわかりませんが・・・(オフトピ) (スコア:0)
lolなプログラミング言語なら
http://www.blue.sky.or.jp/grass/doc_ja.html [sky.or.jp]
Re:WTFなプログラミング言語はわかりませんが・・・(オフトピ) (スコア:3)
WTF, lol なプログラミング言語ときたら当然 LOLCODE [wikipedia.org] の話だと思ったのに!
(ただし LOLCODE において「LOL」は予約語ではないらしい。「WTF?」は予約語 [lolcode.org]。)
Re: (スコア:0)
英語版でもlolを使うようになっていない件
Visual Basic (スコア:0)
なんでこんなに嫌われてるんでしょうね。
取っつきやすい言語だと思うんですが。
Re:Visual Basic (スコア:1)
私の偏見ではVBしか扱えない開発者の質が低すぎる。他の言語を使ったことがない、使おうとしても理解できない、そんな開発者がまともなコードを吐けるわけがない。
Re:Visual Basic (スコア:4, 興味深い)
VBしか扱えない開発者っていうのは大半が
”VBすらまともに扱えていない”
のが事実かと…
Re: (スコア:0)
特定の言語しか使えない(『使わない』ではない)奴が役に立たないのは、
VBに限ったことじゃないだろ。
Re:Visual Basic (スコア:1)
Lispだったら?
Prologだったら?
# そんなの見たことない。
アセンブラだったら?
# 絶滅危惧種?
Re:Visual Basic (スコア:1)
本来、パフォーマンスは高いツールだと思います。かつては素晴らしいものだったといっていい程に。
自分がストレスを感じるのは
・もっとハイカラな言語を知っていて、VBの言語仕様ではその代替案も実現できないような時
・VBのスケールに合わない実装をとにかくVBで求められる時
・出来の悪すぎるプログラム(VBはやはり多いみたい)のメンテナンスを強いられる時
・VB.netはCLIに合わせすぎて誰に優しくしたいのかよく分からん
こんなところでしょうか。
Re: (スコア:0)
VB6(非.Net)で、めんどくさい事をやれと言われた時に、VB6に殺意を覚えるのは共感できますね。
ただ、小規模な開発だったり、既存システムの運用のためのツールなど、GUIが必要で簡単な代物などを作るには便利ですよね。
結局は、道具の一つなんだから適材適所でしか無いのですよね…。
Re: (スコア:0)
取っつきやすい程度のことをやるには便利な言語だが、いまだにBASICで実務の開発をやってるのは限界を超えて大規模化してしまって、他の言語で作り直すのもままならなくなったようなシステムばかりだからじゃないか?
#便利だからうちでもこまごましたツール開発にまだBASIC使ってるよ!
Re:Visual Basic (スコア:1)
昔のVisualBasic6でまだ開発しているところもあるんですよ!
#ええ、ウチです。なんでWindows8でも動いてしまうんだか。
Re:Visual Basic (スコア:1)
林檎教徒によるとWindowsって互換性が低いはずなんだがなぁww
Re:Visual Basic (スコア:1)
きっとCOMオブジェクトを参照設定に追加してやるつもりだったんだろうなぁ。COMがなにかも知らずに。
ていうかDLL=COMだと思ってるのが多い。
Re:Visual Basic (スコア:1)
VBがC#やJavaよりもさえている1つの事例 [atmarkit.co.jp]
これが言語? (スコア:0)
冗談は顔だけにしてくれ
Re: (スコア:0)
みんなに嫌われているわけではないですよ。
一部の感情的に嫌っている人があたかも「こんなに嫌われている」と言っているだけ。 VB以前のモダンでないBASICのトラウマから抜け出せないそんな人たちに。
別のコメントにあるように、まともに作れない人が言語のせいにしているのはあるかな? VBはとっつきやすいだけでなく、フレームワークや部品をちゃんと用意すれば生産性や品質の良いシステムを比較的簡単に作れるが、それをしない現場も有るので。
Re: (スコア:0)
>フレームワークや部品をちゃんと用意すれば
今はどうかしらないけど、VB.net以前の頃(VB5とかVB6とか?)はそのフレームワークや部品を使うのにいちいちレジストリ登録とか必要だったり、
開発で何度か差し替えると希にわけのわかんない状態になってDLLを呼び出すのに失敗するようになったり、
異なるベンダどうしで一種類のクライアントPCにあれこれ自分たちが必要な環境を登録してたら意味不明の挙動をするようになったりと
ひどいもんだったんだよ。
当時VBに関わっていた者は、今でもDLLを見るとひどくおびえて意味不明の言葉をつぶやきだすんだ。
恐ろしいことだよ。
Re:Visual Basic (スコア:2)
そこは納期にも全く間に合わなくて、参加他社が手分けして引き取った物さ・・・・。
Re:Visual Basic (スコア:1)
まあ、こういうモダンでない状態でのトラウマから抜け出せないそんな人たちがいるわけです。
ちゃんとした事ができない現場では仕方ありません。VBが悪いと愚痴るしかできないのです。
DLL地獄はVB由来ではありません。だいたいなんでレジストリをいじるのでしょうか?
もしかして、VBソースにAPIの宣言を直接書くとか間抜けなことをしていましたか?
Re: (スコア:0)
「取っつきやすい」
→ まともなプログラミングできないようなユーザも多数いる
ってことかもよ。だからろくでもないコードが一杯あって見る方が苦労する、と。
また宗教戦争ですか? (スコア:0)
本当に「言語」を理由に嫌われているとかなら有益な議論もできるが、どうせ宗教戦争みたいになると予想する。
どうせ「○×は嫌いだ」と希薄な根拠で悪口を言うことに終始するのでしょう。
だいたい、Larbi という人はどこまで信用できるの? まあ、悪口の数を数えたそうなので、言っている内容はここの雑談内容とは一致する気はするけどね。
C++って (スコア:0)
クラスが使えるCとか、javaより速いjavaみたいな扱いだから、
名前や使い方が似ているだけのあんまり筋の良くない機能が乱用されている気がする。ポインタとかnew演算子とか、
ポインタは大抵参照で代用できるし、メモリリークするのはdeleteを忘れたのが原因ではなくて、不用意にnewを使ってしまったのが原因のはず、
可変長配列は標準で用意されているし、make_sharedを使えば、shared_ptrを使う時にnewを使う必要はない。
Re:C++って (スコア:1)
名前や使い方が似ているだけのあんまり筋の良くない機能が乱用されている気がする。
C++にそれは言ってやるな・・・。
C++は今ある洗練された多くの言語のおばあちゃんみたいなもんだよ。
ネイティブ言語の後継者が育たないので未だに現役張ってるだけで。
Re:C++って (スコア:2)
C++の立ち位置すごくよく分かった気がする…
危ない使い方は禁止、LINTチェックではじいて使うならC++でも幸せになれますか?
そして、育ってくれるならどの言語の素性がよいと思いますか?(宗教論争になると思うので個人的意見で)
Re:C++って (スコア:1)
それはMT車で「クラッチペダルを踏むな」と言ってるのに近い。
書く側が理解するんだ。
Re:C++って (スコア:1)
根性じゃなくて技術だよ。
いわゆるアプリだけがソフトウェアだと思ってる?
C++ってのはマニュアルなのが特徴なの。
言語仕様では低レベル操作が隠蔽されていないからこそ低レベルな応用にも使えるんだよ。
逆に(#2468059)の言う「筋の悪い機能」が使えなかったら低レベルな応用には全く使えなくなる。
だからこそ「クラッチペダルを踏むな」ってのと同じなんだよ。
それに、Javaでも実体と参照の区別程度はできてないとハマるよ?
例えばstaticな参照とか、Androidの破棄されずに使い回されるイベントのインスタンスとかね。
だから余計にそれは根性じゃなくて技術。
Re:C++って (スコア:1)
>ネイティブ言語の後継者が育たないので未だに現役張ってるだけで。
さすがに自己矛盾したコメントじゃなかろうか。C++の役割はまさに「ネイティブ言語」である点にあるわけで。
そして、その意味で「後継者」、つまりライバルは現在に至るまで不在だし、それはC++がよくできているからだろう。
C++は複雑な言語だけど、複雑さには理由がある。C++の目標は、「コンピュータの低レベル機能へのアクセスを実現すること」、
同時に「静的に型付けされたオブジェクト指向設計をサポートすること」、そしてそれらを「なるべくポータブルに」かつ「効率的に(最小限のオーバーヘッドで)」実現することだ。
これらすべてを同時に実現するために複雑になっているが、これらすべてが必要とされる分野というのが世の中にはあって、
例えばJavaのランタイムがそうだ(まあCで実装されているものもあるけど)。結局、JavaのプログラムはC++で書いたランタイムの上で動いている。
単に設計が古いとか、設計者が馬鹿だったという理由で複雑なわけじゃない。
元コメや元々コメなんかは、ドライバとか、言語のランタイムのような低レベルなコードを書いた経験がないからC++の価値がわからないんだと思う。
「ポインタは大抵参照で代用できる」とか、明らかにわかっていない。ガベージコレクタを実装することを考えてみればよい。
Re:えらい人は言いました (スコア:1)
そうだそうだ。
JavaScriptくらいシンプルで美しい言語に(WTF)言うとか意味不。
古いIEとかDOMはWTFかもしれないが言語としてのJSには関係ない。
Node.jsとか環境が分離された場所では十二分に活躍してる。