はてなキーワード: ラズベリーパイとは
3Dモデリングや3Dプリンタやラズベリーパイでモーター制御などは勉強した。
研究はロボットとかそういう感じなんだけど。一応何してもいい感じの研究室ではある。
周りの人は、機械学習使ってみたり、マトラボで統計解析したり、細胞使ったり、天体系望遠鏡の作成とかもあったりする。
これから研究で絶対やれそうなのは、アナログ電子回路、プログラミング、画像認識系の機械学習、センサー一通り、IOT機器組み込みの機械学習(ラズベリーパイで学ぶつもり)。
だが、これ以外だと何を身に着けるべきだろうか。
最先端だと海外に行かないと厳しいっぽいから、TOEFLでも勉強しようかなとも思っている。あと、個人的趣味で数学(代数幾何、数論幾何、測度論)は絶対やる予定。
でも、イマイチ、どうやって自分が食えるようになるかが分からない。
できれば、GAFAに就職して、凄い技術を作りたいなーと考えている。
あるいは、フリーになって勤めなくても暮らせるようになりたい。
今は全然関係ないことに従事していて、それが大して面白くもないのだが。
たまにはラズベリーパイを弄ったり組版ソフトで面白いものを見つけて弄っている。
そんな私が何年か前に30日でできるOS本とDIrectX9入門の本を買って触っていた。昔話だ。
Cを最初にやるときののヘッダーファイル、あるいはwindowsプログラミングでウィンドウを表示するときの様な「おまじない」だ。
ロクな説明もされないまま、写経しているうちにコードが増えて行き、なんかサンプルに毛が生えた様なものができて満足するが釈然としない。
分かった気がしない。
OpenGL/GLUTを後年マニュアルを参照しながら一生懸命やったときの方が理解できた気がしたし、オリジナリティのあるコードとなった。
やはりこういう根幹部分の知識は悪戦苦闘しなければ、身につけないのだろうかと少し思う。
昨今大量に溢れるラッパーやフックを見て様々な機能が便利になったと感心する。
プログラマとして働いたことはないが、車輪の再発明は学習以外においては悪だと学んできたので、それは大変結構だと思う。
ライブラリの再利用は良い。だが、その便利さがかえって学習者の成長を妨げるのではないか。
プログラミングの入門者には伝統的に変数やif文、for文などが教えられてきました。
昨今ではJavaやってGoogle Play Storeでアプリをリリースするのが目標になるのかもしれません。
開発環境は年々高級になっており、以前より人の思考に近い感覚でコーディングできるようになってきました。
とはいえ、かつてWindowsのGUIプログラミングがそうであったように、
スマホにはスマホの流儀があり、いくらアイコンを右クリックしたいといってもスマホには右クリックの概念が無いという、
様々な流れに翻弄されつつもプロダクトを開発し世にリリースしていくことは、
プログラマが選択できる使命の一つとして今後も世界中で支持されていくと私は信じています。
プログラミングをとりまく状況はこの30年で大きく変化したと言えます。
それでも基本的な部分は変わりがありません……などというのが通例ですが、
だからといって基礎練を素直に続けることが正しいとも思いません。
今の新しい世代の人なら、まずはスマホアプリかWebアプリ、Webサイトを目指すべきでしょう。
ハードウェアに興味があるなら、ラズベリーパイやArdinoを組み合わせても面白いですね。
アプリならJavaかSwift。(Unityを使うならC#ですね)
Web系ならphp。(ruby on railsもいいかと思います)
(15年前だったらC++でかっこいいwincdowsゲームを作りたい若者で溢れていました)
何かを作るにあたり、まずは1ボタン1機能から始めると良いと思います。
それはメール送信だったり、画面に文字を表示したり、ショップではがねのつるぎを購入したりと様々です。
ボタンを押すとボタンが増えたり減ったり、違う画面に移ったりしたくなります。
途端に難しくなります。
それらを整理するためにオブジェクト指向とやらを使わないといけなくなります。
何かを作る際に、機能が多くなると、それらを整理する手間が発生します。
グローバル変数はやめようとか、goto禁止というのはそういう活動の一環として生み出されてきたハウツーです。
そして自分の作りたいものは往々にして自分の実力を超えた所にあります。
幾多の困難を乗り越え、今の自分ならどの程度の規模のものを無理なく作れるかということがわかる場合があります。(わからない場合の方が多いんですけど)
最終的に何を作るか、何を作れるかというものを見据えながら、本当に必要な機能を選別しないといけないのです。
欲しいものは全ては手に入りません。
全部じゃないと意味が無いなら、即座に全てをあきらめるか、考え方を変えなければ生き残れません。
プログラミングをする上で、夢を実現する技術を学ぶわけですが、
それには、何を実現したいと願うか、何を夢とするか、をコントロールする術も含まれます。
そしてそれこそが、プログラミング、ひいては