はてなキーワード: 互換とは
プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。
JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightとかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScriptに改名されたり、規格を話すときはECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースのオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。
Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。
Javaは初期のころオートボクシング / アンボクシングもなく、ストイックなオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコードも簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である。
PHPはWebネイティブな言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能や初期化していない変数を最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列と数字を臨機応変に切り替える機能もあり(今もそうかは知らん)、数字と文字の比較を比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。
C#はHello Worldくらいしか書いたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。
C++は黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーションで腱鞘炎になることもない。PC Unixにも最初から環境がインストールされているか、簡単にインストールできるので毛嫌いせず使うとよいと思う。
Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。
TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。
Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるから、カーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。
これ以下のランキングのもその気になったら書こうかな。
親指シフトキーボードの販売終了が決まったが、親指シフトが早いと思っている人が多いようなので書いた。
なお、現代で日本語を最も早く入力できる方法は、音声入力かステノワード系統(キーを複数同時押しすると変換済みの単語が入力できるもの)だ。キーボードの配列を多少どうこうしても、この二つには勝てないだろう。
このサイトが詳しい。その要点。
ようするに、親指シフトが早いとする根拠は、宣伝のため大昔に広められた話が元となっている。特に、打鍵数の話は嘘と言ってよい。いまでもこの話を使うのは人々を騙すようなものなので、絶対にやめて欲しい。
ローマ字から親指シフトに移行して、腱鞘炎が治った人もいるし、逆に腱鞘炎になった人もいる。
仮に、無変換キーと変換キーを親指シフト用に使うと、無変換+ホームポジションをカーソルキーにしたり、変換キーをCtrlにできなくなる。これはVimを使っていようがあった方がいい。これらをするには、何らかのソフトか特殊なキーボードが必要になるが、親指シフトを使う時点で同等の処置が必要になる。世の中には親指で押せるキーが大量にあるキーボードもあるが、それでも親指で押しやすいキーはキーボードの一等地であり、無駄遣いに変わりはない。
たとえば、左右交互打鍵というものがある。片手のキーを連続して打つよりも、左手のキーと右手のキーを交互に打つ方が早くなるという理論だ。この理論を元に、可能な限り左右交互打鍵になるよう工夫されたキー配列も存在する。
これは一見、とても理にかなっていそうだが、疑う声もある。例を出すと、QWERTYキーボードで左手だけを酷使する「fdsa」と左右交互打鍵の「fjdk」なら、左手だけを酷使する「fdsa」の方が早く正確に打てる。
現状、どのキー配列が早いか判断するには、タイピング熟練者の実際の速度を見るしかない。かな打ちやステノワードは、ローマ字打ちよりも使用者が少ないにも関わらず、タイピング大会などでローマ字よりも明らかに早いとわかっている。親指シフトはそうはなっていない。
ステノワードは権利でがんじがらめになっていて気軽に使えない。
かな打ちはローマ字よりも早いが、タイピングゲームではかな打ちを使うが普段はローマ字入力という人もいて、簡単に勧められるものではない。
AZIKのようなローマ字を改善したものもあるが、AZIK以外にも複数の入力方式が乱立していて、どれを使えばいいのかわからない。利用者はAZIKが一番多そうだが、それでもかなり少ないだろうし、「っ」の打ち方が本来のローマ字と違っていて互換性も低い。
モニタの設定画面とかエアコンの壁リモコンには日本製CPUのおまけで付いてくる私家版uITRONは丁度良かったんだよ デスクトップPCのBTRONはダメだった
どうしたいかというと、BTRONの構想的には「パナソニック版パナトロン」「ソニー版ソニロン」「富士通版フェニトロン」みたいなのが乱立して全部アプリは互換になるはずだった 誰がそんなもん作るか買うかって話ですわ
昔は、HTMLで javascript 描いて、動的ページでキャッきゃうふふしてたのよね。1996年頃。
それでもみんな我慢して javascript 使ってたのよ。
そしたら、クライアント側で javascript で書いているなら、サーバ側でも javascirpt 使いたいって言い出す人がでてきてさ。
perlやphpや ruby なんか使わないで、サーバサイドも javascript 使おうってなって、 Node.js が作られた。
そこから一気に、javascript がモダンな開発言語の1つになってしまった。
なにがアップデートじゃ、その自分の価値観の方が「上」って発想は貴様らが一番嫌ってるものなんじゃないのか!!と噴き上がりそうになったが、良く考えてみるとアップデートって単語は別に傲慢じゃないかもしれん
OSをアップデートしたら使い勝手が悪くなった、みたいな話はよく聞くしな
アップデートしないと世の中についていけなくなる(バージョン互換を切られる)ということだけが事実で、そこにどちらが優れているって価値判断はない?
じっさいそっちの方が便利だからって昔のosを使い続けてる人もいるしな アップデート=善って発想が間違いか
「価値観のアップデート」はただ価値観を変化させることを指したニュートラルな用語、別にそれによって良くなるっていう含意はない そう解釈することにしよう
まつほろひとゆきが作った日本産のコンピューター言語。パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的なWebフレームワークはtDiary
C
デニス立地さんがNTTで開発した言語。マルチクスというOSを作成するために作られた。わざと複雑な言語仕様にすることで自分の役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミのゲーム制作にさえ使えなほどの超高級言語
おまじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様に曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境で動作しないなど)
オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。
主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。
代表作はOpenGL、DirectX、Window10、LibreOffice など
JavaScriptから派生した言語。読み方は(ジャワ。ジャワ島のジャワ。)。もともとはOracleの創始者の博士が趣味で作成して、現在のOracleデータベースの基礎となるテクノロジー。アプレットという実行するための専用プログラムをインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークはコーヒーだと思われがちだが、紅茶(ジャワティー)である。
アンドロイドOSを作成するためにも使われており、アンドロイドのOSカーネルはJavaで制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。
対策するためにはGC戦略を見直してヒープ領域のサイズやメモリに乗せるキャッシュのサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。
このように業務用データベースから携帯電話まで幅広く使われているので、Javaの技術があっても市場価値は殆どないと言われている。(みんな使えて当たり前)
晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーションを作成するために使われている。PはパナソニックのP。を略してPHP
かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバルで評価できたりするなど、洗練されていてとても便利な言語である。
HTMLやメール本文の中にもPHPの処理を書き込むことができる。
この世のすべてのサーバーに実行環境が存在するので、PHPのコードさえあれば、コンパイルも不要でどのような環境でも動作する。
C言語の100倍生産性が高く、Wikipedia、Facebook、Slackなどの超一流のサイトやサービスで大量のアクセスを捌いている。
WardPressと呼ばれるフレームワーク(全世界のWebサイトの3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWebは存在していない。
データベースとも親和性がある、などと言われることもあるが特に根拠はない。
韓国人棋士を倒したAIに特化したプログラム言語。Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在はDartという言語は存在していない。
AIに特化しているというだけあり、低レイヤむけの実行ファイルを作成する必要があるため、コンパイルが必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。
デフォルトでディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。
JavaScript
Javaの元になったプロトタイプベースのオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブにWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。
それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。
並列プログラミングが不可能な作りのため、コールバックを多用して、スパゲッティーコードを量産することができる。
NPMを使う奴らは、JSがブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。
Javaと同じくJavaScriptから派生した言語。Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。
$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。
JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである。
jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である。
JavaやjQueryなどと同じくJavaScriptから派生した言語。Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。
型に特化した言語であり、Microsoft製のVSCodeというIDE環境でしか開発、実行が出来ない。(ただしMacやLinux上でも動作可能)
TypeScriptを動かすにはサーバーにVSCodeもインストールする必要があり、言語やIDEのバージョンアップも多いため、メンテナスンスが困難である。
前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSのメンテナンスもままならない、という理由で最初のバージョンがわずか14日間で作られた言語。
製品を選ぶことすら面倒。それどころか「無難さも性能の一部だろ」くらいに思っている。保守的な傾向があり女性率が高い。
macOSユーザーによる「iPhone使っているならMac使えば?」という言葉が大変ウザいと考えていて「ハードの縛りキツイし、もう少しコスパが良くなれば検討する」という評価。
AppleによるIntel Mac移行期にマーケティングへ失敗しクリエイター需要がWindowsへ移ってしまったため、クリエイターがこの組み合わせであることも多い。
Androidはクリエイティブなアプリケーションのライナップが少なく性能も微妙なのでiOS/iPadOSを使わざる得ないという事情もある。
情報技術者が使っている場合「WSL2便利すぎワロタw」と喜んでいる。
コスパ重視で多少の使いにくさも我慢できるという人の組み合わせ。
クリエイティブ用途はあまり考えておらず、価格対性能のコスパを重視する傾向にある。
Windows x iOS/iPadOSの場合と同様に何も考えずこの組み合わせになっている年配がかなり多いが、IT技術者やゲーマーなどが採用することの多い組み合わせでもある。
Googleが大好きで何故かmacOS x iOS/iPadOSなAppleユーザーを敵視していることもある。
好きな言葉は「最強」。
Appleの囲い込みによる製品連携シナジーの恩恵を最大限に得ている。
MacやiPhone/iPadどころかAirPodsやApple Watch、HomePod、Apple TVも持っている。
「意識高い系」と言われるのが大嫌いで、大抵の場合は「ユーザービリティを考えたら〜」と反論するものの、そのユーザービリティは自分個人のみを指すことが多い。
情報技術者の場合「安定したPOSIX互換機」という評価をしていて「iOS/iPadOS Appsが開発が完結できてプロプライエタリなソフトが充実するならLinuxでも良い。あとサウンド周りな」と思ってる。
クリエイターがこの組み合わせの場合は絵描きであることが多く、3DCGやDTMの場合はIntel Macへの移行に遅れてしまった人が大半。
自分の価値観にこだわりがあり、Androidが好きというよりも制限の多いiOS/iPadOSが嫌いと言った方が実態に近い。iTunesも嫌い。
「データのやり取りはクラウドを経由するし意外とそこまで問題ないよ」が口癖。
Apple製品が好きだがGoogle製品も好き。何ならAmazon製品も好き。
正攻法では使いにくすぎるこの組み合わせにこだわるユーザーはmacOS x Androidよりも物凄く変わっている。
iOS/iPadOSの脱獄は当たり前、ていうかそうしないとLinuxではまともにiOS/iPadOSが使えない。
彼らの存在によってiOS/iPadOSの脆弱性は明るみになりAppleの新製品情報も内部コードから発見してしまう。
完全にギーク。不具合は自分でなんとかするDIY精神にあふれる組み合わせ。
他所の良いものは悪びれもなくパクり、他所より良いものを開発したらドヤる。
何か言われても「ランレベルを1にして〜」とか「sudo pacman -Sy archlinux-keyring」とかおおよそのユーザーには理解できない呪言を吐く。
おおよそのユーザーはそもそもそういうのが面倒なわけだが、そういう細かい心理は気にしない。
MicrosoftやAppleをイジり倒すのも趣味にしており、彼らの口から一般人に知られていない面白い過去のエピソードが飛び出すことが結構ある。
裏を返せば「お前ら何で他のOSがそんな詳しいんだwMicrosoftやApple好きすぎるだろwww」ということなのだが、それは公然の秘密である。
Chromebookは安く買えるLinux向けハードウェアだと思ってる。