「インタープリタ」を含む日記 RSS

はてなキーワード: インタープリタとは

2024-05-09

https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa

リファレンス記述

To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the following arguments: /c plus the name of the batch file.

バッチ ファイルを実行するには、コマンド インタープリターを起動する必要があります。 lpApplicationName を cmd.exe に設定し、 lpCommandLine を /c にバッチ ファイル名前を加えた引数に設定します。

今回問題になった実際の挙動

lpApplicationNameバッチファイルパスを設定するとCreateProcessは暗黙的にcmd.exeを起動しバッチを実行しま

lpCommandLineもcmd.exeに渡されます

2024-02-08

anond:20240208150342

AppleiOS採用しなかったせいだとよく言われるけど当時のAndroidFlash対応だったしなぁ

今になって考えてみるとFlashやらShockwaveやらSilverlightやらは当時のPCスペックではJavaScriptインタープリタで実現できなかったことをするための代替手段だったのかなと思う

まあこの手のプラグインは往々にしてネイティブコード実行に到達しやすく結局セキュリティ理由排除されることにはなっただろうけど

2023-07-23

ChatGPTの使い方いろいろ

なんかみんな頭のいい使い方しようみたいになってるけどさ。なんか違くないか

まぁ使えるんだけども微妙なきもする。インタープリターは便利だけどね。俺もちょうど48日後が知りたいみたいなときに日付計算をサクッとやってくれるし。

それはそうと、メンタルケアとかのほうがいいと思ってて、例えば営業職とかでストレスマッハになった職員ケアとかさせるのがいいと思ってて、ストレスサポートできるなら、頑張れる人結構いると思ってて、

おれもFX最近やっててまー。こいつに聞いてFXチャートの動きがわかることなんて無いわけで、ChatGPTに期待しているのは俺の話し相手になるわけで、

FXで含み益を抱えたときに冷静になる、含み損抱えたときに冷静になる。チャートに揉まれゲロ吐きそうなときそば感情吐露して、それに応答してもらえるだけでも支えになるわけで

それでFX利益出るなら、この使い方のほうが良くないか?結局人間メンタル削るタイプの高所得仕事サポートみたいなのが一番効率のいい使い方になりそうな気がしている。

風俗とか水商売の人も使ったらいいと思う。多分だけど。しらんけど。

2022-12-12

ロリコンオタクのせいで日本人ネットから排除されていた

はてな村村長の語りに便乗して昔話しちゃおうかな

結構多くのWEBサーバアクセス制限で.co.jp .ne.jp .jpがdeny設定されていたって話である

https://b.hatena.ne.jp/entry/s/twitter.com/kanose/status/1601270223386324992

 

2005年までの個人サイト自宅サーバブーム

個人ネット利用で大きな転換点は2005年くらいで、例えばブログのはしりはてなダイアリーサービス開始は2003年アルファブロガー選考開始は2004年youtubeサービスインが2005年だが、これらの特徴は「アカウントをとって企業WEBサービスを利用する」という、今では当たり前の方法だ。

だがこの以前にはそういう方式のものは少なく、ISPや借りたレンタルサーバ自分コンテンツアップロードして構築するというのが主流だった。

これは内部的にはLINUXサーバ制限アカウントを貰ってユーザーディレクトリの/WWWファイルを置くという事やね。

から最初のうちは個人サイトURLは「http://www.yourisp.co.jp/~aybabtu」って感じだった。~はUNIXユーザーホームディレクトリを示すのね。やがてバーチャルドメイン対応するサーバ会社が増えてhttp://www.aybabtu.rentarusabaa.comみたいな今では当たり前のURLになったんだが、最初バーチャルドメイン設定は有料だった。

MS Officeには「パブリッシュ」ボタンがあってそれを押すと編集してるファイル群の構造のまま指定したサーバFTPファイル送るみたいな機能もあった。(だがこれはShift-JISでUpするというクソ仕様で後に読めなくなるのだった)

httpの頭のHTはハイパーテキストで、参照箇所にはリンクが設定できて参照元ジャンプ(これも死語だ)できる電子文書なわけで、まさに公開はパブシュッシュ=出版なわけだ。今もサブスクリプション新聞雑誌定期購読というのはこの建付けが残ってるからだ。

 

ISPWEBレンサバにはユーザー権限多寡で違いがあって、ユーザに実行権限付与してperlなどのインタープリタを構築しておくと、テキストであってもファイル先頭にインタープリタへのパスを書いておくとそれが実行され、標準出力httpで返す。これがCGIで、ISP供与で多いHTMLファイルの公開だけの権限制限されたサーバに不満な層は「CGI実行可」のレンサバ屋に移っていった。

但しプログラムであるから、いい加減に書いてループ参照とか起こすとサーバCPUメモリを喰いつくしサーバダウンを惹き起こす。だからISP供与のでは実行権限を与えなかったわけだ。逆に言えばISPが必ずホームページ公開スぺースを供与するのに個人向けレンサバが成り立ったのは何故?と言えばCGIの実行が出来たからだ。

故にWindowsしか使わない人には難しい上級者向けだったのだが、これを優しいチュートリアル簡単設定出来るようにしてユーザーを増やして会社を大きくしたのがpaperboy&co.の家入一真氏なわけだ。はてな創業者近藤淳也氏と並ぶ個性的アントレプレナーと謂われた。その後堀江などと共にインターネッ党を作って都知事選に出て箸にも棒にもな結果になったのは黒歴史なので触れないで上げてください。特に堀江野菜でいじられるよりも傷つくので偉そうに政治の話してる時に「インターネッ党」とボソっというのは残酷な事なので止めてあげて欲しい。お願いします。

また、CGIでの使用言語perlが圧倒的で、perlで書いた掲示板スクリプトを配布するサイト趣味プログラマが星の数ほどいた。

こういう訳で初期のWEBで動的ページ=perlであってJcode.pmを開発した小飼弾氏は魔術師扱いされて崇拝されており、ブログブームが来ると圧倒的な人気を誇った。

今では多言語普通に扱えるのが当たり前だが、マルチバイト文字の扱いというのは難しく、文字コードがそれぞれ違うのがそれに輪をかけていた。例えば今でも日本語Windows上でフランス語中国語ファイル名は作れないだろう。また、最初からかなりの期間、Twitterでは日本語検索が出来なかった。youtubeでも日本語投稿できなかった期間は長い。

子飼氏はperl日本語使用できるようにするライブラリUNICODE対応にしてWEB普遍的日本語が使えるようにしたものだ。

ただ、HTLMと実行文を混ぜ書きできるPHPがver.4になるとデータベース連携が強化されていてデフォルトSQL文発行関数実装されており、perlCGIは廃れていってしまう。

 

またISPより高い自由度を求めて自宅にサーバを立ててそれを公開するという者も現れた。

