新しいものを表示
orange さんがブースト

プログラミング言語を知ってるだけでは何一つプログラムなんて書けないわけで.

数学に苦手意識持っている初学者が,数学要らないに希望を持ってプログラミング言語**だけ**を学んでもそのあとどこにも出て行けなくなっちゃうじゃない.

スレッドを表示
orange さんがブースト

初学者はそこが分からないので安易に「数学は要らないよ!簡単だよ!」みたいに呼び込むのは良くないと思うんです.

例えば、数学理解してても機械学習に関する知識も学ばなければ機械学習は使えないわけだし、数学を理解してても音の性質を理解してなければ音声関連のプログラミングも出来ないわけで、追加で知識が必要な事には変わり無いかも><
その上で、その特定の分野に関する教育を行うのに数学の知識のうちどの分野がどの程度あるとどのくらいショートカット出来るかという話でもあり、逆に言うと、独学するのであれば必要に応じて必要な数学の知識を学ぶので、独学できる限りは問題になら無いかも><
だからこそベーマガ世代の小学生は先生に習わずに三角関数を使うゲームをなんの不思議もなく自作してたわけで><

ある分野のプログラミングを行うのであれば、プログラミングに関する知識の他にその分野も知識も必要なのは当然(だけどそこがたぶん初学者に理解されてない)のだから、新たな分野のプログラミングをするのであればその分野の学習も必要になるわけで、そのなかで数学が特に汎用性が高いというかサブセットが使われる傾向が多いってだけでは感><

ある程度それはそうだけど、記事の趣旨はたぶん「プログラミングには高度な数学の知識が必要な分野もあれば、そうではない分野もあるのだから、そうではない分野のみの目的であってもプログラミングを学ぶ事はおかしくは無い」みたいな話では感><
問題は「プログラミングは全部同じ!」と思って、Pythonでスロットマシン作れる所まで学んだ人がAdaで戦闘機の制御システムもその知識のまま書けると思ってるような勘違いであって><

orange さんがブースト

最近はやりのAIやら機械学習をやるにしたって線形代数や微積やってないと話にならないし,グラフィックスも画像処理もゲームプログラミングもそう.

「プログラミングに数学が要らない」って言う人は,そういうプログラムにしか関わったことがないだけだと思うよ.

orange さんがブースト

誤解なんだよプログラミングに数学要らないっての…

システム屋がつくるような業務システムだとたまたまデータ定義や操作のほうが主体だから,ってだけで.

orange さんがブースト

数学勉強してサーバーを0から構築すれば良いのでは???

[これを言ってくるエンジニア、老害です。すぐに縁を切りましょう。 | 【テックジム】授業をしないプログラミング教室]( techgym.jp/colmn/mingra38/ )

orange さんがブースト

open() の呼び出しの後ろにくっついてる do ~ end がブロック.

引数にクロージャを渡しているんだけど,引数の()の後ろにくっつけられるスタイル出かけるのです.ruby は.

よくわかんないけどこれだと単純にファイル一個開いて閉じる程度ならあれだけど、ツリー状にリソース確保してって逆順に解放していくみたいなGUI作る時とかによくある状況の時にぐちゃぐちゃになるような気がする・・・><

Rubyの動かないコード (初級編) ブロックとクロージャの性質 - 主に言語とシステム開発に関して language-and-engineering.haten

orange さんがブースト

Rubyで暗黙のうちにリソース開放といったらそのパターンが普通ですね。自分でclose()とかもできるけど、やりたくないじゃん

orange さんがブースト

ファイルを開く場合が分かりやすいけど,

File.open("hoge.txt", "w") do |f|
f.puts "hogehoge"
end

みたいにブロック(≒クロージャみたいなもん)を受け取るメソッドを使って,前後に何か処理をする,ってスタイルが多い気がする.

オブジェクトごとのデストラクタは確かにないかも知れない.

スレッドを表示
orange さんがブースト

rubyではそれが必要な場合はブロックを使うと思う

RubyでDirectXを使うライブラリのドキュメント見つけたけど、

リソースの解放について mirichi.github.io/dxruby-doc/t

こんな書き方されてるってことは、Rubyにはこまめに明示的にリソースを解放すべき処理を書く標準的な仕組みが用意されてないって事っぽいかも?><
これって無駄にハードウェアフットプリントが大きくそして狙いに反して(※1 )性能が悪いソフトウェアが書かれまくる原因のひとつにもなってるんでは?><
(※1 あまりにも富豪的に書かれ過ぎてGCによる遅延解放のメリットをも覆い隠して本末転倒になる(パフォーマンス低下する)んでは?>< って言いたい><)

Ruby、仕様が意味不明でマニュアルも意味不明でソースも意味不明><(file.closeの中身がどこに書いてあるのかも見つけられなかった><)

ファイナライザはこれにあるっぽい><
module ObjectSpace (Ruby 3.0.0 リファレンスマニュアル) docs.ruby-lang.org/ja/latest/c

こまめに解放すべき処理(C# で言うとIDisposable.Dispose()、GC無い言語環境でいうとデストラクタに書く処理)ってどう書くんだろ?><;

スレッドを表示

Rubyのマニュアル読んでも見つからなくて謎だけど、言語仕様としてのデストラクタやファイナライザやC# のIDisposableみたいな標準的な仕組みの記述が見つからないけど、Rubyってどういう風に終了処理書くんだろ?><;
コンストラクタはinitializeって名前のっぽい><

Rubyをちゃんと使ったこと無いからわかんないけどマニュアル読んでみた限り、
珍妙と言えば珍妙だけど、インタプリタでありライブラリのデストラクタ的な物を書く仕組みでかつバグった時になるべく止まらないようにって安全側に倒した発想で作った仕組みって考えるとおかしくは無さそう?><
複数回呼ばれるとマズい終了処理を書く場所であり、かといって実行前にまともに検査されない言語環境であるので、特に終了処理等のダメ元でも実行すべき処理では多くのエラーをサイレントに握りつぶすような振る舞いをしなければならないかも?><

古いものを表示
:realtek:

思考の /dev/null