この記事は,みーの個人的な意見であり,各言語には一長一短あることをご理解頂いた上でお読みください.
みーが今まで扱った言語は,Java, Python, C, JavaScript, ActionScript, HSP, UnityScriptなどがありますが.現在はPythonとJavaScriptを多用しています.
Pythonは主にデータ処理を行うために使っています.統計処理や文字列処理が非常に簡単に実行できます.Django を使えばサーバーアプリケーションも作れます(以下データ処理にはサーバー開発も含みます).実行速度も申し分なく,ライブラリが充実しており,クロスプラットフォームで開発できることもよい点です.
しかし,PythonでGUIを扱おうとすると面倒です.QtやwxWidgetsなどGUIライブラリーはたくさんありますが,html, css, JavaScriptが織りなす自由な表現の世界には程遠いです.
JavaScriptはES2015が登場してから実用的になりました.import/export構文のサポート*1によって,モジュール毎に開発できるようになり,表現の幅が広がったように思います.
JavaScriptが便利になったので,より一般的な開発でも利用できないかと検討し,Node.jsを触ってみました.しかし,Node.jsの世界はあまり居心地がよくなかったです.いくつか理由をあげます.
import/export と require/module.exports の混在
node.jsのJavaScriptはES2015と少し中身が異なります.せっかくES2015に準拠して書いたjsファイルをnode.jsで使用しようとしても,
// ES2015 mymodule.js export default function() { ... }
これをnode.jsで利用するためには,babelでexportをトランスパイルしてから,
// node.js const m = require('mymodule').default
と読み込む必要があります.トランスパイルはありがたい機能ですが,やはり面倒です.
getBBox()がない
JavaScriptでSVGをレンダリングするときにnode.jsはDOMを扱えてもSVGElementのgetBBox()までは扱えません.結局はブラウザーではないので,JavaScriptが得意な描写機能を十分に使えないように思います.
結局,node.jsはJavaScriptの世界ですが,ブラウザーの世界ではないのです.
世の中では, universal javascriptでサーバーでもクライアントでもJavaScriptなのだという流派もあるようですが,開発を行うためにはある程度はサーバーのJavaScriptとクライアントのJavaScriptを区別する必要が出てきます.それならば,新たにJavaScriptでデータ処理を勉強するよりも,すでに慣れているPythonで十分で,GUI用にJavaScriptを使えばよいという結論に至りました.
というわけで,しばらくはデータ処理にPython,GUI用にJavaScriptを多用していきたいと思います.
プログラミング言語ランキングでPythonが2018年も1位になったというニュース*2があります.みーが以前から便利だと思って使っていた言語が,世の中でも支持されているのは嬉しいことです.