はてなサーバデータセンターに置いてはいものの、筐体は町工場設計図を持ち込んでステンレスの1U筐体を自前で作っていたし、Pixivギガバイトシステムボードを使って自作した多数のサーバエレクター上に置いてむき出し運用してしていたので、自宅サーバ組の延長にあったのだな、実は。

アップローダ

 

こういう中で画像を公開する、動画を公開するというのはなかなか大変だった。

間内で見るという分にはファイルを置けばいいだけだが、問題になったのが「2ch晒し」であった。これは悪意を持って2chURLを貼るのだけじゃなくて、単にURLを書くというのも含まれた。

というのも2chURLが書かれるとアクセスが集中して大抵はサーバダウンしてしまう。すると他の契約者のサイトもページも見れなくなってしまう。

例えばヒーロー戦記主題歌みたいな社歌buzzった日本ブレイク工業サイトは重すぎて何週間も閲覧出来なくなった。社歌動画ファイルを置いていたためだ。

こういうサーバダウンは契約者の責任ではないがホスティング会社も許してはくれない。契約解除、つまり出ていけか、法人契約への変更かを迫られる。転送制限なしと言っていても実際に転送過多になると干すティングになるわけだ。

から2chは悪意の塊の他にサーバーダウンとサーバからの追い出しを惹き起こすので蛇蝎のように嫌われていた。2ch晒し→その時点でサイトを閉じてしまう人も多く居た。

 

するとこれを逆手に取ってアップローダあぷろだ)を自作サーバ運用してアフィリエイト収入を上げる者が現れてくる。

ただこれは著作権違反ファイルが上げられて訴えられる事もあるからそのリスク低減のためと転送制限の為にファイル容量に制限が設けられていた。

 

すると大きなファイルを共有したい連中はこれでは満足できない。

そこで目を付けたのが海外アップローダ運用しているサーバだ。運用動機日本アップローダと変わらない。だがファイルの大きさの制限が緩かった。

そこでそういう海外アップローダ違法性が高いファイルの共有に使われるようになった。やってたのは2chダウンロード板と半角板がメインだ。

 

ようやくロリの話

だがこれは運営には迷惑な話で、日本人は英語広告なんてクリックしない。しか商品販路が無いので日本からアクセス報酬は支払われない。つまり金を落とさず転送量だけ上がるのだ。しか海外では転送量従量課金は多かった。

 

更に問題なのがロリ画像アップロードされることだ。2次元ロリでも規制があるのに実写ロリは完全アウトだ。実写ロリが発覚した場合サーバ管理者は必ず逮捕される。マグショット新聞掲載されTVで晒され、釈放後も幼児被害者性犯罪者なのでGPSロガ装着が義務付けられ住所は共有される。二度と部屋を借りる事は出来ずに一生トレーラーハウスキャンピングカーを買って橋の下生活となる。

こんな実写ロリ画像動画アップロードする奴が居たのである

 

そこで管理者としては日本からアクセスが増えたのを確認した時点で遮断するしかない。一生を棒に振る可能性を回避するためだ。

圧倒的によく使われるWEBサーバapacheでは.htaccessというシステムファイル記述してアクセス制限を掛ける事が出来る。ここで国別IPアドレス指定するのはちょっと難しいのでdeny from co.jp deny from ne.jpという風に書くとドメインco.jpne.jpからアクセスを全部弾くことができる。

この時にディレクトリ指定を「/」にするとそのサーバの全てが弾かれて403エラーが出てしまう。しかバーチャルドメインも同じなので思わぬところで403エラーが出る事もある。

そういう訳であちこち海外サーバ日本からアクセス拒否されていた。全て2chダウンロード板と半角板のやつらのせいである。

自分アメリカ田舎新聞社のトップページ403を食らったことがあるから嫌われ方は相当なものだと思う。「やるべき.htaccessの基本設定」みたいなのに書かれて共有されたのかも知れない。

 

因みにダウンロード板と半角板は2ch名物厨房板だったのに、今見たら無くなってるのな。諸行無常だ。

 

AYBABTU

2005年サービスインしたYoutubeだが、翌年にGoogleに買収されたもの最初は元paypal社員らが作ったベンチャーだった。

だが最初著作権違反コンテンツばかりであって、自作ビデオというのは少なかった。

特に酷かったのがまた日本人で、最初10制限がなかったのをいいことにアニメの全話丸上げみたいなのが大量にされており、当事者アニオタ達も「ここまでやったら閉鎖されるだろ!」と諫めるほどだった。

そんな中で2006年6月Youtubeが数日間の大メンテナンス突入し、画面には「All your video are belong to us」というブロークン英語が書かれていて騒ぎになった事があった。

これの元ネタは「All your base are belong to us」で、古いセガゲーム英語版で出てきたセリフだ。深刻な場面で突然めちゃくちゃな英語をいう。このおかしさでFLASHが作られたりとミーム化していたものだ。

しか日本ゲーム結構あちこちバカ英語を作ってて、engrishとかjanglishとか言われてネタにされていた。日本で言えばアヤシイ中国製品の日本語を愛でるような感じだ。

そこでYoutubeあんメッセージを出したので、日本ネット民は身に覚えがありすぎて「アニオタのせいだろ!また排除されるだろ」と責任なすり合いと相なったのだった。

因みにその後も日本人の利用が制限とかは無かったので誤解だったのだが、海外アップローダ見つけては403の焼き畑とかロリ画像問題とかがあって、その後のアニメフル全話という流れだったので過剰反応をしたのであった。

 

以上、ロリ403の話でありました。

2021-08-08

プログラミング言語関数型言語ってOOPを含めた命令言語に劣る理由

Scala や Elm と Lisp やら HaskellOCamlSML関数型のプログラミング言語勉強したけど、これらが命令言語に劣る理由解説しよう。

解釈自由関数言語アセンブリレベル最適化ができない

これは、SQL も同じ問題を持っているが、関数言語は「こういうふうに動いてね」という解釈インタープリターやコンパイラが「推測する」必要があるのだ。つまり、書いているときパフォーマンスプログラマー想像できない。

ハイパフォーマンスを出す関数言語コンパイラを作れば良いじゃん?

それが、現実的に厳しいのだよ。マジでコンパイラ関連は金にならない領域になってきたので、関数言語のための独自コンパイラを作る持続可能組織が無い。確かにLLVM を使えば x64arm といった最新のアーキテクチャ対応できるかもしれないけど、フロントエンドレベルすら応対が辛い。よって、関数言語C言語にてチューリング完全な同等なコードだと「いくら最速に書いても」遅いのである

人間は「命令するほうが楽」なので、関数言語は負けます

例えば if と書いたら、関数言語は else が必須ですが、命令言語は else 無しでも動いちゃうのですね。文系の連中が数学的な背景を加味して要件定義できると思うか?違うだろ。毎回、上に else のことについて聞いたら、プログラマー生産性は下がるだろ。関数言語は、上が文系だとますますだが、分岐もきっちりとおさえる必要があるから生産性命令言語に劣るよ。

2021-05-28

