はてなキーワード: 処理系とは
http://kenokabe-techwriting.blogspot.jp/2016/05/frp_18.html
残りは全部、使ってるライブラリのソースコードからfrequencyやリフレッシュレートやら、timerの解像度っぽいことをアピールしてるみたいですが、
タイマーの解像度設定しながらマウスイベントを同時にとってなんかやることと、
状態f(0),f(1),f(2),…を得る、という本来のFRPの基本原理
ってまったく違うでしょ?
誤魔化すなと。
状態f(0),f(1),f(2),…を得る
というのはどこだ?とけなされているのだけど、
イベントごとに写像されているのだから、状態f(t)だ、とかいうのなら、
岡部氏の言う時間軸をストリームにする、という話と関係ないのに、
ただ「実際のシステム時刻t=0,1,2,…」って言いたかっただけちゃうんか?ってのは見るものすべてにバレてる誤魔化しだ、って意味でしょ?
http://anond.hatelabo.jp/20160517023637
それを処理系が実際のシステム時刻t=0,1,2,…に適用して
状態f(0),f(1),f(2),…を得る、という本来のFRPの基本原理
http://anond.hatelabo.jp/20160517023637
それを処理系が実際のシステム時刻t=0,1,2,…に適用して
状態f(0),f(1),f(2),…を得る、という本来のFRPの基本原理
>初期値で0与えて再帰の引数でカウント回したりとか、普通にあると思うけど
>プログラミング原則的な意味だとコードの中に現在時刻って変数が入ってくる時点でなんかおかしいとおもうんやが。
<
「よくわからん」癖に、いっぱしの批判してるつもりになってんじゃねーぞボンクラというのが一つの指摘なんで。
>プログラミング原則的な意味だとコードの中に現在時刻って変数が入ってくる時点でなんかおかしいとおもうんやが。
C#にしろ、Javaにしろ、JavaScriptにしろCにしろ、おまえは
「現在時刻」を得るために、いったいぜんたいどういう「変数」を使ってんのかねー?W
処理系は次の要素から成る: 南山まさかずプログラム、インストラクションポインタ(プログラム中のある文字を指す)、少なくとも30000個の要素を持つバイトの配列(各要素はゼロで初期化される)、データポインタ(前述の配列のどれかの要素を指す。最も左の要素を指すよう初期化される)、入力と出力の2つのバイトストリーム。
南山まさかずプログラムは、以下の8個の実行可能な命令から成る(他の文字は無視され、読み飛ばされる)。
Hello, World!を出力するコードは以下のとおりである。
ままままままままま愛南まままままままま南ままままままままままま南ままままま山山山さ死南か南ままかまままままままかかまままか南さか ささささささささささささか山ままままままままかささささささささかまままかささささささかささささささささか南ま
「不正な入力に対して脆弱性を発生させないようセキュリティ対策としてバリデーションを行う」。アホか。プログラマならセキュリティ対策とか気にするな。いや、気にするなというのは言い過ぎだけれど、ほとんどの場合においてあなたの書くコードはセキュリティ対策の必要性はない。
攻撃者の細工した入力によってSQL/HTML/JavaScriptが壊れるとかバッファオーバーフローが発生するとか、そういった脆弱性と呼ばれるほとんどのものはただのバグだ。セキュリティ対策っていうのはコードとは切り離された領域で行うDEPだったりASLRだったりX-Frame-OptionsだったりCSPだったりiframe sandboxだったり、そういうものがセキュリティ対策だ。コード上で書くのは「アプリケーションとして正しく動作するための処理」だけだ。
もちろん例外もあるかもしれないけど、それはあくまでも例外だ。日常的に書くコード - 長さやフォーマット、範囲のチェックだったり、次の処理系に適したエスケープを施したり - は全てセキュリティ対策のためのコードではない。アプリケーションが正しく動くための処理だ。それができていないのはただのバグだ。
にも関わらず「セキュリティ対策」のようにさも特別なものであるかのような言葉でポジショントークを繰り返すような姿勢は好ましくない。
もし、「セキュリティ対策という視点で入力バリデーションをしていない」ということに対して不安を覚える開発者がいるのであれば、セキュリティ対策など考えなくていいので今すぐテストを書け。
C FAQに書いてあるからだろうけど、あれ20年以上前の文章で、いまどき下位ビットだから極端に周期が短い処理系とかないと思うんだけどね。
初心者が使う用途ならたいがい rand() % N で十分なはず。
「(int)((double)rand() / RAND_MAX * N)」 とか 「rand() >> 16」 とかバグってたりすることがあって、素直に rand() % N 使えよって感じになる。
むかしカルドセプトってゲームが乱数ルーチンバグって、偶数と奇数が交互にでるって現象があってネット上でやっぱり「こう書け」みたいに乱数ルーチン書いてる人がいたけど、そういう人たちもバグってるの多かったね。
理由くらい書けよ糞が
他のWindowsプログラムがやっていて、多くの方が「できて当然」だと思っていることは、7割くらいであれば.NET(フレームワーク名)を叩けばできます。
.NET対応言語はC#、VB.NET、J#、F#、JScript.NET、C++/CLIなどがあり、実際の開発においてはこれらの中から自分に合った言語を選ぶことになります。
個人的な感想ですが、この中で最もゆとり仕様なのはC#です。StackOverflowなどのノウハウが一番蓄積されているのもC#だと思います。
「頻繁なアップデートを追跡しないといけない」「Visual Studioが必要」という問題はありますが、がんばってください
なお、.NETはメモリを食うので、数値計算みたいなことをしたいのであればC++が現状一番まともだと思います。がんばってください
昔のMacのプログラムのGUIはCarbonというライブラリで作っていました。今はCocoaというライブラリで作っています。
残念なことに、どちらも言語はObjective-Cです。がんばってください
ブラウザアプリは、ユーザのWebブラウザ(Chrome、Firefox、Opera、Safariなど)上で動作するシステムと、遠隔のサーバ上で動作するシステムが連携して成立します。
従って、ブラウザアプリを作る言語は、サーバ用言語とクライアント用言語の2種類を考えなければなりません。めんどくさいですね。
ひとたびそのめんどくささを突破してしまえば、Webブラウザさえあればどこでも動くようになります。素晴らしいですね。
クライアント用の言語は、まぁ、JavaScriptしかないと思います。がんばってください
JavaScriptも(正直なところ)あまり褒められた言語ではないので、近頃ではもうちょっとまともな言語を作って、それをJavaScriptに変換する方法が取られたりします。CoffeeScript、TypeScript、Haxeとかですかね。がんばってください
JScriptとかいう、名前が紛らわしい上にゴミブラウザ上でしか動かないゴミ未満言語もありますけど、そんなもんで作っても私の環境では動かせませんので悪く思わないでください。
そもそも選択肢が全くありませんので仕方がないです。がんばってください
Xamarinがあるじゃないかって?まぁそういうのもあるかもしれませんね。がんばってください
私の勉強不足で、Java以外の選択肢は知らないです。Java以外にあるんですかね?
Perlは使い捨てスクリプトを作るのに適しています。CPANクライアントは昔から安定して動きません。だいぶオワコン化してます。がんばってください 私は鞍替えしました
PythonはPerlより見た目がすっきりしたPerlです。easy_install・pipはすごく安定していてびっくりします(Windows除く)。3系とかいう邪念は捨てて2系教の悟りを開きましょう。がんばってください
RubyはPerl(の処理系のソースコード)より(処理系のソースコードが)綺麗なPerlです。私の手元のUbuntuで「ruby」と入力すると「Command not found.」と返ってくることからも解るとおり、多くの*NIXではOS標準でインストールされておりません。昔のgemは何故あんなにすごい時間をかけてrdocを作っていたのでしょうか。日本人が作ったのでムラ意識の強い日本人の仲間が大勢います。他の国は知りません。がんばってください
これ以上言語を増やすのはやめましょう。バベルの塔で大勢の人間が不幸になったのに、それを人間が自ら引き起こしてどうするんですか。
言語処理系を作るのであれば、BNFという言語で文法を定義して、yacc・bisonというツールに食わせればひな形ができます。ぶら下がりelseとの格闘が待ってますが、がんばってください
1からOSを作った方もいますが、デバイスドライバの流用などを考えると、だいたいはLinuxやBSDのソースコードを改変するお仕事だと思います。
昔はCGIと言っていました。所詮は80番ポートでlistenするだけのプログラムであり、BSDソケットをlistenできるライブラリを有する言語であれば何でもいいのですが、いくつかの宗教があります。
PHPはバンドネオンと同じくらい習得が困難な言語なのに、宣伝の仕方を間違えたために「自分はできる」と勘違いしたプログラマが暴徒と化し、イスラム教と同じくらい不当に低く評価されている言語です。きちんと勉強して使う分には、悪くない選択肢だと思います。がんばってください
Javaは、Eclipse・Netbeansといった超重量級IDEを起動して、Java EEやSpringといった超重量級ライブラリに依存したwarを、Jboss・WebSphereなどの超重量級アプリケーションサーバ上で動作させるため、メモリが貧弱な環境ではIDEとサーバを同時に起動すらできません。サーバのメモリが潤沢であれば悪くない選択肢だと思います。がんばってください
C#は、選択肢が全くないことを除けば、状況はJavaとあまり変わりません。Microsoftがお好きな方、何かの間違いでWindowsサーバを使わざるを得ない方であれば、悪くない選択肢だと思います。がんばってください
ドットインストールなりrailsのチュートリアルなり、golangなりやって見るんだ。
そうやってブートストラップしていくとどう情報を掴んでいけば良いか分かるようになってくる。
とりあえず学部3年なら簡単なTODOリスト管理アプリを作れるぐらいでバイトも普通に見つかるだろう。
それが難しければ、パソコンのサポートなら出来るだろう。なんでも良いからやらせて貰え。
数学は最低、離散数学でブール代数はきちんと練習すること。あと集合。
ハード系だと
の辺りを意識的に取り組んで欲しい。
その他は、
あたりを読んで、分からないところを先生や詳しい同級生に聞く。
あと、5000万行ぐらいのテキストファイルで、マージソートをUNIXのコマンドでやってみるとかお勧め。
ただし、そうやっていく中で、もし「楽しい」と思えない時間が3ヶ月〜半年なり続くようであれば、
適性を求めて (例えば) 経済学部などに行くが良かろう。
同僚の方はロードバランサタイプではなく、処理を分散するタイプか
思っているんじゃないでしょうか?
ngnixやsquidとかを組んで、代理で応答してくれるサーバを
複数用意するような考え方の負荷分散構成で元サーバのファイルを
画像だけでも数万点で何十GBもあるような場合は手入れが簡単で結構効きます。
特別手当が必要な外向け高負荷webサイトの場合は、知識の範囲と、調整にかかる
そこまでやるのは100件に1件くらいで、やり方も多岐にわたります。
実績も豊富で、推奨設定などが明確なためロードバランサを用いた方が
スタートアップが早くなります。同時接続数250くらいがしきい値です。
ロードバランサのキャパシティ(主にネットワーク帯域がボトルネック)を
超えてしまう場合も多く、処理系や画像データなどの分散配置もしなければ
ならない事もあります。
そうかと思えば、ハイスペック機の2重化で十分な現場も多いですし、
分業していて畑違いでやってきたのかもしれません。
通常インフラ屋さんが集中的に取り組むのでプログラマ系の人は知らなくても問題ないかと。
むしろ知らないならその方が都合がいいことも。専門的な実績が蓄積されている中、下手に
動かれると壊れたりします。失敗すると全面的に影響してしまうリスクの大きな部分なので、
最近はAWSなどのサービスも充実してきていますし、ちょうど手分けが出来る分岐点でもあるので
コードを書いて動くものを作る系の人にまで求めない方がいい知識かも知れません。
アップデートサイクルが短く覚えた頃には陳腐化してしまうこともしばしば
負荷分散のパターンは流行り廃りが激しく最新事情は随時調べ直しが必要です。
飲みにいくような仲ならば、不満を抱えるよりも、ここの場合は、
こうやって負荷分散してるなど擦り合わせしておくといいかもしれませんね。
そこまでカバーできる人になってほしければ、調査を依頼する形で知識を得てもらう
と言う手もあります。
知っててもいいけれど手は出せない事も多いです。西海岸までの光ケーブルの接続が
どうなっているかまで知らなくてもできる仕事はたくさんあります。
ためになるってこともありますし、自分と同等であればわざわざ群れる必要も無いという
意見もあります。個人的にはヒアリングしてコードを書く人の場合、サーバ周りは
分からなくてもいいと思っています。#それが得意な人が結構見つかるし手分けが出来る
50人いるクラスだったら50人とも活かせるやり方を模索するのも悪くないアプローチかと思います。
これはあの人が得意だから深く突っ込まなくていいよなどの力加減とか
餅は餅屋に任せて踏みとどまろうみたいな感覚も意識した方が不要な処理をスキップできます。
似たような話だと、ビデオを快適にハンドリングしようとした場合のネットワーク構成があります。
出来る人がいるけど、みんな知っていなければいけない話ではない 手分けして取り組めばインターフェイスは
ここにファイルをアップロードすればうまくいく というところまで簡略化できる など
5人くらいで専門的に取り組めば、残りの45人は特に知識を習得する事なく、別の事に取り組み
一段上を目指せるようなケースです。みんな同等の技術やスキルが必要かというと、そうでもない
ブログの仕組みがあるから記事に専念できるというのも、言われていないけれど、
分業、協力関係みたいなものです。ブログシステム(箱)を作った人と作文した人(本)のコラボですね。
みんなで箱を作るより、5人で箱を作って残り45人で記事を書いた方がいい結果が出そうです。
分業するのも簡単で、箱作るから記事書いてというだけで済みます。
個人の能力にとやかく不満を持つのは結構疲れてしまうので、集団のうち誰も分からないというのは
避けようと中間目標を持っておくと気が楽になるかもしれません。得意な人を見つけておくなど
一部スーパースターがいますが、契約に比べると個人の能力差はそんなに影響しないような気もします。。。
賛否両論あるかと思いますが、人は一定数いて減らないものだから、うまくやろうくらいに思っていた方が気が楽ですよ。
気を病むようならば、組織から査定しろと言われていない限りは人の能力の評価はしない方がいいかもしれません。
やりたいし、できそうだけど、契約上できない事(予算が足りなかったり)やらなくてよいこと
あとほとんどのシステムは、変数がなんだか分からない人をモデルとしてチューニングされていきます。
システムものを使用するユーザにはそういう人の方が多いんです。作った人の高度なテクニックや技術よりも
例えば新しいプログラミングを習得するとき、普通のプログラマは基本的な構文さえ習得すればまともに仕事をし始めて、すぐに構文に馴染んで標準的な作業は出来るようになるが、スーパープログラマは仕様を読んで言語の思想を汲み取って困ったことがあれば処理系のソースを読んで…とやっていて、それでどんどん進化する。ロジックを実装するときにも、ササッと書けば済むものを操作対象のデータはどういう構造を持っているかを分析して抽象化しようとする、そうして進化する。
でも、進化にはコストがかかる。単に何も考えず知ってることを使ってすぐやらなければならない問題を解決するほうがよほど速い。もし能力が極めて高い人であれば、こうした学習コストは能力の高さで相殺するか、あるいは学習にかかる時間を短縮することが出来るため、普通の人以上のパフォーマンスを発揮する人間として特に問題とされない。しかし能力が足りないか、周囲の人の能力も極めて高いかすれば、仕事が遅い人と思われてしまう。
このやり方、事務処理系を集めたいなら有りかもね。
でも、事務処理させるなら、わざわざ社員でとらなくてもパートで働いてくれる優秀な人沢山いるよ。例えば高学歴主婦とか。月10数万でノーマル社員の10倍の事務処理能力があったりする。
思考系、リーダー系、ガッツ系、お調子者系、なごみ系みたいに人材のバリエーションを広く取りたいなら、このやり方だけだとダメだね。
っていうか、人事やってるならわかると思うけど、事務処理能力の高いやつらばかり集めたっていろいろ回らないでしょ。
いかに人をバランスよく集めるかってところだよね。まあ、俺は面倒だから第一印象8割+その他(学歴とか履歴書の中身)で決めちゃうけど。
いわゆる「LL」ではないけど、Scalaを挙げておきたい。希望の要件はおおむね満たしてると思うけど、以下注釈。
val users = service.getUsers // 1 val result = users.map { users => users.filter { u => u.name.head == 'T' // 2 }}.flatMap { users => Future.traverse(users) { user => db.write(user.id, user.name) // 3 }} result.onSuccess { case _ => println("Success!") // 4 } // '=>'がうまく書けなかったので全角になってる。
普段Perlを書いているんだけど、言語機能として欲しい機能がライブラリ任せだったりしていろいろしんどい。
何かいいプログラミング言語はないかなーと思っているんだけど、なかなか自分の好みとピタリとくるものがない。まぁ好みにピタリとくるものなんかプログラミング言語に限らずないんだろうけど。
なので夢想してたのを垂れ流してみる。最近OOPディスのエントリとかあったので話題作りになれば。
Web系のエンジニアなのでWebサービス作ることが前提で、範囲広げすぎるとまとまらないので今回はLLを想定してる。
だいたい PHP, Perl, Python, Ruby, JavaScript あたりをイメージしながら、さらにこんな機能があればいいなーと思って書いたよ。