アカウント名:
パスワード:
まとも(^^;に絵やGUIが出る開発環境で、「非依存」といえるようなものって、何か有りましたっけ? メーカーの言い分を真に受けるならJavaは該当することになるが、あれはJava自体がプラットフォームだから、ここでは除外だろね。
JavaはOSというプラットフォームには
>Windows上のSWT以上にAqua上のSwingはCocoaアプリと区別をつけるのが難しい。OSベンダーによるサポートって本来こうあるべきって感じのものです。 サポートと呼べば聞こえがいいですが、それって囲い込みとも言いますよね。 Javaによる囲い込みをOverrideするかたちで、OSベンダーが囲い込みをやっている。
Sunが自分でオーバーライドする分には別にイイと思うんで
絵やGUIが出る開発環境で、「非依存」といえるようなものって、何か有りましたっけ?
こういうこと言う人ってたまにいるんですけど、スタンドアローンな 環境に縛られてませんかね? javascript、CGI(を使用するperl,ruby,python)、PHPだって あるじゃないですか? むしろインターネット時代(笑)の昨今では ブラウザ上で動く(or 動いているように見える)プログラムのほうが
絵やGUIが出る開発環境で、「非依存」といえるようなものって、何か有りましたっけ? (snip) あ、あと、G7ほど博識の方がsqueak [squeak.org]をスッパリ忘れているのは驚愕の至り。
# 少なくとも私がちょろっとかじった頃の奴なら # GUI には程遠いでしょうが。
でも所詮学習用なんですから、LOGO だっていいはずですよね? プログラミングが好きになった奴は、(仮に制止したとしても) そこをとっかかりにどんどん先に進んで行くでしょうし。
但し、学校で教えるならプラットフォーム独立なものよりも、 #293629 [srad.jp] の意見に賛成です。 プラットフォーム非依存を追求しすぎて、中身がどう動いているのか、に興味が向かなくなるのを危惧しますので。
してみると、BASIC がもどかしくてマシン語やらコンパイラ言語やらの本を読み漁った '80 年代と言うのは良い時代だったのかなあ、と。
ある意味で非依存は確かに理想なんだけど、逆にいえば「具体的なことを何も出来ない」んだよね。 非依存といえば身近な奴だとANSI Cくらいなものっすかね。ほら、何も出来ない(藁。
環境ベッタリな BASIC から C を教科書で勉強したときにまさにそれを感じました。「なんだこの何もできねー言語は」と。で、面白くなかったので基礎を勉強しておしまいでした。(メモリをガリっといじっちゃう喜びはそのときは分からなかったし、今はむしろそんなことしたくない。)
アレゲ的に言っちゃえばですよ、やっぱ
それってその変数を共用する関数をモジュール(ファイル)に分離してstaticな変数にすれば良いのでは? というような突っ込みはG7さんには無粋な突っ込みだろうし、これとていつもうまく行く訳ではないという事は承知しています。:-)
>で、構造体ポインタを渡して云々、という似非OOPの道に踏み込んでいくわけです。はい。
私も
> 「な
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
プラットフォームに非依存といってもなあ (スコア: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:Xはプラットフォーム非依存でしょう (スコア:0)
Xならできるけど、Windows,GTK,Mac etc...はできないとなりかねません。
Re:プラットフォームに非依存といってもなあ (スコア:0)
JavaはOSというプラットフォームには
Re:プラットフォームに非依存といってもなあ (スコア:0)
Windows上でのSwingアプリしか見たことないでJavaダメとか騒いでる人には信じられないだろうけどさ。
Re:プラットフォームに非依存といってもなあ (スコア:1)
Re:プラットフォームに非依存といってもなあ (スコア:1)
サポートと呼べば聞こえがいいですが、それって囲い込みとも言いますよね。
Javaによる囲い込みをOverrideするかたちで、OSベンダーが囲い込みをやっている。
区別つけるのが難しいのが良い事なのかどうか?という議論は、結局、常に賛否両論に分かれると思います。
OSごとき(笑)に依存せず何処ででも同じように使えるアプリが欲しい、と思ったときにゃ、
OSローカルなノリにModifyされてるソフトは結構むかつくんですよね。
#そんなおいらはvim愛用者なのでG7。ちなむとWindows版でもMenuは全く使いません。TeraTerm経由で使うUnix環境と「同じ」使い方で通すほうが統一取れて楽なので。
Re:プラットフォームに非依存といってもなあ (スコア:0)
Sunが自分でオーバーライドする分には別にイイと思うんで
Re:プラットフォームに非依存といってもなあ (スコア:0)
>むしろして欲しいくらい。(泣けるほどJBuilderが重いのは何とかして欲しい)
>Windows、Aqua、GTK+などの主要なGUIでだいたいカバーできるだろうし。
ハードウェアアクセラレーションについては現在試行錯誤の模様。
>###
Re:プラットフォームに非依存といってもなあ (スコア:0)
Re:プラットフォームに非依存といってもなあ (スコア:0)
こういうこと言う人ってたまにいるんですけど、スタンドアローンな
環境に縛られてませんかね?
javascript、CGI(を使用するperl,ruby,python)、PHPだって
あるじゃないですか? むしろインターネット時代(笑)の昨今では
ブラウザ上で動く(or 動いているように見える)プログラムのほうが
Re:プラットフォームに非依存といってもなあ (スコア:1)
# 少なくとも私がちょろっとかじった頃の奴なら
# GUI には程遠いでしょうが。
でも所詮学習用なんですから、LOGO だっていいはずですよね? プログラミングが好きになった奴は、(仮に制止したとしても) そこをとっかかりにどんどん先に進んで行くでしょうし。
但し、学校で教えるならプラットフォーム独立なものよりも、 #293629 [srad.jp] の意見に賛成です。 プラットフォーム非依存を追求しすぎて、中身がどう動いているのか、に興味が向かなくなるのを危惧しますので。
してみると、BASIC がもどかしくてマシン語やらコンパイラ言語やらの本を読み漁った '80 年代と言うのは良い時代だったのかなあ、と。
LEGO (スコア:1)
LEGO [lego.com]もお忘れ無く。:-)
センサーやモーターがあるので入出力が学べます。
分岐やループのような基本的な制御構造もあります。
既製のソフトに飽きたらH8マイコンのファームをいじるという濃いぃ道もあります。
中高生には(いや大人にも)理想的な教材ではないでしょうか。
Re:LEGO (スコア:0)
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:プラットフォームに非依存といってもなあ (スコア:0)
「BASIC がもどかしくて」のくだりにはおおいに賛成します。足りないものを補うというスタート方法は自分の中のイマジネーションも刺激するし、現実的な問題解決能力という意味でも十分に
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)
squeakって (スコア:0)
うーん、さわってみても悪くないのかな、squeak。
Re:squeakって (スコア:1)
Re:squeakって (スコア:1)
オフトピですが、道具繋がりで、
分析・設計ツールとしてのSmalltalk [sra.co.jp]って話が有るそうです。
たしかに、あれくらい柔軟な道具(言語までついてる(笑))だと、こう色々なことに活用できそうですね。
しかも何をやっても永続化をデフォでやってくれる(んでしたよね)から、
ほんとに「ものを作った」という感じになりやすいんだろうな。
#テキストの替わりにビジュアルを、Lispの替わりにOOPを、搭載したEmacsみたいなものか。
##俺Emacsも使ってないですけど。
rubyとかも言語そのものは十分OKなんだけど、その言語を走らせて作ったモノを保存するとか表示するとかという面では
(デフォでは)あんまり強くないんで、まあ…
Re:squeakって (スコア:0)
ま、それは置いといて。使いものになるものっていうと、Web サーバなんか実際に動いてますね。その上で ComSwiki って Wiki が動いてます。この辺り [dyndns.org]とか詳しいです。
Re:プラットフォームに非依存といってもなあ (スコア:0)
環境ベッタリな BASIC から C を教科書で勉強したときにまさにそれを感じました。「なんだこの何もできねー言語は」と。で、面白くなかったので基礎を勉強しておしまいでした。(メモリをガリっといじっちゃう喜びはそのときは分からなかったし、今はむしろそんなことしたくない。)
アレゲ的に言っちゃえばですよ、やっぱ
Re:プラットフォームに非依存といってもなあ (スコア:1)
>で基礎を勉強しておしまいでした。(メモリをガリっといじっちゃう喜びはそのときは分からなかったし、今はむしろそんなことしたくない。)
まあ人によって興味は色々なんでしょうね。
俺はBASICからCにいったときに、「関数が作れる」「ローカル変数が作れる」「行番号が要らない(同じ&もっと便利なことは、括弧があれば出来る)」
などなどといった点に喜んだ記憶があります。
頭悪い俺としては、BASICだと数百行書いただけで、もうそのスパゲティぶりに自分でついていけなくなりましたんで、
もっと楽な言語が欲しいなあと思っていたところだったので。
まあBASICがポケコンのだったせいも大きいですけどね。画面が狭いので尚更見通しが悪いとゆー。
「何も出来ない」を怒った記憶は、あんまり無いです。見た目(笑)を気にしない奴なんで。
いじる対象については、今は特に、高級化してるんで嬉しいですね。
つまり、メモリはいじらないけど、オブジェクトや関数(こちらはCの関数じゃなくLispのほうの)という
もっと高級な奴をいじる「たのしみ」が有るわけで。
#それらが実用をも兼ねているのも、昔と同じ。
Cについては、使い始めてしばらくして「関数ローカルだけど、寿命は関数に束縛されない、という変数が欲しい(のに無い)」というのが
悩みになりはじめました。これって今にして思えば、オブジェクトだったり(Lispの)関数だったりするです。
>便利すぎなければいいんじゃないですかね。もっと便利なものはないのか、もっと楽をする方法はないのか、調べているうちに他の環境にも目が行くと思うし。
それは言えてますね。
といっても、本当に欲深い(笑)人は、どこまで与えても「もっと便利なもの」を求めるかも知れませんが。
#貪欲で傲慢であることはHackerの必要条件、でしたっけ?(^^;
Re:プラットフォームに非依存といってもなあ (スコア:0)
ってそれはstatic変数では?
Re:プラットフォームに非依存といってもなあ (スコア:1)
ごめん。コレじゃ確かにそうですね。一言(?)抜けてました。
「更に、それを「他の関数(処理)」からもアクセスしたい」という更なる要求を書き忘れていました。
たとえば、ある関数を呼ぶたびに、内蔵のstatic変数の力を使って、
呼び出しごとに「1づつ勝手に増加する値」を返す関数、ってのは
作れるわけですが、static変数を使う手口だと、他のアクション、例えば
「値を初期値にリセットする」とか「値を逆に減らす」とかいうアクションを
用意する(そして呼べるようにする)すべは、無いわけです。
こりゃ使えないなぁと。
で、構造体ポインタを渡して云々、という似非OOPの道に踏み込んでいくわけです。はい。
Re:プラットフォームに非依存といってもなあ (スコア:0)
それってその変数を共用する関数をモジュール(ファイル)に分離してstaticな変数にすれば良いのでは?
というような突っ込みはG7さんには無粋な突っ込みだろうし、これとていつもうまく行く訳ではないという事は承知しています。:-)
>で、構造体ポインタを渡して云々、という似非OOPの道に踏み込んでいくわけです。はい。
私も
Re:プラットフォームに非依存といってもなあ (スコア:1)
>というような突っ込みはG7さんには無粋な突っ込みだろうし、これとていつもうまく行く訳ではないという事は承知しています。:-)
あはは。またしてもその通り。
で、構造体ポインタ方式(?)にすると、モジュールとかいう無粋(ぉ)なものとの決定的な違いとして、
「インスタンス」
という概念を持ち込めるようになり、それがもう絶大に便利というか、世界観からしてスッキリする
(ここでスッキリと感じる人はOOPに馴染み易い人だと思う)というか…なので、
モジュールなんて目もくれませんでしたね。
「いつもうまく行く」とかいう問題じゃなく、もう「昔(?)にゃ戻れない」という。
>理想的ではないにしても現実的な解の一つだと思うんですがねぇ>C++
うーん。C++って、「駄目」な部分や「便利だけど気味悪い」部分が多すぎて、
俺としてはやっぱり嫌いな言語に分類されますね…
しばしば言う(というか他の人も言う)ことですが、C++とObjectiveCの間くらいの言語が有って、
しかもそれがポストC(OOP拡張)として市民権を得ていてくれたら、良かったんだけどなという印象。
あと、OOPってやっぱり、ガベコレの有無で、そのやり易さが大きく変わってしまいますね。
いくらJavaがC(++)と似てるといっても、Javaと同じことをC(++)でやるのはかなり無理。
Re:プラットフォームに非依存といってもなあ (スコア:1)
激しく同意。
少なくとも、教育を受ける時点では間違いなくそうでしょう。
必要性に迫られていない以上、使うこと自体に興味を抱ける言語でないと、習得も遅いものになるでしょう。
そういう意味では、JavaScriptや各種アプリのマクロから入ったっていいんじゃないかと思います。
#ただ、僕的には、Rubyが推奨ですが。
#ともかく思ったことが形(?)になるというのが良いと思うので。
Re:プラットフォームに非依存といってもなあ (スコア:0)
同意。ブラウザとテキストエディタの入ってないPCは少ないし。
#JS非採用のブラウザはごめんしてもらうけど。
まぁ、純粋に言語として考えると色々最低な点もあるけど、融通が聞く点も多いし。
なんとなく昔BASICとか触ってた感触を思いだすのね>JS
何気に動的に関数創れるし、アルゴリズム次第で処理が大化けする。
後先考えずに書いても、それなりに行けるので、楽しいちゃ楽しいですよ。
クラスの実装と
Re:プラットフォームに非依存といってもなあ (スコア:0)
たとえば,クイックソートのアルゴリズムを実装することは車輪の再発名だけど,クイックソートすら自力で実装できないやつと一緒に仕事はしたくない,みたいな。
ある程度貧乏な環境で学んで,不満を解決する策は自分で探す訓練をするのが良と思うですよ。
Re:プラットフォームに非依存といってもなあ (スコア:0)
#自分がやったから素晴らしいというのは発想として著しく貧困。