anond:20210527175503

初期のパソコンにはコンパイラなんて無かった。あるのはBASICインタープリタばかり。で、苦労してコンパイラを手に入れたりした。(または、苦労してコンパイラを作った)

2021-01-06

anond:20210106125327

少なくとも初心者のうちはプログラミングプログラムを書いてコンパイラーやインタープリターのフィードバックを受けながら学んでいくものからプログラミングの題材として練習問題はあった方がいい。文字列操作を学んだあと「これでシーザー暗号実装できる!」みたいに思いつく初心者はそう多くないので。

2020-11-28

植物悟空の中身(瀬尾 一樹 )の本物のアカウントフォロワー悟空の1/30でクソ笑った

これが瀬尾 一樹 https://twitter.com/kusanonamaesay

瀬尾一樹

@kusanonamaesay

樹木医/インタープリター/植物調査する人/たまにWebライター

名前ペンネームです。植物知識ふつうくらい。

東京都区部2015年2月からTwitterを利用しています

130 フォロー

4,579 フォロワー


こっちが悟空 https://twitter.com/kusaiyajingoku?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor

やけに植物に詳しい悟空

@kusaiyajingoku

オッス、オラ悟空

わかんねぇ木や草があったら、#オラ草が知りてぇ をつけて聞いてくれ!オラたちや地球のみんなが答えてくれるはずだ!

わかんねぇやつや、見逃しちまったやつは答えらんねぇ事もある…!ごめんな!

オラは花壇のお花や多肉植物とかの園芸もんはわかんねぇことが多い!

地球2018年10月からTwitterを利用しています

59 フォロー

13.4万 フォロワー


フォロワー数の差が凄いね

3倍とかじゃなくて30倍。

いやでも4000もいりゃよくね?

集英社喧嘩売ってまで伸ばす必要ある?

限りなくて無名に近い植物ライターであること考えたら4000フォロワーいりゃ十分じゃん。

目先の金と承認欲求のためにアクマに魂を売って、そして正常性バイアスで頭が壊れたままマネタイズしちゃったんだろうな。

ただ厄介なことに「瀬尾 一樹」ってあくまペンネームからコイツを地の果てまで追いかけて制裁するとかは無理っぽい。

敷いてできることがあればこの名前をもう使えなくすることぐらいかなー。

書籍の方になんか指紋みたいのがアレばそこからたどって二度と業界に居られなくすることもできそうだけど、まあ分からんね。

ぶっちゃけ植物研究クラスタ判断待ちですわ。

瀬尾 一樹をダークヒーロー扱いするか、恥知らず無能な味方としてクラスタ追放していくのかは

2019-12-26

境界性人格障害がひどかった時の話をしていいか?あと自由意志の話も

自分気持ちがいつもくちゃくちゃになっている感覚気持ちが同時に100こあって、悲しいのと苦しいのと腹立たしいのと…という感じ。自分のことが嫌いで嫌いで、にっちもさっちもいかなくなる。歩くことがままならない。人間、悲しいと歩けなくなる。しゃがんで、波が引くのをじっと待つ。たいてい10分くらい泣けば少し落ち着く。音楽を聴いても、漫画を読んでも、ラジオを聴いても、その作り手を想像し、働いていない自分と彼らとを対比して劣等感に苛まれる。苦しかった。自分の苦しさなんか人からみたらしょーもなくて、実家も太いし理解もあるし病院も通えてる自分のことが嫌いだった。その意味で、不幸であればあるほどよかった。処方された安定剤効果は感じられなかった。でも安い薬じゃないし、飲み飛ばすのがこわいから頑張って飲んだ。

そうこうしているうちに恋人と別れた。いやな別れ方だったけど、恋愛から遠ざかったおかげで、多少の安定が生じた。カウンセリングも受け始めた。カウンセラーと話すのは苦しいし、泣いてうまく話せないし、お金かかってるのにもったいないなぁってまた苦しくなる。でも、これ以上悪くなったら嫌だなあと思って必死に通った。まだ通っている。

通院より失恋よりカウンセリングより効いたのは、自殺未遂だった。1週間計画を練って、死ぬことだけを考え続けた。1週間と聞くと短く感じるかもしれないけど、自分にとっては果てしなく長かった。死を怖がるつもりはなかったけど、自ら死に飛び込んでいくのは怖かった。自殺は暗くて寂しくて怖かった。永遠孤独無限遠に向かって伸びていくようすだった。まあ失敗したんだけど。

自殺を試みてから急激に病状が落ち着いた。

根本に「治ってたまるか」という気持ちがあったと思う。自分はとことん不幸であるべきだし、それが美しいんだという気持ち無意識にあって、そこの欲求が満たされたのではないか

境界性人格障害は、人生のある時期における気持ち不安定状態のことを指すもので、一生涯続くものではない)

自由意思なんかないなと思う。無意識化に起こった脳の判断インタープリターが理由を用意する、という営みに、意思とか人格とか見出しちゃうのが人間のかわいくて嫌なところだ。

自由意志否定する文章を読むと、人間モラルに反した行動をしやすくなるそうだ。https://www.ncbi.nlm.nih.gov/m/pubmed/18181791/

お互いの自由意志否定しあったら、もっと優しくなれないかなぁと思ったけど、そううまくもいかないんだろうか。好きで甘ったれてるわけじゃないんだよね、とかって好意的解釈ができないだろうか。

読んでくれてありがとう。つまんなかった?じゃあね

 

2017-12-04

石器からスマートフォンが作れなくて、震える

もしコンパイラを全世界で同時にうっかり削除してしまったら、元の状態に復旧できるのだろうか?|Rui Ueyama|note

思考実験として、全世界の人が同時に、自分の持っているコンパイラインタープリタなどの実行ファイルをうっかり全部消してしまったとしよう。そうするとそれ以降、ソースコードが残っていても、コンパイラ自身も含めてどのようなプログラムコンパイルできなくなってしまう。この状況から人類は元のコンピュータ文明を復旧することができるのだろうか?


自分はよく「人類現代知識と知恵を持ったまま旧石器時代並みの環境に戻ったら、どれくらいの期間で今の技術に達するか」という空想をする。

科学技術知識も持っているけど、道具は石器だけ。でも資源はまだたくさんあるっていうルール

もちろん、持っている道具を使って、新しい道具を作るのはOK目標は、スマートフォンを作るってところまで。


でもね。石器で穴掘って、鉄鉱石集めて、ネジ作るくらいで、もう途方に暮れちゃうのよ。

頑張って細かい刃物とかヤスリを手作業で作ってきたのにさ、この先 もっと小さい電子回路とか作らないといけないんだよ。

逆に考えてみてもさ、スマートフォン作るためには、半導体を作るための機械がたくさんいるでしょ。

その機械を組み立てるのにも、コンピュータとかロボットとかモーターとか、数え切れないくらいの部品が要るわけだ。

その部品を作るためにも工場が要るし機械が要るし。

