【2017】各プログラミング言語への愛
はじめに
VBが酷いのでVBの良さを必死に探していたのだが、そこでふと思った。「○○(言語名) 良さ」でググれば各言語を好きな人が良さを語っているのではないかと。
するとどうだろう。例えばRubyやPythonだと「愛してる」「最高」などのタイトルが目立つが、VBでは「VBがダメな理由」など否定的なタイトルが目立つ。
これは面白いと思ったので、2017年3月30日時点での検索結果を見ながら各言語の現状をまとめてみようと思う。
C
特徴
各言語の先祖みたいな言語。学校などではおそらく最初にやらされるであろう言語でもある。パソコンや組み込みなどの大体の環境でコンパイラがあるのでどこでも動かせる点は魅力かな。とはいえ最近はいろんな言語がマルチプラットフォーム化しているけど。
低レベル(ここで言う低レベルとはマシンにより近いという意味での低)なのでシステムに直接作用するコードも書ける。というかLinuxってC言語でできてるもんな。
古い言語なので最近の言語では当たり前にあるような便利機能がなかったり、使うのがよろしくない機能などもある。gotoとかね。
検索
やはりCから入ったであろう初心者の質問が出てきた。あとは最初にCをやれという意見の人もやっぱり居た。自分もCから入ったが今の時代は入門するにもっと素晴らしい言語がたくさんあると思う。
C++
Cをオブジェクト指向に対応させるため正統進化させた言語。CでできることはすべてC++でもできるはず。高速。実際画像処理させたらC#の何倍も速かった。
しかしCとの互換性のためにCでのよろしくない構文なんかもそのまま引き継がれていたり、なにぶん古い言語なので構文が冗長だったりもする。
もしCをやるなら素直にC++をすればいいと思う。
オブジェクト指向とは何か クラスとは? といった質問が目立つ。
また、便利だが人が扱うには強大すぎる力を持つポインタという存在についてもやはり触れられている。
意外(?)にもC++最高!みたいな記事はでてこなかった。
D言語
ニコニコ大百科より引用
後述するJavaなどのいいところをとって、かつネイティブなバイナリをコンパイルするので速いという特徴を持つ
が、仕様がすごいスピードで変わるので少し前のサンプルコードがうごかないなんてこともザラらしい。1.0系は保守されてるようだが結局2.0系で仕様変更しまくってるらしい。
基本構文自体は一般的なC系で読みやすい。まぁいいとこどりしてるんだから当然か。
また大きな特徴として契約プログラミング用の構文が用意されている点がある。
契約プログラミングは結構便利そうなのでちょっとうらやましい。
いりす症候群!というめちゃおもしろいゲームはD言語でかかれているらしい。
「最高の」とまで言われている。ちなみにD言語くんというのは
こいつ。D言語erはこんなヤバそうなやつを崇めながらコーディングしている(偏見)
ちなみにD言語くんアドベントカレンダーなるものまであるという…。
Java
Cなどのコンパイル言語と違うのは、JVMという仮想マシン上で動作するということ。コードをJVM用にコンパイル(?)し、マシンはJVMを起動してその上でコードを実行するという手順を踏む。各マシンごとにJVMを用意さえすれば、Javaのコードはどこでもうごく。インストールする時何億のマシンで動いてます的なキャッチコピーが出るのはそのため。ただ、JVMを実行してその上でコードを実行して…という手順なので若干遅い。
メリットはありますか?とか利点はありますか?といった記事が多い。皆Javaを使うことに疑問を感じているんだろうか…?
C#
Microsoftが開発した、JavaとC++とVBのいいところをパクってとってきた言語。大好き。
バージョンが上がるごとに便利機能がどんどん追加されて書きやすい。ただしC/C++などに比べると遅い。
専らWindowsアプリを作るのが専門だったが、最近はLinuxでもうごくしiOS/AndroidにビルドするXamarinというツールもある。
C++、Javaなど他の言語との比較記事が目立つ。C#は他の言語のいいとこ取りみたいな言語なのでそういった記事が多いのだろう。
Visual Basic
Microsoftが開発している言語。BASICという古い言語を元にしている。.NET上で動くようになった。なのでC#と比較されることが多い。Excel上で動くVBAはほぼVisual Basicと同じ。正直.NETになったのでVBでできることは大体C#でもできる。そしてVBはC#より給料が1割少ないという調査があるらしい…悲しい。
やはりC#と比較されている。VBAがおすすめされているがNaverまとめ(察し
.NETに統合されたのでC#の下位互換感が…
Perl
フリーのスクリプト言語。インタプリタというプログラムに書いたコードを読ませながら実行する。記述が自由で、同じことをするのに幾つもの書き方がある。それは逆に読みにくくなるということでもあるけれど。
ただPerlというとPerl5までの事を指すことが多いようだ。というのも、1987年のPerl1からPerl5までは互換性が保たれていて、古いコードでも動くが、Perl6とは互換がない。
WEBアプリケーションに多く使われている。後発のスクリプト言語、RubyやPythonと比較されがち。
PerlユーザーはPerl大好きなイメージがあるので、Perl賞賛記事が見当たらないのが驚き。そしてやはりRubyやPythonと比較されてる。
Ruby
まつもとゆきひろ(Matz)氏が開発したスクリプト言語。国産。
「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (enjoy programming)」
とあるように、プログラマーが自然に思いつくような構文が多いのでストレスがかかりにくい。
特に有名なのはWEBアプリケーションフレームワークのRuby on Railsだろう。GitHub、Twitter、クックパッドなどが一時期Railsで開発されていた。
こちらも構文が比較的自由。ただしrubocopというコードを自動でルールに従って整形してくれるツールがあるので、チーム開発時などでも構文を統一できる。
ライブラリをインストールするgemというツールが搭載されていて、ライブラリを扱いやすい。
実行速度が遅めだが、バージョンアップの度に改善はされている。
ラブ勢が多い。楽しく書けることをスローガンにしているからだろうか。
またWEBアプリケーションを作るのにPHPとRailsを比較する記事も目立つ。
Python
こちらもスクリプト言語だが、構文が自由なPerl、Rubyと大きく違うのは、構文がガッチガチなところ。「誰が書いても、同じ事をするコードは同じコードになるはず」という感じ。誰が書いても同じになるのであれば、誰もが読めるという理屈。まぁ実際にはそううまくいかないだろうけど、理にかなっている。
ガッチリ固めることで、ヒューマンエラーをなくそうという試み。
また、C/C++のライブラリと連携できるので、速いしたくさんのライブラリを使える。
最高という意見もありますね。それとやはりRuby,Perlと比較されている。
PHP
スクリプト言語。少し昔はWEBサイトはこれ一択みたいな感じだった気がする。今は選択肢が多くて嬉しいネ。
かつて栄えていた歴史から、大体のレンタルサーバーで動くという魅力はあります。
個人的にはあんまり書きたくないです。
「言うほど悪くない」「僕は肯定する」というタイトルの通り、一般的なイメージは良くない様。
JavaScript
他の言語と大きく違うのは、ブラウザ上で動作する言語だということ。発表当時人気だったJavaの勢いに乗っかろうとJavaScriptとかいうややこしい名前をつけたが、Javaとは関係ない。物凄い昔、開発元がMicrosoftにライセンスを渡さなかったせいで、MicrosoftはJScriptという微妙に互換がない似たやつを作ったので、後述するECMAが統合しようとしたりなんだりして大変だったらしい。
昔はブラウザ上でうごくプログラムといえばJavaアプレットやFlashが流行だったが、Google MapというAjaxという技術でぬるぬるサクサクなサイトができたので一気に人気になった。最近はNode.jsというサーバー側で動かすことも行われるようになった。
JavaScript周辺環境が複雑すぎるためか、JavaScriptそのものの話より、JSライブラリに関する話題のほうが多く出てくる…
Dart
JavaScriptがセキュリティ的に怪しかったり書きにくかったりするので、ブラウザ上で動作するあたらしい言語を作ろう!みたいな感じでGoogleが開発した言語。
JS代替言語(AltJS)の一つ。
Javascriptの代替を考えなきゃなとはみんなが思っているのだが、なかなか難しい様子。
そんなこんなで結局Dartをブラウザに搭載することは叶わず、Javascriptへのコンパイルという方法にシフトしたらしい。残念。しかしJavascriptへコンパイルする方法になったことで、他のJavascriptライブラリと連携しやすくなったりして良いこともあるようだ。じゃあTypeScriptでいいんじゃ…
最高と唱えるひともいるようだ。ただ、あまり新しい情報がないですね。JS代替言語はたくさんあるので、なるべく更新されているものを選んだほうが良さげ。個人的にはJS+jqueryで十分なケースしか扱ったことがないのでなんとも言えない…
CoffeeScript
AltJSの一つ。Rubyライクな構文の書き方ができる。つまりRuby環境(Ruby on Railsなど)だと、構文をあまり変えずにJS部分も書けるので良さげ。
ただぱっと見の人気はTypeScriptのほうが高いっぽい。それぞれ動的型付けと静的型付けなので純粋に比較できないけどね。
「駄目なのか?」「自分にとっては有益だった」とあるように、他でなんと言われていても俺にとってはいいやつだったよ感がある。
ただやはりちょっと古い情報が多い。盛り上がってないのかな?
TypeScript
こちらはMicrosoftがオープンソースで開発しているAltJS。静的型付けで同社のC#に近い構文。Visual Studioで開発できるのはちょっと嬉しい。
良さを熱く語る記事は見当たらないが、「つくってみた」などの実践した感想が多い。
ECMA Script
Javascriptの仕様をみんなで標準化しようぜっていうもの。つまり新しいJavascript。ついでに新しい機能もつけた感じ。もちろん新しい機能を追加したのでブラウザ側が対応していないと動かない。
ES2015
ECMA Script2015。クラスなどが使えるようになった。
ECMAScript 6 compatibility tableのサイトで各ブラウザの対応状況がわかる。が、現在は新しいブラウザはほぼ対応している。
ES2016
Exponentiation OperatorとArray.prototype.includesメソッドの追加。
**でべき乗ができるようになったのと、配列の中に要素が含まれてるかわかるようになった。
ES2017
async/awaitとか使えるようになる予定。
熱く語る人はそんなに居ないようだ。というかJS界隈はごっちゃりしすぎてて愛を叫ぶどころではなさそうだ。移り変わりも速いし。
最近読んでるWEB漫画
自分用まとめ
おすすめの漫画あったら教えてください
ぶんぐりころころ
一話
作品ページ
おばあちゃんとゲーム
一話
作品ページ
本
ベッドの下の怪物
#ベッドの下の怪物 pic.twitter.com/8tlE4C5mDO
— 瀬野反人 (@oba_ge) 2016年9月29日
#ベッドの下の怪物 pic.twitter.com/lY4h84tSSd
— 瀬野反人 (@oba_ge) 2016年10月1日
ついったーさん / 槻木こうすけ
作品ページ
美人女上司滝沢さん / やんBARU
作品ページ
異種族レビュアーズ / 天原・masha
ベテラン小学生タカシ / ショウマケイト
一話
妄想テレパシー / NOBEL
一話
最新話
きび様といっしょ / みやまるん
作品ページ
pixiv
悪魔のメムメムちゃん / 四谷啓太郎
憂鬱くんとサキュバスさん
本:
憂鬱くんとサキュバスさん 1 (ヤングジャンプコミックスDIGITAL)
- 作者: さかめがね
- 出版社/メーカー: 集英社
- 発売日: 2016/10/19
- メディア: Kindle版
- この商品を含むブログを見る
Anniversary Updateを適用したらWindows10が動かなくなった(解決しました)
結論
管理者権限を持つローカルアカウントを一つ作っておこうな!
参考:
症状等
怖かったのでWindows Updateはなるべくしなかったのですが、とうとうAnniversary Updateされてしまいました。
案の定動かくなってしまいました。
しかも、最初は動いていたのですが、そのときに「ディスク容量いっぱいだから前のバージョン消すね!」というメッセージが現れ、うっかりはいを押してしまったので、前のビルドに戻すこともできなくなってしまいました。
環境
GALLERIA ノートパソコン
Windows10 64bit Home
OSはSSDに、データ類はHDDに保存
症状
ログインしてデスクトップ画面に入ると、20秒ほどした後反応しなくなる
試したこと
ログイン後20秒は動くのでその間に頑張ってやってみたことです。
- タスクバーを開き、スタートアップタブからスタートアップアプリを無効にする→ダメ
- トラブルシューティングから前のビルドに戻す→失敗
- スタートメニュー→設定(歯車アイコン)→アカウント→ローカルアカウントでのサインインに切り替える からローカルアカウントに変更→ダメ
- 新しい管理者権限を持つローカルアカウントを作成し、そのアカウントでWindows Updateをかける→治った
解決策
スタートメニューの歯車アイコンから設定を開く
アカウント→家族とその他のユーザー→その他のユーザーをこのPCに追加 からユーザーを追加
ローカルアカウントで追加するには、「このユーザーはどのようにサインインしますか?」の画面で一番下の「このユーザーのサインイン情報がありません」を選択し、次の画面で「Microsoftアカウントを持たないユーザーを追加する」を選択する
管理者に変更するには、他のユーザーの欄に表示されているアカウントをクリックして、「アカウントの種類を変更」を押し、管理者に変更する。
これで管理者アカウントが一つ出来たので、そちらにログインする
もし元のアカウントにパスワードを設定していないなどで、新しいアカウントにログインする前に元のアカウントにログインしてしまう場合は、スリープして復帰するか、Windowsキー+Lでロックしてサインイン画面に戻り、サインイン画面の左下からアカウントを選ぶ。
新しい管理者アカウントで設定から更新とセキュリティ→更新プログラムのチェックで更新プログラムをインストールする。
だめな場合
参考のページにも書かれていますが、Shiftキー押しっぱなしで再起動ボタンを押すか、何回も強制終了をすることで表れるトラブルシューティング画面から、前のビルドに戻す を選択するのを試してみてください。
Windows10Proを買ってインストールしたら治ったという話もあります。
8月までKindle Unlimitedを使ってみた感想など
Kindle Unlimitedとは
Amazonの一部の電子書籍を、月980円で読み放題できるサービスです。
電子書籍はKindleというタブレット型の端末を使うか、iPadやパソコンのKindleアプリを使用して読みます。
イメージとしては電子版の図書館のようなもので、一度に借りれるのは10冊までです。(それ以降はどれか1冊を端末から消す必要がある。もちろんまた借りることも出来る)
使う方法は、Kindle端末かアプリを用意し、欲しい本の「Kindle版」をクリックして、「読み放題で読む」ボタンをクリックするだけです。
技術書なんかは平気で1冊千円を超えるので良いかなーとおもっていたのですが…
どんな本があるか
IT系くらいしか読んでないのですが、基本的には初心者向けの入門書が多いです。あとはパソコンパーツの雑誌とかOffice活用系の雑誌ですね。
Unity系もいくつかありましたが今は消えてるかもしれません。
あとアフィリエイト初心者向けのあーだこーだ言う系の本とか…
マンガは他の読み放題サービスに比べると少なめなようです。また、1巻だけ読み放題で以降の巻は有料なんてこともあるようなので、試し読みに適したサービスといえるかもしれません。
人気の本が消えた?
上の記事の通り、いくつかの本はラインナップから外れてしまいました。もちろん他の本も常時増えているので総数はそんなに変わってはいないのですが…。
プログラミング入門者の友人に勧めようと思っていた「C#の絵本」や「SQL ゼロからはじめるデータベース操作」がなくなってしまったのがショックでした。
(結構オススメなのでリンクを貼っておきます)
「Cの絵本」はまだUnlimitedにありました。プログラムがどうして動くのかの説明などもありますので、C言語以外でもプログラミングを始める方にオススメです。
なにはともあれ、本が減ってしまったのでちょっと年内は様子見したほうが良いかもしれません。自分はおとなしく文庫本とか読みます。
プログラミング初心者にとっては、たくさんの入門書を読んで、しかも合わなかったら読むのをやめても月額分以上お金がかからない良いサービスだと思います。
あとはアダルトもたまにいい写真集があったりするのでちょっと嬉しかったり…
まとめ
現状の評価は微妙なところです。
Kindle Unlimitedのトップページから読み放題になっている本が検索できるのでそれをみて使うか決めるのが良いと思います。
余談ですがUnlimitedトップの「コンピュータ・IT」カテゴリに表示されているのがなぜか科学カテゴリの本なので注意です。
おまけ
Unlimitedには入っていないけどUnlimitedに来てほしい本
リーダブルコード
ChromeのUserDataフォルダを移動した話(タスクバー対応)
絶望的なCドライブの容量不足
ゲームをインストールしようとしたら、Cドライブの空き容量が色々やっても2GBしかなく、インストール出来ませんでした。
この辺りのソフトで容量の割合を見てみると、Users/UserName(使用しているユーサー名)/AppData/Local/Google/Chrome/User Data/フォルダが3.1GBほど使っていました。
これをDドライブに移行できればと思い、色々やってみました。
引数でUserDataフォルダは指定できる
Google Chromeのユーザファイルを別のドライブに移動する|ichitaso's back of flyer
こちらの記事を参考にしました。
まずはUser DataフォルダをDドライブなどの空いているところに移動します。
そして、User Dataフォルダは引数(オプション)を指定して実行すると変更できるようです。
引数の指定の仕方は、ショートカットを右クリックして、「リンク先」と書かれている内容の最後に半角スペースを挟んで入力することで指定できます。
入力すべき引数は以下のとおりです。
--user-data-dir="[User Dataを保存した場所]"
自分の場合は "D:\User\UserName\AppData\Local\Google\Chrome\User Data" です。
しかしこれはショートカットの場合は出来ますが、タスクバーに常駐しているアイコンの設定はどのようにすればいいでしょうか
タスクバーアイコンのプロパティはShift+右クリック
タスクバーにあるアイコンも、通常のショートカットのようにプロパティを開けます。
Windows/Windows7/タスクバーに固定したアプリの引数を指定する方法 - TOBY SOFT wiki
こちらの記事を参考にしました。
方法は以下のとおりです。
この方法で起動すれば前と同じように起動できるはずです。
以上がChromeのUserDataフォルダを移動する方法でした。
注意点として、UserDataフォルダを間違って消したりしないように、コピーをとっておくと良いと思います。
マインクラフトにSEUSシェーダーを入れて遊んでみた
目次
概要
久々にマイクラにMODを入れたくていろいろしたのですが、久しぶりでところどころつまずいたので、備忘録的に書いておきます。
環境
Windows10 home
マインクラフトのバージョン:1.10.2
GALLERIAノートパソコン(グラフィックボード搭載)
SEUSとは
シェーダーとは
シェーダーはその名の通り、影の描写をするプログラムのことです。マインクラフトに追加することで、デフォルトよりも綺麗な影や水の表現をしてくれます。
いわゆるMODです。
導入すると以下の様な綺麗なグラフィックが楽しめます。
導入方法
OptifineというMODを入れることでシェーダーを追加できます。
まずはOptifineをインストールしましょう。
以下のOptifineのサイトから使いたいバージョンをダウンロードしておいてください。
導入方法は2つあります。
A:Optifineだけつかう
Optifineだけ使う場合は、ダウンロードしたjarファイルを実行して、インストールしてください。これでマインクラフトを開くと、バージョンのところにOptifineというバージョンが追加されているはずです。それを選択してPlayを押すと、Optifineが導入されたバージョンが起動します。
B:他のMOD(Forge)をつかう
他のMOD(Forgeを使うもの)と併用する場合は、Forgeをインストールし、ForgeのMODとしてOptifineを導入します。
上のForgeのサイトから、使いたいバージョンのものをダウンロードして下さい。
Recommend(推奨)のほうが安定版です。
Windowsなので、Installer winを選択します。
ダウンロードしたファイルを実行すると、Forgeがインストールされます。
マインクラフトを起動すると、Forge1.10.2のようなバージョンが追加されているはずです。
ゲームフォルダを変更した場合は、一度起動して終了してください。
このバージョンのゲームフォルダ(Edit Profileから見れる)のmodsフォルダにMODを入れると、そのMODで遊べるようになります。
先ほどダウンロードしたOptifineも、modsフォルダに入れます。
起動すると、タイトルのMODのところにOptifineが追加されているはずです。
シェーダーの追加
上のSEUSのフォーラムからSEUSをダウンロードします。今回はv10.1のUltraをダウンロードしました。
リンクは下の方にあります。
これをシェーダーのフォルダに入れます。(zipは展開してフォルダーとして追加しても、そのまま追加しても大丈夫です)
シェーダーのフォルダは、マインクラフトの「設定」→「ビデオ設定」→「シェーダーの詳細設定」の「シェーダーのフォルダー」をクリックすることで開けます。
フォルダを追加すれば、シェーダーの詳細設定のところに追加したzipなりフォルダなりが表示されるので、選択します。
これで美しいグラフィックのマイクラが楽しめる……はずでした
問題1:重い
すっごい重い。シェーダーを選択した瞬間からめっちゃ重い。グラボ積んでるのになぜ……
原因はマインクラフトを動作させているJavaをグラボではなくCPUの方で動作させているからでした。
解決法:グラフィックボードの設定にjava.exeを追加する
Javaをグラフィックボードで実行するよう設定します。
スタートメニューでJavaと検索し、出てきたものの「ファイルの場所を開く」でファイルの場所を開きます。java.exeとjavaw.exeのショートカットが出てくるので、それぞれさらに元のファイルの場所を開きます。
java.exeとjavaw.exeを右クリックし、「グラフィックプロセッサと共に実行」→「既定のグラフィックスプロセッサを変更」を押し、CPUからグラフィックボードの方に設定します。
これでサクサクになります。…が
問題2:真っ白になる
そこに広がっていたのは幻想的な風景でした。
Invalid program "composite1" というエラーが表示され、ほとんど真っ白になってしまいました。
これはこれで綺麗ですがこんな風にすべてのオブジェクトが輝かれると何も出来ません。
これはグラフィックボードのドライバのバージョンとSEUSのシェーダーに互換性がないことによるもののようです。
ドライバのバージョンを下げると動くらしいのですが、バージョンダウンはちょっとなぁと思いました。
解決法:シェーダーのソースを書き換える
※行う際は自己責任でお願いします。
ググってみると、こちらのサイトに解決法が載っていました。
composite1.fsh の 951行目のinをinoutに変更すると動作しました。
まとめ
Forgeをインストールし、ProfileのバージョンでForgeのバージョンを選ぶ。
Optifineはゲームフォルダのmodsフォルダに入れる。
シェーダーはビデオ設定から開けるシェーダーのフォルダに入れる。
それにしてもマイクラってやっぱり面白いですね!
javascriptのデバッグにはconsole.tableを使おう
配列やオブジェクトを綺麗に表示するconsole.table
javascriptのソースをデバッグしていたのですが、みなさん変数の確認はどうしていますか?
やはりconsole.log関数を呼び出しますよね。実はconsole.ほにゃららには仲間が居て、その中のconsole.tableさんがすごい便利でしたので知らない方は是非使ってみてください。
最初は「ほげー、console.logに適当に配列とかなげてもちゃんと見れる、すげー」とか言っていたのですが、console.tableに出会って目玉が吹っ飛ぶかと思いました。
百聞は一見にしかず
緯度と経度の配列をconsole.tableで表示してみます。
はいドン!
どうですか綺麗なテーブルでしょう!
これでもう左のちっちゃい三角を押す必要がなくなりました。
ちなみにこれはChromeです。他のブラウザでどう表示されるかはわかりません。
その他にも時間を計測したり、関数の呼び出し元を調べたりと、デバッグに便利な機能が以下のサイトで詳しく解説されていました。
これでjavascriptのデバッグが捗りそうです。