プログラマーの卵を育てる 139
ストーリー by yoosee
プログラマの力はプラットフォームの力 部門より
プログラマの力はプラットフォームの力 部門より
MJ 曰く、 "マイクロソフトが今月からGotDotNet(GDN)の学生向けバージョンであるGotDotNet Japan Studentをオープンした。GDNは米国では以前から存在していたが、日本では今年から始まった、.NETに関する開発者のコミュニティーだ。GDNJapan Studentはその学生版で、なんでも初心者から経験者まで、情報交換したり課題を解決しながらプログラミングやコンピュータを学ぶことができるという。しかし当然のことながら学べるのは.NETを中心としたWindowsプラットフォームのことである。
最近この手のサイトやプログラムはRedHatやSunも行っていて、以前本家でもネタになっていた。ビジネス市場で熾烈なシェア争いをしている陣営同士、将来の開発者となる学生に対してそれぞれのプラットフォームの優位性をPRしているとも言える。
プログラミングを学びやすい環境が整備されることはいいことかもしれないが、果たしてプラットフォームに依存したプログラミングを学ぶことが本当によいことかどうかは、意見が分かれる所だと思う。学生時代にプログラミングを学ばれた経験をお持ちの方も多いと思われる/.読者諸兄はどう思われるだろうか。"
プラットフォーム依存 (スコア:3, すばらしい洞察)
私はBASIC or アセンブラ主流時代にパソコンをはじめたのですが、現在も色々と役に立つ基本的な知識も多いです。プログラミングの肝の部分はプラットフォームが大きく変わるわけではないですし、変にプラットフォーム依存を避けて抽象的な学習に終始するよりはよいと思います。
Re:プラットフォーム依存 (スコア:2, 興味深い)
私が最初に学んだBASICも (C) Microsoft だったけど,それが無駄になったわけではないんだよな。
# あぁ,ベーマガ。
Re:プラットフォーム依存 (スコア:1)
完全に非依存にこだわると、CASLも駄目でしょうし
入り口が無くなってしまいます。
M$の囲い込みが問題なんじゃなくて、
他のプラットフォームももっと初心者を取り込む事にも
力を注がないといけないと言うことなのでしょう。
AMIGA4000T(60/50)使い
Re:プラットフォーム依存 (スコア:1)
この2点を実感するべく、プラットフォーム依存環境を、それなりの数こなしたほうがよいと、自分は思ってます。もちろん、教育時には「欠点」「短所」も教えるという前提で。
特徴ある (っていうか変な) プラットフォームって、何某か理由や目的があるものです。できれば、その理由や目的を理解した上で、プラットフォームを使っていきたいなぁと。
Re:プラットフォーム依存 (スコア:2, おもしろおかしい)
「ここで教えた内容を、ほかのプラットフォームで活用することを、硬く禁じます。」
といった契約を結んじゃうとか、
「ほかのプラットフォームは、ここで教えた内容はどんな基礎的なこと(アルゴリズムとか)でも、まったく適用できないクソです。」
といったデタラメを教えちゃうとか、
そういう外道なことをしない限り、いろいろなところでやってほしいですね。
Re:プラットフォーム依存 (スコア:2, 興味深い)
学生に対してそんな要求をすると鬼畜と見なしてもらえる(笑)と思いますが、
同じことが職場では当然のように行われているような気がするなあ…
凄く面白いアーキテクチャのソフトが有っても、それについて外で語れないんですよね。
あれ、いらいらします(T_T)
野生の勘をもったプログラマーの卵を育てるには? (スコア:2, 興味深い)
大人が持っている常識(≒ある程度固定されてしまった世界観)の
範囲で解りやすいユーザーインタフェース
に収束しているので、それをそのまま子供に押し付けるのは
よろしくないと思う。
エンピツの持ち方を覚える前のチビは、空っぽかもしれない
けれど、大人が「とんでもない」と思うユーザーインタフェース
も許容できる力を持っていると思います。
「大きなお世話的ユーザーインタフェースに触れさせる」=「過保護で育てる」
というような気がします。
最初はできるだけ素材だけにしといたほうがいいんじゃないでしょうか?
#
#マウスを近づけるだけでクラスの中身が
#見えるUIとか、おじさんには楽でいいんですが。。^^;
Re:野生の勘をもったプログラマーの卵を育てるには? (スコア:1)
その「大きなお世話的UI」を彼らに実装させてみるというのも、 逆説的な意味で教育効果があるかもしれませんよ。
といったものに対応することの大変さを分かって貰えれば、 に思い至ってくれる人もいるかもしれません。Re:野生の勘をもったプログラマーの卵を育てるには? (スコア:1, おもしろおかしい)
で、出来上がったものがこれ [x.org]とかこれ [opengroup.org]になるんですよね?
Re:野生の勘をもったプログラマーの卵を育てるには? (スコア:1)
10年くらい前ならば、そういう方向性だったんでしょうな。
で、今の若者はそういう過去の発想からは自由であって欲しいですね。
Re:野生の勘をもったプログラマーの卵を育てるには? (スコア:1)
>というような気がします。
>最初はできるだけ素材だけにしといたほうがいいんじゃないでしょうか?
で、大きなお世話ではなく素材といえるモノはどれか?という問いに対して、答えに窮するわけですね(^^;
いやほんと、GUIやってりゃむしろCUIのほうが大きなお世話と思うかも知れないじゃん。
つまり、「自分にとってNativeじゃないUI」かどうかという問題に落とし込まれてしまわないか?というのが
心配なんです。
>#マウスを近づけるだけでクラスの中身が
>#見えるUIとか、おじさんには楽でいいんですが。。^^;
オジサンでなくても、それは重要なことだと思います。
今作ったものを今見る手段が無いなんて、本来ナンセンスなのですから。
ま、その見せ方の形態は、色々考えないとならないでしょうけど。
プログラムやってて感じる最大の「問題」の1つは、隔靴掻痒、ですね。
今作ったものを「直接」見る方法が乏しすぎる、って奴。
GUIも(今の主流のじゃ)何の貢献もしてないし、デバッガだってまだまだ弱いし。
今メモリ上に浮かんでるオブジェクトが全部見えて、最低限のレベルをクリアしたと言えると思うんですが、
それですらなかなかねえ…
#もう1つの問題は、逆に書くときに、書きたいように書けない、という問題ですね。
#だから最近は最低でもRubyくらい柔軟な言語じゃないとムカついて駄目だし、もっと柔軟性欲しいこともあるし。
Re:野生の勘をもったプログラマーの卵を育てるには? (スコア:1)
ある特定の環境に慣れてそこからでてこれない奴もそりゃ
いると思いますよ。そうでない奴はそっから出てくればえ
えわけです。まずはとっかかりで何かしらの手がかりに
触らせてやればよいと思う。
あとは、そいつがその手がかりを基点にしてどこにいくか?
ということでしかないわけです。手がかりを見せても「俺
はもっと違う手がかりを探す」ってのもありでしょ?
大きなお世話な「らくちん山登り」でケーブルカーのチケッ
トを手に入れたやつでも、山にいくわけです。ちょこっと
機転がきけば山のよさをわかり、山の楽しみ方をあーだこー
だと試すわけです。そういった機転が利かない奴はずっと
そこにいるわけですね。で、機転が利かない人を閉じ込め
て(本人にとっては居心地よくて居るだけなんだけどね)お
けるってことで、「大きなお世話的ユーザーインタフェー
ス」は、それなりに有用だと思います。
なにしたい? (スコア:2, 興味深い)
マイクロソフトに期待するのは (スコア:2, すばらしい洞察)
人気(のあった)ゲームの .NET 版を出してもらって、
そのコードを好き勝手書き換えさせてもらえるなら、
がんばって勉強するやつはたくさん出てくると思う。
書き換え元になるゲームが面白ければ面白いほど、
書き換える意欲も出てくるものでない?
アルゴリズムやらデータ構造やら計算量やらオブジェクト指向やらを
勉強するのはその後でも十分だろ。
# mishimaは本田透先生を熱烈に応援しています
環境依存 (スコア:1)
それに、MS-Windows 以外の環境もあるということも知って、独善的なプログラマにはならないでほしいのだ。
学生以前のプログラミング原始体験ならば、ガチガチにプラットホーム依存で、アルゴリズム無視でも、とにかく動く、という環境の方がむしろ大切でしょうが。
Re:環境依存 (スコア:3, 興味深い)
.NET はそれ以前のMSのフレームワークよりはだいぶすっきりした気がして,教育にも使ってみてもいいかなと考えています.アカデミックアライアンスプログラムを使えば低コストで導入できますしね.C#も悪い言語じゃないし.ただしこれでも現状のGUIフレームワークはまだ「お約束」ごとが多くて,初級レベルの教育に向いているかどうかは疑問です.
個人的には本当に最初のプログラミング「経験」は Squeak がよさそうで,その後に .NET 上で手続き型や関数型のプログラミングも悪くないと思います.電気・情報系の学科ならどっかで(仮想マシン上じゃない)機械語プログラミングの経験をしてもらいたいところですが.
Re:環境依存 (スコア:2, 興味深い)
機械語とC言語ソースの関係(ポインタや静的/動的変数の使い分けがどのように機械語に落ちるのかとか・・・)を概念すら理解しないでコーディングされちゃうので、大変です。
まあ、Windowsなんかのソフト屋さんとしてならいいんでしょうけど、組み込みでPCのような環境を前提にされちゃうと困ります。(普通、仮想記憶/メモリ保護機構もない、スタック領域も限られる、なんかの制約が多いです。また、マルチタスク環境でmalloc/freeを繰り返されちゃうと・・・(^^;;;;)
moonbearさんは教育関係の方のようですが、ぜひとも学生さんにC言語+アセンブラの混在プログラムを経験させてやってくださいな。(できればソフトウェアがどうやってハードウェアにアクセスするのかも含めて・・・)
『メモリが化けるっ!』とクレームを受けて結局ソフトのポインタ関連バグとかタイプミスを追い回させられている組み込みハード屋の切実なお願いでした。
#まあ、必要は発明の母ともいうように、学生さんが必要性も感じない状況で教育されるのもすごく難しいことだと思いますが・・・。
Re:環境依存 (スコア:1, 余計なもの)
便利な道具が「何も」ない環境での開発もまたナンセンスなので、問題は、
便利な道具が、GUI(笑)の世界「にしかない」などという残念な状況が
生じてしまっていないか?という点にあるように思います。
言ってしまえば、例えばテキスト端末用のSqueak(笑)みたいなものが有ればいいのかな、と。
つまりOOPばりばりを自分でも書けるし恩恵にも与れるような、テキスト環境、ってこと。
#elispでいいじゃん、と言えるのは達人の証かも(笑)。
#OOPとLispとはそんなに遠くない世界なんだけど、それに気付くまでが遠い道だったりしませんかね?
うーん。というわけで、Eclips(だっけ)はどうなんだろう?と最近気になってるところ。
GUIなんざはっきり言って(GUIアプリのビルダーが欲しい時以外は)要らないんだけど、
なんか色々なプラグインが開発効率を上げるうえで便利だそうじゃないですか。
しかもそれらの中の幾つかはきっと、単にテキスト環境でも既に出来てることのラッパ(or再実装)だけじゃなくて
あの世界の中で初めて生まれたものだって、幾つかあるわけですよね。
>機械語とC言語ソースの関係(ポインタや静的/動的変数の使い分けがどのように機械語に落ちるのかとか・・・)を概念すら理解しないで
そりゃそうと、こっちとしては、静的/動的変数の違いと、それらが機械語に落ちるときの違いと、もまた
区別して理解して欲しいと切実に思っています。
だって、静的と動的の変数の差って、機械語に縁が無ければ無視できるもの、では決してナイんだもの。
両者は抽象概念である「寿命」が違う、ってのが話の発端であって、機械語への落ちかたの問題は
いわば副作用でしかない(笑)わけです。
だから、機械語に縁のない人でも、「寿命」という概念はきちんと把握していて貰わないとね。
逆に言えば、機械語に縁の有る人でも、「寿命」と「落ちかた」という二段構えの理解の仕方
をしておくことは、きっと重要だと思います。
まさかCPU乗り換えるたびに静的/動的変数の理解のしかたまで変化するわけじゃないですよね?
変化するのは落ち方の理解のほうですよね?
>学生さんにC言語+アセンブラの混在プログラムを経験させてやってくださいな
というわけで、俺が教育者諸兄お願いしたいことはちょっと違うようです(^^;
アセンブラとかの超実装よりの部分よりもむしろ抽象概念のほうで
駄目な奴らに悩まされてますんで…
そういえば (スコア:1)
Re:環境依存 (スコア:1)
Re:環境依存 (スコア:3, 参考になる)
小学生の算数は非常に具象的なものから始まり、大学の数学では非常に抽象的なものに進みます。
それと一緒で、最初はアルゴリズム論のような抽象論より、もう少し環境依存でもいいから具体的なものからはじめたほうが知識が身につくのではないかと思います。
プログラミングのノウハウ [namazu.org]の最後のほうにある、高林さんの友人のコメント、「大学では 1(普遍的なノウハウ)や 2(システムのノウハウ)の「奥義」を教えられるが、中国拳法と 同じで、いきなり奥義を教えられても何もできない」には唸らされました。
大学でてても全然使えないプログラマばかりな理由の一端はこの辺にあるんだと思ってます。
-- Takehiro TOMINAGA // may the source be with you!
Re:環境依存 (スコア:2, 興味深い)
確かに算数は「りんごが3つとミカンが2つ」から入りますが、すぐにそれが「男の子が3人と女の子が2人」というように、個別の事例にとどまらないように注意深くカリキュラムされています。
プログラミングも同じように具体例からはいってもらってかまわないのですが、環境に依存しないよう、初期から複数の環境を経験すべきように思います。
自分の経験でも、ある言語・環境から別の言語・環境に移行したときに、元の言語や環境の理解が深まったことが多々あるので。
Re:環境依存 (スコア:2)
vyama 「バグ取れワンワン」
Re:環境依存 (スコア:1)
実際に組んだ上で、方法を思いつかないこと、遅いこと、特定条件下で動作が安定しないことを体験した上でないと、アルゴリズム、オーダー、仕様考察のありがたさって、判らんと思うんです。
喩えるなら、自国語くらいは自由に扱えないと、文学も哲学もできないでしょう。そんな関係じゃないのかな。
Re:環境依存 (スコア:1)
自分でソースを書けない人が多いから問題なのでは。
main() {
}
だけ書いて、あとは参考書のコピーじゃだめなんです。
#人のコピーもダメよ・・・。
Re:環境依存 (スコア:1)
やっぱりある程度勉強してと言うよりも、
感覚として言語を取り込んでからでなければ難しいですよね。
でも、やっぱり最初はプラットフォームは何でもいいので、
ディスプレイの前でうんうんうなりながら数行のコードを
趣味で書き直してほしい(笑
INT24Hがっと徹夜した昔が懐かしい。
ただ、やっぱりそのプラットフォーム(と、言うか言語依存な)
プログラマになってしまうと、それはコーダーですので、
気張って前に進む努力が必要かなと。
#長くプログラムしていてもtemplateの強力さに感動したり
#Javaのclass loaderに感動したり、先はいっぱいある訳よ。
kusanagi shin
typo? (スコア:1)
...以前ですよね?
M-FalconSky (暑いか寒い)
Re:typo? (スコア:1)
ご指摘ありがとうございます。
Re:typo? (スコア:1)
まだありますが。
プラットフォームに非依存といってもなあ (スコア:1, 余計なもの)
まとも(^^;に絵やGUIが出る開発環境で、「非依存」といえるようなものって、何か有りましたっけ?
メーカーの言い分を真に受けるならJavaは該当することになるが、あれはJava自体がプラットフォームだから、ここでは除外だろね。
メーカーに囲い込まれる度合いという意味では、単なる「.NETのライバル商品(=同格)」でしかないんだよね。
依存しないプログラミング環境でプログラムを覚えた、と自負できる人、どれくらい居るっすか?
大抵、どっかこっかの環境に依存するかたちで、プログラムを覚えるものだと思うけど。
どこそこの会社のBASICだとか、さ。
ある意味で非依存は確かに理想なんだけど、逆にいえば「具体的なことを何も出来ない」んだよね。
非依存といえば身近な奴だとANSI Cくらいなものっすかね。ほら、何も出来ない(藁。
いや、絵が出来ないことだけをどうこう言おうっていうわけじゃないです。
絵「も」出来ないし、他の多くの事も出来ない。
(ANSI) C って、それくらい装備が薄いから。
ライブラリをヨソから持ってきたらそれはその環境に依存したことになるし、
ライブラリを自作したとしても自作の対象はその環境自体だから。
奥まったロジックというかアルゴリズム(やデータ構造やOOP??)の部分では、環境に依存しない色々なことが多いけど、
そういうのを覚えるのって、むしろ第二段階以降かなという感じ。
あと、OOPについては顕著な問題なんだけど、言語ごとにOOPアーキテクチャ自体がバラバラなんだよね。
あるOOPアーキテクチャを覚えるには、その言語自体(そしてC以外の多く(笑)の言語ではそれは直接、言語実装を意味してしまう)を
覚える羽目になっちゃう。
#だからOOPは最初に覚えるな、という考え方は本末転倒だと思う。
抽象的ではありたいんだけど、ゲンジツはなかなかそれをさせてくれない、という感じがしてます。
Windows(ならではの開発環境)を初心者から取り上げたとして、
じゃあ替わりにどんな「非依存な」環境を彼に与えることが出来るか?ってーと、
そんなものは無い、んだよね。
LinuxでもBSDでも駄目っすよ。CででもUnixならではの関数は使っちゃ駄目なんだから(笑)。#RedHatも名を挙げられてるなら尚更ですね。
で、
実際には何をやればいいかってーと、個々の環境依存な状況に「甘んじ」つつ、
それで学んだことを頭の中で非依存化(抽象化)する、という形になるんじゃないかな。
え?それを出来るならもう学ぶ必要は無いって?うーん?(^^;
Xはプラットフォーム非依存でしょう (スコア:1)
Re:プラットフォームに非依存といってもなあ (スコア:1)
Re:プラットフォームに非依存といってもなあ (スコア:1)
サポートと呼べば聞こえがいいですが、それって囲い込みとも言いますよね。
Javaによる囲い込みをOverrideするかたちで、OSベンダーが囲い込みをやっている。
区別つけるのが難しいのが良い事なのかどうか?という議論は、結局、常に賛否両論に分かれると思います。
OSごとき(笑)に依存せず何処ででも同じように使えるアプリが欲しい、と思ったときにゃ、
OSローカルなノリにModifyされてるソフトは結構むかつくんですよね。
#そんなおいらはvim愛用者なのでG7。ちなむとWindows版でもMenuは全く使いません。TeraTerm経由で使うUnix環境と「同じ」使い方で通すほうが統一取れて楽なので。
Re:プラットフォームに非依存といってもなあ (スコア:1)
# 少なくとも私がちょろっとかじった頃の奴なら
# GUI には程遠いでしょうが。
でも所詮学習用なんですから、LOGO だっていいはずですよね? プログラミングが好きになった奴は、(仮に制止したとしても) そこをとっかかりにどんどん先に進んで行くでしょうし。
但し、学校で教えるならプラットフォーム独立なものよりも、 #293629 [srad.jp] の意見に賛成です。 プラットフォーム非依存を追求しすぎて、中身がどう動いているのか、に興味が向かなくなるのを危惧しますので。
してみると、BASIC がもどかしくてマシン語やらコンパイラ言語やらの本を読み漁った '80 年代と言うのは良い時代だったのかなあ、と。
LEGO (スコア:1)
LEGO [lego.com]もお忘れ無く。:-)
センサーやモーターがあるので入出力が学べます。
分岐やループのような基本的な制御構造もあります。
既製のソフトに飽きたらH8マイコンのファームをいじるという濃いぃ道もあります。
中高生には(いや大人にも)理想的な教材ではないでしょうか。
Re:プラットフォームに非依存といってもなあ (スコア:1)
個人的には学習「専用」言語みたいな位置付けのもの
(もしそんなものが有るならば:Logoが含まれるかどうかは俺は知りません)は、嫌いなんですが、
それはさておきLogoの方向性といえば、「ドリトル」
http://www.logob.com/dolittle/
http://genyo.kinjo-u.ac.jp/~ghase/dollitle/text2002/dolittletext-frame.htm
あたりが気になっているところです。
タートルな世界を、OOP拡張…つまり「複数の亀を同時に」扱えるようにして、
更にプロトタイプ方式OOPで記述の容易さを狙い、日本語言語(笑)にすることで更に容易さを狙い…
ただ、この言語がイイなぁと思うのは、少なくとも言語仕様的には、
教育にしか使えない(悪い意味で)ような言語には、なっていないって点です。
この実装(とライブラリ)自体は亀さんを出すことにしか使えそうにないです(笑)が、
言語そのものはまともなプロトタイプ方式OOP言語として必要なものはまぁ備えてると思うし、邪魔なものもまぁ無さそう。
日本語であることも別に悪いことではないでしょう。括弧や句読点の使い方は思うに素直だし、
どうしても嫌でも実は英語で問題なく使えるようになってるし。
というわけで、俺としてはこの「ドリトル」の実装を見て、それこそ
環境依存性…というかわざわざ自分で(教育用)環境を作ってしまって可能性を狭めてる部分…を
切り離したいなぁ、という欲求を抱いたのでした。まる。
ところで、
>プラットフォーム非依存を追求しすぎて、中身がどう動いているのか、に興味が向かなくなるのを危惧しますので。
「プラットフォーム依存」と「中身」とは、等価な話題じゃないと思っています。
中身にも色々ありまして、喩えて言うなら、 CPUの銘柄を気にするという意味と、
銘柄はどうでもいいけどCPUというものが(計算機一般には)有ることを気にするという意味と、の
2つが有ると思っています。
俺が古典BASIC時代を少し嫌なのは、その2つが混同されてた感がなきにしもあらず、という点に対してです。
だから、「Z80の」時代という意味では、あの時代は俺は嫌いです。
#環境非依存については、「賛同しないけど仕方ないと思っている」です。賛同したいわけじゃないです(^^;
##こないだのCCCDアンケート話題によると、「仕方ない」は「消極的反対」らしいですね(笑)
#ただ、仕方ないという事実を忘れてしまうと、今度は我々は身動きが取れなくなるんで…
Re:プラットフォームに非依存といってもなあ (スコア:1)
>あるじゃないですか? むしろインターネット時代(笑)の昨今では
>ブラウザ上で動く(or 動いているように見える)プログラムのほうが
>初心者が親近感を持ちやすいと思う。
ふーむ。クラサバ(違うけど)ですか。
あれって、環境依存ではナイ、というよりも、2つの環境に依存してるってことが
しばしば(ご存知のとおり常にではないですが)有るんで、ちょっとどうかなとも思います。
まあ、(JavaScriptとかの)一部の面において変な環境依存が有るのは適宜無視してもいいんです(笑)が、
それとは別の問題として、CGIというモデル自体が1つの足回りアーキテクチャなわけで、その辺はどうか?と思います。
問題を一般化すれば、IOが絡むと環境と無縁で居られない計算機のサガ、ってとこかな。
CPUとメモリまでは簡単に抽象化できる(つーか似てないモデルの環境があんまり無い)んだけど、
入出力の分野は百家争鳴&決定打無し状態ですね。
----
ところでwebアプリは嫌です俺(T_T)
鯖とブラウザとの状態マシン(ってのか)としての一体感が乏しすぎ。やりにくい。
せめてその乏しさを隠蔽してくれるJavaServerFacesやDiv(Rubyの)みたいなのが普及してくれることを祈るばかり。
あとクッキーの「今主流?の」扱い方も変ですね。同じサイトに同時アクセスしただけでセッションという概念が崩壊するのは、
なんかクッキーというモデルの使い方を間違ってる証拠かと。なんで複数の窓の間でクッキー情報を共有するかなあ?
ついでにFrameも論外ですね。あんな状態マシン壊してくれと言わんばかりの仕組みは。
てな感じで、webアプリって、素朴なプログラムモデルとは結構かけ離れているし、その離れっぷりを解決するために
結構いろんな手を回さないとならないんで、ちょっと楽じゃないのではないでしょうか?
つまり、使って天国、作って地獄。
(少なくとも現状は)OOPが整備される以前のGUIアプリみたいにタチが悪いと思いますが、どうでしょう?
#ん?そういやヨリによって.NETにはwebアプリの問題を解決するソリューションが既にある、んでしたっけ?
----
>あ、あと、G7ほど博識の方がsqueak [squeak.org]をスッパリ忘れているのは驚愕の至り。
#どこが博識じゃ(T_T)
Javaがプラットフォームなら、Squeakだってプラットフォームです。
これはべつに喜ばしいことでもなんでもないですが、そう捉えるほうが事実に即してると思います。
今回は、単に「どこの計算機/OSでも動けばいい」という話を、してるわけじゃないですよね?
たとえば、.NET開発環境がLinuxでも動けばそれで満足!という形で、話を終わらせられるんでしょうか?
つーか、Squeakも、結構ごてごてしてきてるそうですよね…
#俺の作った言語ならどうよ!とか一瞬思ったんだが(笑)、考えてみたらアレとて所詮は
#Unixなstdioの世界から全然自由になってない代物だし(T_T)
Re:squeakって (スコア:1)
Re:squeakって (スコア:1)
オフトピですが、道具繋がりで、
分析・設計ツールとしてのSmalltalk [sra.co.jp]って話が有るそうです。
たしかに、あれくらい柔軟な道具(言語までついてる(笑))だと、こう色々なことに活用できそうですね。
しかも何をやっても永続化をデフォでやってくれる(んでしたよね)から、
ほんとに「ものを作った」という感じになりやすいんだろうな。
#テキストの替わりにビジュアルを、Lispの替わりにOOPを、搭載したEmacsみたいなものか。
##俺Emacsも使ってないですけど。
rubyとかも言語そのものは十分OKなんだけど、その言語を走らせて作ったモノを保存するとか表示するとかという面では
(デフォでは)あんまり強くないんで、まあ…
Re:プラットフォームに非依存といってもなあ (スコア:1)
>で基礎を勉強しておしまいでした。(メモリをガリっといじっちゃう喜びはそのときは分からなかったし、今はむしろそんなことしたくない。)
まあ人によって興味は色々なんでしょうね。
俺はBASICからCにいったときに、「関数が作れる」「ローカル変数が作れる」「行番号が要らない(同じ&もっと便利なことは、括弧があれば出来る)」
などなどといった点に喜んだ記憶があります。
頭悪い俺としては、BASICだと数百行書いただけで、もうそのスパゲティぶりに自分でついていけなくなりましたんで、
もっと楽な言語が欲しいなあと思っていたところだったので。
まあBASICがポケコンのだったせいも大きいですけどね。画面が狭いので尚更見通しが悪いとゆー。
「何も出来ない」を怒った記憶は、あんまり無いです。見た目(笑)を気にしない奴なんで。
いじる対象については、今は特に、高級化してるんで嬉しいですね。
つまり、メモリはいじらないけど、オブジェクトや関数(こちらはCの関数じゃなくLispのほうの)という
もっと高級な奴をいじる「たのしみ」が有るわけで。
#それらが実用をも兼ねているのも、昔と同じ。
Cについては、使い始めてしばらくして「関数ローカルだけど、寿命は関数に束縛されない、という変数が欲しい(のに無い)」というのが
悩みになりはじめました。これって今にして思えば、オブジェクトだったり(Lispの)関数だったりするです。
>便利すぎなければいいんじゃないですかね。もっと便利なものはないのか、もっと楽をする方法はないのか、調べているうちに他の環境にも目が行くと思うし。
それは言えてますね。
といっても、本当に欲深い(笑)人は、どこまで与えても「もっと便利なもの」を求めるかも知れませんが。
#貪欲で傲慢であることはHackerの必要条件、でしたっけ?(^^;
Re:プラットフォームに非依存といってもなあ (スコア:1)
ごめん。コレじゃ確かにそうですね。一言(?)抜けてました。
「更に、それを「他の関数(処理)」からもアクセスしたい」という更なる要求を書き忘れていました。
たとえば、ある関数を呼ぶたびに、内蔵のstatic変数の力を使って、
呼び出しごとに「1づつ勝手に増加する値」を返す関数、ってのは
作れるわけですが、static変数を使う手口だと、他のアクション、例えば
「値を初期値にリセットする」とか「値を逆に減らす」とかいうアクションを
用意する(そして呼べるようにする)すべは、無いわけです。
こりゃ使えないなぁと。
で、構造体ポインタを渡して云々、という似非OOPの道に踏み込んでいくわけです。はい。
Re:プラットフォームに非依存といってもなあ (スコア:1)
激しく同意。
少なくとも、教育を受ける時点では間違いなくそうでしょう。
必要性に迫られていない以上、使うこと自体に興味を抱ける言語でないと、習得も遅いものになるでしょう。
そういう意味では、JavaScriptや各種アプリのマクロから入ったっていいんじゃないかと思います。
#ただ、僕的には、Rubyが推奨ですが。
#ともかく思ったことが形(?)になるというのが良いと思うので。
とりあえず (スコア:1)
Windows2000とLinuxの2種を使用していますので。
でもPICの実習にはPIC C Liteを使うため、MPLABを使ってます。
依存も非依存も何がしたいのか、が問題なのではないかと。
目的の無いプラットフォーム依存が問題なのではないかな?
最初が重要 (スコア:1)
個人的にはこの意見 [srad.jp]が近いです。
ただ、最初に学ぶ環境は重要だと思います。
出来れば、背景となる思想がしっかりしているものがいいですね。
昔ならやっぱりNEXTSTEPがお勧めだったのですが(^^;)、
今ならJavaかなぁ。GUIもそこそこ使えるし。.NETでもいいけど、Javaの方がシンプルそうだし。
# プログラムの実力より、視野を広く持てる人が少ないのが最近の不安。
相手は初心者 (スコア:1, すばらしい洞察)
ここの議論には「面白い」の一言も書いてないつまらない人ばかりだ :-p
面白いかどうかはいざ知らず (スコア:2, 興味深い)
プログラムってパラダイム転換の一種なので、「数学が面白い」程度には面白いと思う。つまり、どんなに工夫しても、半分以上の人には面白いと思ってもらえないってこと。
みんなに良質なきっかけを与えることが大事で、無理やり面白いと思わせようとするだけ無駄……かというと、数学でも面白く教えられる先生がいるからなぁ。ただ、言語や環境よりも、教師のほうがよほど重要でしょう。
さて問題は、数学が嫌いな人にも四則演算を身につけさせるのと同様、プログラム初歩を身に付けさせることなんだが。これは九九と同様、ある種の調教であって、面白いなどというものではないという意見はいかがでしょうか。
# いまのところ、プログラム技能と教授の能力は反比例しているように思える……
Re:面白いかどうかはいざ知らず (スコア:1, 興味深い)
まあ、ここにいる人たちは自分と他人を勝手に重ねてしまう「自分環境依存」タイプなので、
どうしても「自分の考えに従えばみんな面白いと思う」になってしまうな。
でも、実際は人それぞれな訳で、
その人が一番興味を持てるところから入るのが一番だと思う。
とりあえず、環境うんぬんの前に、まず「自分環境依存」をやめないと。(w
># いまのところ、プログラム技能と教授の能力は反比例しているように思える……
プログラミングって「探求」だからじゃない?
やっぱりそういうものに没頭すると周りが見えなくなるし。
プログラム言語を覚えるたびに人間の言語を失っていくのかも…。(w
依存もいいことあります (スコア:1)
ハードウェアというかコンピュータがどうやって動いているのかもより身近だと思いますし。
プログラマーの卵 (スコア:1)
最初のうちは、その親にしっかりと付いていきます。
ということで、早く親離れしてね。
----------------------------------------
You can't always get what you want...
Re:教科書はぜひ (スコア:1, おもしろおかしい)
ちなみにその集まり、どっかの企業(*セラ)の基金によって運営されてるんですけどね。もったいないことだ。
そんなものを取り出してくる指導者程、実は本質をつかんでいないんではないかと実感しました。というか、日経の雑誌や技術書で教えようとしている人はたいていそんな感じ。ソフトバンクとか技術評論社の安本のほうがまだマシ。
この本自体、非常にウインテル(というか一般的なPCアーキテクチャ)に依存しまくっていておすすめ出来ません。そのことに対するフォローもないし。