最終的に町工場に行き着くにしたって、旋盤機械があるんだぜ。

どこまでいったら手作業だけで作れる部品になるんだ。


そんなことを考えると、震えるね。

2017-11-21

ruby入門したいんで何読んだらいいですか、という人にrubyはただのインタープリタなので何のライブラリを使うかが大事、とは言わんでしょ、的な事態に遭遇して、モニタの向こうで「あ、はい、賢いんですねー」っていってた

2017-10-19

BASIC!のプログラミング教育適応性について

題:BASIC!のプログラミング教育適応性について

副題:Androidで動くBASIC!でプログラミング教育を行うメリットデメリット

少し考えてみたのでまとめとして投稿します。

01.はじめに

この文章は、Androidで動くBASIC!でプログラミング教育を行うメリットデメリット

ついて記載しています

02.BASICとは

BASICプログラム初心者向け言語として1960年代に発表された古い言語です。

極めて簡単文法インタープリターによる即時実行や1970~80年代パソコン

無償で搭載されていたこから沢山の人に利用されていました。

しかし、簡単ゆえの機能の少なさと即時実行方式のための性能の低さやその後の

優れたプログラム言語発表によりBASICの利用は著しく低下しています

03.BASIC!とは

BASIC!はアンドロイドタブレットスマートフォン上で動くアプリです。

Google playからインストール可能無料で利用できます

BASIC!

https://play.google.com/store/apps/details?id=com.rfo.basic&hl=ja

BASIC文法踏襲していますが、Android向けに大幅に命令拡張されており、

GPS等の各種センサー情報取得やSQLiteデータベース機能WEBVIEWを利用

したHTMLCSSJS表示・実行など約500程度の命令群で構成されています

無料広告なしのアプリインストールするだけでこれらの機能が利用可能

インタープリターなのですぐに実行することもできます

04.BASIC!でプログラミング教育を行うメリット

メリットについては以下があげられます

a.BASICプログラミング知識を持つ人は以外と多い

 過去の栄光というかBASIC自体は広く利用された時期が過去存在パソコン

 だけでなくポケコンゲーム機等でも利用できました。

 BASIC!は基本はBASIC拡張であり文法変数の取り扱いにおおきな違いは

 ありません。

 その当時、少しであってもBASICを触った人は多いのでメンターとしての

 再教育は容易だと考えます

b.HTML,JS,CSS勉強継続してできる

 BASIC!は手続き型と呼ばれる非オブジェクト指向言語であり最新の言語

 とは異なっています

 BASIC!のネイティブ命令群だけだと他の言語へのスムーズな移行は難しい

 かもしれません。

 しかし、BASIC!にはHTML5アプリのようにBASIC!自体webViewでHTML,JS,CSS

 を動かすことができます。(HTMLモード

 HTML,JS,CSS現在Webの標準であり、進化を続けています

 特にjavascriptオブジェクト指向言語進化採用される領域フロント

 エンドからバックエンドまで広がっています

 

 BASIC!自体webViewは他のAndroidアプリ同様、chromiumベースAndroid

 システムWebviewの更新により常に最新化されています

 HTMLモードではjQuery,Angular,ReactなどのJSライブラリも利用できます

 最初BASIC!ネイティブプログラムHTMLモードJSを利用したプログラム

 とSTEPを踏んだ学習可能だと思います

c.インストール環境設定が容易

 前述の通りアプリインストールするだけで利用できます

 追加の課金プラグインなどは不要です。

 またAndroid2.3以降でインストール可能です。

 但しAndroid5.0あたりからAndroidシステムWebviewが導入されているので

 Android5.0以降の端末を選択する方が無難です。

 インストール後、環境設定をする必要もありません。

 端末のルート化も不要です。

d.Androidデバイス等が安価

 安いタブレットであれば1万円程度で新品が買えます中古スマホであれば

 更に安価です。

 またプログラムを作るのでキーボードもあった方がいいと思います

 キーボードも2~3千円程度で安価です。

 もちろんソフトウェアキーボードフリック入力など)でもプログラム

 作れます

 パソコンよりもはるか安価プログラミング教育が実現可能です。

e.子供Androidデバイスに慣れている

 iPhoneの登場以来現在の子供たちはタッチパネルAndroidデバイス

 慣れています

 通常のノートパソコンに比べ違和感は少ないと思います

 また教える大人側も日頃パソコンよりスマホを触る人は多いと思います

 教える側の負担も小さいのではないかと考えています

f.可搬性が高い

 ここで述べる可搬性とは別のデバイスで同じプログラムを動かす場合

 容易さの事です。

 BASIC!はインタープリタなのでソースファイルのみを別のデバイス

 SDカード経由等でコピーすれば基本的には動作します。

 仮にHTMLモード場合は併せてHTML,JS,CSSコピーするだけです。

 別のデバイスにはBASIC!さえインストールされていれば動きます

 BASIC!独自プラグイン拡張モジュールなどは特にありません。

05.BASIC!でプログラミング教育を行うデメリット

メリットだけでなくデメリットもあります。以下の通りです。 

a.性能上の問題

 BASIC!の実体Javaで出来ています。すなわちJavaよりは性能は悪い

 ことになります

 実際、大量の繰り返しや大量の文字列を扱うプログラムは性能が出ないので

 処理に時間がかかります

 Androidスマホタブレット自体パソコン演算能力には劣ります

 大量の実験データ演算するような教育には向いていません。

 但し、プログラミング教育には大きな障害にならないと思います

b.BASIC!自体の仕組みの問題

 BASIC!はプログラムを作るアプリである以上当然文法エラーを実行時に

 表示する仕組みになっています

 ただ一部エラーチェックが甘い部分もあり本来エラーとすべきところを

 そのまま実行する場合もあり想定外の結果となる可能性もあります

 次にエディタは単なるテキストエディタと同等の機能しかなく最近

 エディタにあるようなシンタクスハイライト入力補完といった機能

 ありません。

 ただ比較シンプルプログラムを作る教育では大きな影響は無いと

 考えています

c.一部機能に制約がある

 前述の通りHTMLモードではJSが動かせます。ただし制約があります

 JSローカルモードで実行されるという事です。

 非同期通信などを行おうする場合JSが実行時エラーになる可能性が

 あります

 またデータベース機能であるSQLiteへの操作についても文字型項目しか

 利用できない制約があります

 JSローカルモードのみなのは教育の事を考えると少し残念ですが

 それでも多くのフロントエンドJSは実行可能なので教育には

 使えるという理解でいます

d.参考となる文献がほぼない

 教育には教科書またはそれに準ずる書籍必要だと思います

 該当する書籍がないのが実情です。

 ただ1冊だけ日本語で書かれた電子書籍存在します。

 ■BASIC! ~ 分かりやすい教本で一から学べるコンピュータ言語 - AndroidSQUARE

 http://blog.livedoor.jp/an_square/archives/51887786.html

 BASIC!の文法自体は極めて簡単なのでどうにかなると思います

06.結論

上記の通り、メリット/デメリットを列挙してきました。

デメリットもあるものメリットの方が大きい印象です。

とくに教える側の負担が少ない点がメリットだと思います。 

 

2016-10-24

人生は短い

いわゆるプログラマをしているが、60歳で定年だとしてあと、今の年齢から数えて約30年しかない。60歳で定年するとしたら最後の数年は今ほどのパフォーマンスは出せないだろうし、自分の周囲を見る限り、新しいことができるのはギリギリ40代限界ではないかと思っている。つまりあ20しかない。

20年。自由に使える時間としては長いのか短いのか。自分は短いと感じた。

仕事プログラマをしているが、コンピューターサイエンス学位はない。

から外資系企業のjob boardに書いてある必須条件であるCS BSの項目を満たすことができない。これがずっと悔しかった。なぜもっと早くプログラミングに目覚めてCS学位を取らなかったのか。

CS学位を取ってマスターまで行っていれば、社会人になってからphpプログラミングを覚えて、以来ずっと仕事コードを書いてきた俺には見えない世界が見られたのではないか研究現場世界ITはどんな場所なのか。G社やM社やF社やT社で働くというのはどういうことなのか。それを見てみたかった。

仮にCS学位を取っていたとしても外資系企業プログラマとして転職できる可能性は高くはないと思うが、門前払いされているどうしようもない気持ちはぬぐえない。CS出身学生ならだれでも勉強する基本的データ構造アルゴリズムについてもその辺で売ってる本とネット知識による独学の経験しかないし、webアプリばかり作ってきたせいで知識は非常に偏っている。例えばコンパイラインタープリタについては全く分からない。

それが分かって何になる、お前の仕事はそのフレームワークに乗っかってひたすらWeb APIを書き続けることだ、という指摘はごもっともだが、それでも自分勉強してまだ見たことがない世界を見てみたいと願った。

から、周りに話したら多分笑われると思うけど来年とある大学院CS系の専攻を受けてみることにしようと決めた。

CSじゃないが学部卒なので受験資格はある。受験勉強として必死CS学部生が読んでそうな本を読んで、数学もしばらく触ってないので高校数学からやり直して、自分が院で研究したいテーマについても考えて、面接でどう自分を売り込めばよいか考えて(そもそも院の入試面接がどんな感じなのか全然知らんが)日々を過ごしている。

落ちるかもしれない。その時は今の職場でまた1年勉強貯金をしつつまた翌年受ければいい。

受かって無事卒業しても再就職先がないかもしれない。それでもいいと思った。今の職場で、何も変わらない平和毎日をのほほんと過ごして余生を過ごすよりかは、いっそ何もかもなくしてまたゼロからキャリアを積みなおした方がいい。その方が新しい景色も見えるのではないか

2016-06-19

Pythonに手が伸びない

Python、すっごく人気あるよね。最近機械学習とかブームだし、Tensorflowやってみたいし、Python始めたいなあと思ってるんだよ。

私、ずっと前からRubyをやってたから、Pythonになかなか手が伸びないんだよね。

どっちもインタープリタ型で、結構似てるところがあるから、もうRubyでいいやとか思っちゃって。

本当どうしたらいいんだろ。こういう文章見ると男の子はすぐに論理的な話をつらつらとするから面白いよね。ただただこの気持ち共感してほしいだけなのに。

2016-06-17

1.0から学ぶJava

タイトルを見て釣られクマーな皆さんこんにちは

ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。

今調べたらホッテントリメーカー2008年だそうで。どうりでねー。古臭いなーと思いましたよー。

「一から学ぶJava」ってのをね、1.0にするだけでこんなに素敵なタイトルになるんだから面白いですねー。

タイトルを思いついただけだったんですけど、思いついたらやっぱりちゃんと中身も書かないと行けないじゃないですか。やだー

面倒くさいんですけどね。ちょっと1.0から学んでみましょうか。

Java 1.0 1996年1月23日

Javaの1.0がリリースされたのは1996年1月23日ですね。発表されたのが1995年5月23日でJavaの誕生日といった場合にどちらを取るかで揉めることがあります。

かれこれ20年前なわけで、当時のパソコンというとハードウェアはCPU が Pentium 133MHz メモリ16M とかそんな感じだったかなあ。今どきの携帯電話の例としてiPhone 6sを挙げるとCPUが1.85GHz メモリ 2G ってんだから凄いですね。OSは1995年11月23日リリースされたWindows95とかそんな時代背景です。インターネットがようやく一般に普及し始めたところでしょうか。

今から思うと相当弱いハードウェアですけども、そろそろVM方式を採用しても良さそうな、そんな時代でした。インタープリタだと流石に遅い、でもC言語のようなコンパイル言語だと"Write once, run anywhere"とはいかない、という判断もあったのだろうと思います。Javaが純粋なオブジェクト指向言語ではなくintなどのプリミティブ型を持つというのは、当時のマシンスペックを考えた場合、ある程度妥当な判断だったと言えるでしょう。これが後々苦しくなってくるわけなのですが。

Javaを作った会社はSun Microsystems(サン・マイクロシステムズ)というアメリカの会社で、2010年1月27日オラクルにより吸収合併され今はありません。SolarisというOSとSPARCプロセッサでUNIXサーバーの販売で90年代後半までは一人勝ちのような状況だったと聞きます。当時にすでに「ネットワークこそがコンピュータ」(The Network is the Computer)というモットーを掲げてたんだからおかしい。1996年リリースのJavaが標準でネットワーク機能を備えていたのもこのあたりの思想から来ているのかもしれませんね。

当時のプログラミング言語としてC++が挙げられますが、C++でのプログラマへの負担といいますか、ヒューマンエラーの起きやすさといいますか、その辺を改善する目的で開発されたのがJavaだったわけです。

1996年の時点にこんな言語が登場したのですから革新的でした。

いろんな企業がJavaに賛同します。その中にはMicrosoftもありました。この時期、Microsoftは次期のWindows開発用のプラットフォームにJavaを据えようと考えていました。その後、袂を分かつことになるのですが……。

プログラム言語として構文などを見ると、C++を強く意識した構文なのは間違いなく、しかしポインタ演算を廃してポインタを機能を限定した「参照」に置き換えるなど簡素化が多く見られます。C++からはいろんな機能が削られています。関数ポインタ、構造体、演算子オーバーロードテンプレート((テンプレートについては実装が間に合わなかったという話を聞きます))などなど。そのためC++の劣化であるように揶揄する人もいますが、こうしたものを捨てて言語仕様を比較的小さくシンプルに抑えた点は評価に値すると思います。しかし、今でもこうした削減された機能を愛する人からはJavaを腐す要素として挙げられてしまうのでした。

Java 1.1 1997年2月19日

Wikipediaからピックアップすると1.1での大きな機能追加は

といったところです。当初よりJavaの内部文字コードUnicodeで文字を表すchar型は16bitで設計されていました。Unicodeは当時それほど普及しておらず、Unicode対応のテキストエディタさえ少なかったと記憶しています。時代を先取りしていると言えますが、大きな誤算はUnicodeが当初16bitのコードポイントに世界のあらゆる文字を格納しようとしていたことで、漢字圏の我々からすると16bit=65,536程度の空間に文字が全部入るわけないだろ!というものだったが故に早々に破綻し、Unicodeは21bitのコードポイントに拡張されることになるのです。これはまた後の話。

なんにせよ、日本語が対応されたのは1.1からで、日本でのJavaの採用が始まったのはこの頃からと言えましょう。

当時のJavaのGUIはAWTというものでしたが、これを用いたGUIの開発は当時は結構行われていたイメージですね。Visual BASIC でGUIを作るプロダクトも結構あったと思います。GUIのためのオブジェクト指向言語としてJavaが使われていたイメージがありますね。JavaBeansもそのための仕様でした。件のsetter/getterの話題に繋がっていくのですが。

JDBCはJavaとデータベースをつなぐインターフェースです。RMIではあるJava VMから別のJava VMにオブジェクトを送って実行する、といったことができます。こうした機能が用意されたことで、ソフトウェアフロントとしてのGUI、裏方の実装のためのネットワーク機能、データベース機能、さらにはソフトウェアを配布するためのJava Appletという布陣でJavaでのソフトウェア開発が加速していた時代といえます。

Microsoft Visual J++ もこの時代ですよ。

Java 1.1以降のバージョンのものは互換性確認のためにOracle Java Archiveからダウンロードすることができ、今でも入手することができます。もちろん、Java7ですら2015年4月にEOL(End of Life,サポート終了)となっているので、通常利用するのはJava8としてください(本稿執筆時点)。

当時のドキュメントを見るのも一興です。現在と比べると標準APIがかなり小さい。なお、当時のjavadocは今とはデザインが大きく異なります。

  • java.applet
  • java.awt
  • java.awt.datatransfer
  • java.awt.event
  • java.awt.image
  • java.beans
  • java.io
  • java.lang
  • java.lang.reflect
  • java.math
  • java.net
  • java.rmi
  • java.rmi.dgc
  • java.rmi.registry
  • java.rmi.server
  • java.security
  • java.security.acl
  • java.security.interfaces
  • java.sql
  • java.text
  • java.util
  • java.util.zip

この時代であれば、全パッケージを舐めて標準APIを学ぶこともそう難しくはありませんでした。この時代から触っている人間は新バージョンが出るたびに増えるAPIを順に学んでいけたのです。しかし、現代にJavaを学ぶ場合、どのバージョンでは何があって……というのをいちいち学ぶ必要はほぼありません。Java5以前は一緒くたでいいと思いますし、一部のAPIで歴史的経緯があってねーというのを知っていればおそらく十分ではないでしょうか。

Java 1.2 1998年12月8日

strictfpキーワード浮動小数点演算をやる人は覚えておきましょう。JavaはパフォーマンスのためにCPUの浮動小数点演算を扱うことが許されており、そのため実行するCPUによって精度が異なることがあるんですね。まあ今時のCPUだと大丈夫だとは思うんですが。

リフレクション機能ではJavaのクラスを抽象的に扱うことができます。設定ファイルに書かれたクラス名のclassロードして実行する……みたいなことができるんですね。フレームワーク的なものを作る場合には多用することになります。

1.2からは新しいGUIのSwingが採用されました。AWTがOSごとのGUIパーツを用いていたためデザインに違いがあったのに対し、Swingでは統一的なルック・アンド・フィールが用いられるようになりました。まぁ今ならJavaFXを使うのが良いと思います。

初期のJavaはやはりVM方式の実行速度の遅さが指摘されていました。実行時の構文解析を伴わないだけインタープリタよりは早いものの、実行バイナリを作るC/C++よりは遅い、そうした評価です。ここではサン・マイクロシステムズのVMにJIT(ジャストインタイムコンパイラ)が乗ったことが挙げられていますが、JIT自体は別の会社が先駆けて開発していたことは記しておきたいと思います。

JITコンパイラは実行時にJavaのバイトコードを環境のネイティブコードコンパイルして動かす技術です。この後、JITコンパイラ、動的再コンパイル技術、世代別ガベージコレクションを備えたHotspotといった様にJavaVMは進化していきます。現代では実行時の最適化が進み、大きなスケールで見た場合、Javaの実行速度はC/C++での実装と比べてそれほど遅れるものではありません。遅くても倍の時間は掛からない程度といったところでしょうか。

あとは特記すべきはコレクションフレームワークです。皆が多用しているであろうjava.util.Listやjava.util.Mapといったライブラリが整備されたのがこの時なのです。それ以前はjava.util.Vectorやjava.util.Hachtableというクラスが可変長配列の機能を一手に担っていました。今ではVectorやHashtableは使うべきではありません。

Microsoft 離反

Java の開発はSun Microsystems が主導していたけども、すべてがSunのものだったというわけでもなく。Javaには多くの会社が出資していてその中のひとつMicrosoftだったわけですね。

Microsoft の Visual J++ では delegate とか独自機能拡張もありましたけど、裁判で問題になったのは J++ でコンパイルしたclassファイルMicrosoftのVMでしか動かないという部分ですね(他社製のVMで動くclassファイルを作ることもできる)。classファイルがどこのVMでも動くの大事だろ、"Write once, run anywhere"だろ、お前何してくれてんの!と喧嘩になったわけです。当時のMicrosoftブラウザまわりでも独自拡張がやりたい放題、標準規格?なにそれ美味しいの?みたいなスタンスをあちこちで見せていたものです。

結局、この事件でMicrosoftのJavaはバージョン1.1相当でストップ。好き勝手にやれないなら独自に言語作るわーとばかりに.NET フレームワークと C# といった方向に舵を取ります。

JavaがPC上でのUI開発の主力になろうとした勢いはここで潰えます。

Java EE

Java SE とは別にこの時代に Java EEリリースされていることは特記しておきたいですね。これ以後、それまでのCGIに取って代わって、JavaはWebサービスの開発のプラットフォームとして多用されるようになります。

2000年あたりからはJavaはGUI開発というよりは、Webサービスの開発が主流という流れになっていきます。インターネットサービスが非常に発達していった時代、背後ではとてつもない量のJavaのプログラムが支えていたわけです。ただまあ、こうした産業利用は一般的ユーザーの目にはあまり入らないわけです。一般人からすればJavaといえばJava Appletみたいなイメージはずっと残っていたでしょうが、実体としてはJavaといえばServletという時代になっていたわけです。

企業で用いられる社内システムにもServletは多く採用されました。

理由はいろいろ挙げれると思うのですが

というのが大きな理由だろうと思います。JSPというテンプレートエンジンを用いてHTMLを整形してWebページを作り出す、というアーキテクチャある意味では便利で簡単でした。

もっともHTMLの表現力に足を引きずられるため、GUIの機能性という点では後退したわけなのですが。それでもメリットが大きいと判断されたのでしょう。というか、まともにGUIを組めるプログラマがほとんどいないから、GUIのシステム開発がなかなか成功しないってのもあったんでしょうけどね。

iアプリ Javaアプリ EZアプリ

2000年あたりというと携帯電話の普及も取り上げなければなりません。現代のスマホガラケーに比べれば非常に機能は貧弱で、まさに携帯「電話」でした。要するに電話とメールぐらいしかできなかったんですね。

そこにdocomoiアプリJフォン(ボーダフォンを経て現ソフトバンク)のJavaアプリ、auのEZアプリという携帯電話上でちょっとしたアプリが動くよ!というのが乗るようになってきたんです。これがJavaを組込み用途にコンパクトにしたJava MEというものが土台となっていて(正確にはiアプリちょっと違う)Servletと並ぶJava言語の大きなもうひとつの領域となっていました。

iアプリは当初は容量が10k byteまでといった制約があり、容量制限が非常に厳しかったのですが、新機種が出るたびに容量は緩和されていきました。

docomoiアプリ含めiモードによって一世を風靡します。こうした土台を作ると、その上で商売をしたい人がたくさんやってきて、勝手にコンテンツを作ってくれる。docomoはそれらから手数料を取るので労せずして大金を稼げるというわけです。賭場の胴元というわけです。

この賭場が、将来にAppleiPhone, GoogleAndroidに荒らされることになります。docomoがなかなかiPhoneを出さなかったのもiモードという自前の賭場を失うことを良しとしなかったためです。金づるを失ったdocomoSamsungと組んで独自の携帯向けOSであるTizenの開発に乗り出します。そんなTizenですが鳴かず飛ばず。噂ではインドあたりではリリースされたとか、なんとか。

RIA時代

話を2001年に戻しましょう。

Microsoft離反でGUIのプラットフォームとしてのJavaというものは存在感を弱めていました。この分野の復権に寄与したのはJava 1.4 (2002年2月6日)で導入されたJava Web Startです。

Java Appletブラウザ埋め込みで動作したのに対し、Java Web Startではブラウザから起動しつつも独立したアプリとして起動するのです。

Webシステムが企業の社内システムに採用された話は先に述べたとおりですが、やはりWebシステムのGUIというのはHTMLに引きずられて貧弱だったんですね。

端的に言えば入力値が数字かどうか?みたいなチェックがなかなか難しい。HTML上でJavaScriptでやるわけなんですが、なかなか気持よく入力できるような感じにはならなかったんですね。

また、Ajaxによるブラウザのページ遷移を伴わない通信というのが出てきたのも2005年ぐらいなので、入力値に対してサーバ問い合わせするようなことはできなかった。当時だと一旦画面遷移させないとできなかったわけです。

こうした事情から、クライアントサイド、要するにPC側でもっとリッチなUIが使いたい!という要望があったわけです。Webシステム使いにくい!という不満の噴出と言ってもいい。そこで出てきたのがRIA (Rich Internet Applications)というわけです。

Javaは1.0時代のAppletからそうですが、ネットワークを介して別のPCにプログラムを送り込み、そこで動作させるという能力を持っていました。それこそまさにRIAに求められる機能性だったわけですね。

RIAの代表とされるのは

あたりです。三つ巴の戦い、どこに軍配が上がるのか!?と注目されましたが、勝利したのはHTML / JavaScriptでした。

Google MAP で注目を浴びたAjax技術、それまでブラウザでは不可能と思われていた高級なGUIをHTML / JavaScriptで実現させました。もうやめて欲しいですよね。せっかく脱ブラウザの流れが来たと思ったのにまたWebシステムに逆戻りですよ。

RIAが失速した理由として考慮して置かなければいけないのはスマートフォンの台頭です。RIAでは端末を選ばずどこでも同じアプリが動かせる点がポイントひとつでしたが、スマートフォンではそうは行かない。"Write once, run anywhere"を破壊したのはスマートフォンだったというわけです。

しかし、先日インストールなしでアプリを実行するAndroid Instant Appsが発表されたりしまして、結局RIAの思想といいますか、要求というのは今でも息づいているのだなと思った次第です。

Java 5 (2004年9月30日)

1.3 / 1.4 では機能追加はあっても言語構文が大きく変わることはありませんでした。大きく変わったのはJava 5です。この時からバージョニングが変わって1.5ではなく5と表記されるようになりました。

Java5の特徴はなんといってもジェネリクス。それまでjava.util.Listにデータを出し入れするのにはキャストが必須だったわけですが、ようやくキャストから開放され型の安全度がぐっと高まりました。その他に以下のような変更があります。

言語としては随分変わっったわけですが、もうかれこれ10年以上前のことですからこれらの機能が「Java5から導入された」という知識は今となってはあまり必要とされません。これらの機能が使えないJava 1.4で開発をする事案が殆ど無いからです。0ではないのが悲しいところではありますが。

その後

Java 6 (2006年12月11日)がリリースされた後、Java 7 (2011年7月28日) が出るまでJavaは停滞してしまいます。その間にSun Microsystemsという会社がなくなってしまったためです。

Sun Microsystems の経営状況が悪化しており、ついに身売りをすることになりました。身売り先はIBMともGoogleとも噂されましたが結局2010年1月27日オラクル吸収合併されました。

Javaの停滞中にはJava VM上で動く非Java言語も台頭してきました。Scalaなどですね。

やや戻って2007年Androidが発表されます。Androidの開発言語にはJavaが採用されていますが、実行環境はJava VMではなく、ライセンス的な事情でJava(TM)は名乗らない微妙な位置関係にあります。

Java 5 以降で大きく言語仕様に手が入るのは Java 8 (2014年3月18日)です。並列処理を行うためのStream APIと、そのために簡易に関数を定義するためのラムダ式が導入された点が大きいですね。日付APIも刷新されました。

このように、Javaは1.1の黄金時代から今に至るまで利用ジャンルを転戦しながら産業の土台となって支えてきた歴史があります。ジャンルの趨勢により浮き沈みもあります。今後についても決して楽観視はできないでしょう。Javaを学ぶことはプログラミングを学ぶステップとしては意義はあると思いますが、Javaを学べばゴールというわけではありません。プログラム言語次世代へと移りつつあります。業界動向には注視していきましょう。

2016-06-05

あなた研究社会にどういった貢献をするのですか?」と訊かれた

大学で学んだ学問をそのまま社会の役に立てることを要求する人って、本当にいるんだな。

今日就活中に面接からあなた研究社会にどういった貢献をするのですか?」なんて訊かれてビックリしちゃったよ。

他にも、「教育投資だ」とか、「文学部社会の役に立たないか廃止しろ」とか、そんなことを声高に叫んでる人もたくさんいるらしいね

いやー、まいったなあ。

分野にもよるんだろうけど、

研究者はたいてい、「自分研究がどのように社会の役に立つか」なんてことは、微塵も考えないと思うんよね。

自分研究がどのように学問の役に立つか」なら考えるけど。

学問を発展させる役割の人と、学問社会の役に立てる役割の人は、それぞれ別に必要

学問を発展させようと必死研究してきた一学生が、「自分学問がどのように社会の役に立つか」ということを把握していることはほとんどないだろうし、

また把握する必要もない。

ましてや、今回の面接場合、俺は研究を諦めて社会に出ようとしている。

そんな俺に、研究してきた内容をそのまま社会の役に立てることを望んでどうするんだ。自分研究社会の役に立つことを確信してたら大学に残ってずっと研究してるわ。

確かに、すぐに社会の役に立つことがなさそうな研究をしている人間採用するのを躊躇う気持ちはわかる。社会貢献意識を持って欲しいというのもわかる。

けど、今この研究、この学問に足りないのは学問社会の役に立てる方法を考えるインタープリターであって、

研究者個々人の社会貢献意識ではないと思うんだよなあ。

研究者にならないなら、その上大学で行った研究社会の役に立たないなら、高卒で働いたほうがマシじゃないか!」と憤る人がいるのもわかる。

けれど、研究自体を役に立てる方法はわからなくても、研究をするプロセスから学んだことはたくさんある。

それを活かしていくことで、大学研究者の夢を見させてもらうためにかかった費用分は社会に貢献できるのではないか

今までも、大卒労働者はそうして社会に貢献してきたのではないか

要するに何がいいたいかって、「学問社会の役に立てる方法研究者求めないでほしい」ってことです。

その学問社会の役に立てる方法考える人間がいないことが問題なんだけど、とにかくこの役割研究者に求めるのはどうなのかという話。

乱文失礼しました。

2013-02-27

型が無い事の利点とやらが全く的を射てない

変数に型がないということの利点について考える

http://d.hatena.ne.jp/perlcodesample/touch/20130227/1361928810

が大変お粗末な内容だったので、反論記事を書きます

型推論ソースコードコンパイル時間を遅くしてしまますソースコードが大きくなってきた場合に、すばやく書いて、すばやく実行結果をもらうことができなくなります

今時のパソコンならコンパイル時間なんて大したことない。

大規模開発環境コンパイル時間よりリンク時間の方が問題になりやすいが、それは別に型の話とは関係ない。

あと、インタープリタ最近は実行時にJITコンパイラが走る。

実行時間に影響がなく、開発者の待ち時間で済む方が実はよいのでは?

統合開発環境での、メソッド自動補完の機能の実装が少し難しくなります

みんなが統合開発環境をつくるとでも?

そもそも型が不定なら補完することすらできないので、

比較対象として相応しくない。

変数に型がないとソースコードの変更に強くなります。たとえば右辺の返す型に変更があったとしても、受け取る側のソースコードを変更する必要はありません。

これは逆に危ない。

実行するまで意図したインスタンスが返ってこなくなった事実に気づかないから。

コンパイル時に指摘してくれる方が安全

変数の型を持つ言語は、型が異なるのだが、処理としては同一の処理を行いたい場合には、オーバーロードという機能を使う必要があります変数の型がなければ、オーバーロード機能必要ではなく、ただ単にif文で分岐すればよいだけなのでとても楽です。

インターフェイスというもの勉強してください。

CならVTable。Javaならinstanceofなど同等の事はできます

というか、これ。型を意識しまくったコードじゃないですか???

C++テンプレートのような複雑でデバッグしにくい機能を使ったりしなければなりません。

とあるインスタンスしか入ってないつもりのリスト

実は全然ちがうものが混ざってた!なんて事故コンパイラによって止められる分、デバッグする必要すら無いんですけどね。

変数に型がないとどのような型の値が代入されているかからないという批判があるかと思います。可読性の問題で

変数に何が入ってるかわからないよりも、

インスタンスが何を持ってるのかわからない方が可読性に問題がある。

2010-04-03

あーくそ2chまた書き込めねぇ

規制されてた。規制中でも書ける板で代行スレ使おうと思ったらBBQ焼かれてた。BBQ解除してもらおうと思ったら規制されてて書けない。なにこれ。

もういい。ここでレスする。どうせきづかれねーだろうが。

http://pc12.2ch.net/test/read.cgi/tech/1264745386/

俺が>>936なわけだが、単に俺はQtでのPythonC++の相互利用を知りたかっただけなのだが、明後日の方向にレスが伸びてて残念だ。

コンパイル速度以外の観点からも、そうできたらうれしいと思ってるんだけど、コンパイルしなくていいってだけで十分じゃないの。

>>952

Pythonでも他の言語でも、速度面でシビアなところだけをC/C++で書くというのは一般的に行われている。

それを無視して最初から全部C++で、とか言ってる方がよほど偏愛だと思うけどねぇ。

| インタープリタ言語にはインタープリタ言語の得意分野がある。

何でもとりあえず手軽に書いてみて、後で必要ならC/C++移植ってのも、インタープリタ言語の得意分野だよ。

実行の遅さも、C++より重いことは確かだが、そうはいっても特に重い処理の入ってない部品だと人が使ってて分かるほどの違いなんてないよ。

そこまで速度にシビアな局面ならQt使うってのが間違ってるんじゃない?例えばQtのウリの1つのシグナルとスロット機能は公式ドキュメントには、

普通に呼び出すよりも遅い。とはいえ普通の用途では気にならないから有益って書いてあるよ。これはインタプリタ言語使いがよくする言い訳と同じものだね。

http://doc.trolltech.com/4.6/signalsandslots.html

| だいたいあんたC++や本格的なRADツールの体験はどれだけあるの?

| いままで書いた最も大きなプログラムってどんなもの?

これはあまりにも愚問。それを必要としてない人にそれを要求してどうする。

2008-01-30

Re: コンパイラとインタープリタは同類

PHPに噛み付くノリで噛み付いてみる。

CGI用途限定で使用されるPHP/Perl/Ruby

システムperl依存してしまったFreeBSDは、それを解消するために四苦八苦した歴史があるんだぜ。

最近のLLたちは、実際には中間コードコンパイルしてるから、ランタイムコンパイラとか言ったりするんだぜ。

結局コンパイラインタープリタの境界があいまいになった部分があるから、スクリプト言語とか言い出したんだぜ。たぶん。

コンパイラインタープリタは同類

HTMLプログラミング言語であると主張して止まない、私、増田は言うのです。

HTMLWEBブラウザと呼ばれる仮想マシン上でデータを表現することに特化されたスクリプト言語です。

そして、CGI用途限定で使用されるPHP/Perl/Rubyは一般にスクリプトなどと呼ばれていますが、専用プログラム(インタープリタ)を介してHTMLを生成することから、コンパイル言語と呼ぶことができます。

ログイン ユーザー登録
ようこそ ゲスト さん