12/05/14 12:34:35.56
昔は Delphi が人気あった
951:デフォルトの名無しさん
12/05/14 13:14:44.46
>>950
私もDelphi6 personalを使おうと思ったんですけど、インストールが出来ないんですよね。
インストール番号とインストールキーをどうやって入手できればいいのかわからないです。
ボーランド社にメール申請すればいいとかネットでは書いてるんですけど、そのアドレスが無効になっていたり。
952:デフォルトの名無しさん
12/05/14 13:21:40.90
Delphiは最新版が1万ちょいで買える
それすら払えないなら素直にC#Express使っとけ
953:デフォルトの名無しさん
12/05/14 18:49:21.32
>>923
本当に娘さんのことを考えるなら、HaskellかPrologを勉強させた方がいいと思いますけど。
954:デフォルトの名無しさん
12/05/14 19:17:38.86
>953
思わず笑ってしまったw
何でだw
955:デフォルトの名無しさん
12/05/14 19:56:43.71
PerlのCPANとかRubyのonRailsみたいなものは、全てPerlやRubyだけで書かれてるのですか?
スクリプト言語だと、あまり凝ったことをやろうとするとアセンブラやC言語を書かないといけないのではないか?と思うのですが
956:デフォルトの名無しさん
12/05/14 19:59:40.28
>955
gdライブラリとかImageMagickみたいに
バイナリで提供されてるライブラリを使うこともあるよ。
957:デフォルトの名無しさん
12/05/14 20:01:45.93
>>925
ありがとうございます、近くのスクールの体験にとりあえず行ってみるそうです
>>926
私に言っているのでしょうけど、いちいち打つのが面倒なので、
たいてい前の人の文章からコピペするのでそうなります
>>944
ご丁寧にいろいろ調べて下さってありがとうございます
オーロラクロックはきっかけに過ぎず、「自分はプログラミングに向いているように思う」
と言っているので、もうちょっと本格的にやりたいみたいです
JavaScriptを学びながら、興味の方向性を見つつ、対応していきたいと思ってます
C言語もとても良さそうですね、娘は数学が得意なので、
紹介された箇所もなんとか理解できると思います
>>953
今は何もかも新しい言葉ばかりですが、落ち着いたらいろいろ考慮していきたいです
958:デフォルトの名無しさん
12/05/14 20:03:58.73
全てPerlやRubyだけ
gdライブラリとかImageMagickは元々バイナリ
onRailsと無冠例
959:デフォルトの名無しさん
12/05/14 20:04:22.30
>>953
学があるヤツなら教えんでも覚えるだろ
高専とかプロコンとか優勝するのは関数型が多い
関数型に行くかは自主性に任せときゃいいだろ
本人の判断でセンスがあるかどうかわかる
960:デフォルトの名無しさん
12/05/14 23:04:01.93
高専でもロボコンのプログラミングをするようになると、Cだろうなあ。
961:デフォルトの名無しさん
12/05/14 23:28:32.33
>>956
>>958
ありがとうございました。
するとPythonみたいに言語のほうでメソッド少なめらしい(?)ものは、できることとの幅が小さくならないのですが?
962:デフォルトの名無しさん
12/05/14 23:34:27.68
馬鹿には無理
963:デフォルトの名無しさん
12/05/15 00:21:59.89
だなw
964:デフォルトの名無しさん
12/05/15 01:27:41.07
>>957
自分も関数型言語(主にHaskell)はアルゴリズムの勉強に最適だからお勧めしたいけど、広くは使われてないから、一度何らかの言語で挫折したらで良いと思う
よく使われてる言語を使いこなせてる人は、最初から、抽象的に考えて、それをどうコードに落とすかが分かってるんだと思う
関数型言語は、その抽象的な考えを、ほぼそのままコードに落とせるから、本当の意味で初心者向け
実際によく使われてる言語(手続き型やオブジェクト指向)でも、結局コードを良く見ると同じ事してるって分かるんだけど、if文やfor文でアルゴリズムをそのままではなく、変形させられてるので、アルゴリズムそのものはどう言う構造なのかが見えにくくなる
(この、見えにくい構造を手続き型やオブジェクト指向で、すでに見えてる人には関数型言語は勉強する必要有るのか?と言う疑問もある)
なにはともあれ、娘さんがJavaScriptをもうちょい頑張るといってるなら、JavaScriptで頑張らせれば良いと思う
何か、挫折しそうになった時に、一旦Haskellの勉強を通じて、挫折した処理がどう言う構造の処理なのか理解してもらって、またJavaScriptに戻れば良い
965:デフォルトの名無しさん
12/05/15 01:34:03.85
もっともらしい事言ってるが嘘っぱち
アルゴリズムの本に載ってる疑似コードは必ず手続き型風だから
それで理解すればいいし、むしろ関数型でアルゴリズムを理解する情報は非常に少ないし
そもそもコーティングの段階において理解しやすくない
966:デフォルトの名無しさん
12/05/15 01:39:47.95
変則的な最近の言語をよりも、昔からある C で学べばいいよ。
そうすれば他の言語の長所短所が分かりやすい
967:デフォルトの名無しさん
12/05/15 02:11:27.06
Cはメモリ、ポインタ管理を自前でやるところが勉強でも実用でも最高の特徴だろう、データ構造も実装しやすい
後は高速なくらいで、他と比較すると少機能過ぎてストレスが溜まるだけ
今日日なんでも自前で作るプログラミングは時代遅れ
968:デフォルトの名無しさん
12/05/15 09:32:21.74
>>965 はもっともらしい事言ってるが嘘っぱち。
Knuthが疑似コードを手続き型の権化である機械語(MIXとかMMIXという
そのために設計した仮想機械)で説明しているが、とても理解できたもんじゃないから。
初歩的なアルゴリズムの理解なら、再帰が自然に書ける関数型のほうが良い。情報も多いし。
ロックフリーとかそういう高度な技法になってくると、手続き型が必要になってくるけど、
必要になったら勉強すれば良い。
969:デフォルトの名無しさん
12/05/15 09:43:49.68
手続き型のほうが人間向き。
手続き型だけど関数型のような書き方も使える言語が優れてる。
970:デフォルトの名無しさん
12/05/15 09:43:55.84
>>965
コードが書かれていようがいまいが、関数型言語には問題ありません
どう言う処理をするかが書かれていれば、そのままコードにできますから
実際、私がマージソートを理解したのは、「アルゴリズム」のキホン (イチバンやさしい理工系シリーズ) と言う、手続き的な手順(コードは一切でない)と処理の様子を図で書かれているだけの本を読んで、
Haskellでマージソートを書けましたし
コードが載ってても、コードが何をやってるのか分からず、丸写しとかしてたら、意味がありません
繰り返しますが、最初から現在主流の言語で、コードを自分で書けるだけの抽象的な考え方が出来てる人には必ずしも必要な言語ではないです
そう言う、コード付きのアルゴリズム本を読んでも理解できなかったら、一旦Haskell覚えて再チャレンジをお勧めします
関数型言語の方が本当の意味で初心者向けの言語では有っても、現在主流の言語(手続き型言語)は何かしら必ず覚えないといけない物ですし
主流の言語だけでプログラミング能力が伸びるなら、それに越したことは無いです
971:デフォルトの名無しさん
12/05/15 09:52:39.59
純粋関数型
Haskell - Wikipedia
Haskellは非正格な評価を特徴とする純粋関数型プログラミング言語である。
批判
Haskellは他のプログラミング言語には見られない多くの先進的機能を持っているが、
これらの機能のいくつかは言語を複雑にしすぎており、理解が困難であると批判されてきた。
Haskellの潔癖さとその理論中心の起源に起因する不満がある。
972:デフォルトの名無しさん
12/05/15 10:20:37.82
JavaScript Programming
クラスのないオブジェクト指向
オブジェクト指向にはいろいろな考え方があり、クラスが存在しないオブジェクト指向言語もあります。
これを「プロトタイプベース」といいます。代表的な言語として Self や JavaScript があります。
プロトタイプベースのオブジェクト指向機能はとてもシンプルです。
たとえば JavaScript のオブジェクトは単なるハッシュにすぎず、オブジェクトに関数を格納すればそれがメソッドになります。
JavaScript は関数をオブジェクトとして扱うことができるので、関数型言語のように関数を変数に格納したり、引数として関数を渡すこともできます。
JavaScript はクロージャのような関数型言語の機能とプロトタイプベースのオブジェクト指向機能を備えていて、
これらを組み合わせることで柔軟で高度なプログラミングが可能になっています。
JavaScript はたんなるマクロ言語ではなく、まっとうなプログラミング言語だったのです。
URLリンク(www.geocities.jp)
高階関数
JavaScript はプロトタイプベースのオブジェクト指向言語ですが、関数型言語の機能も備えています。
JavaScript は関数をオブジェクトとして扱うことができるので、関数を変数に代入したり、引数として渡すことができます。
また、値として関数を返すこともできるので、関数を作る関数を定義することも簡単にできます。
関数を引数として受け取る関数を「汎関数 (functional) 」とか「高階関数 (higher order function) 」と呼びます。
JavaScript は高階関数を簡単に定義することができます。
今回はよく使われる高階関数として、マッピング、フィルター、畳み込み (縮約) について説明します。
URLリンク(www.geocities.jp)
973:デフォルトの名無しさん
12/05/15 11:22:11.97
>>969
同意。多少トリッキーにはなるが便利
決して初心者向けではないが、無理なら全部手続き型みたいに書くことも可能だしな
974:デフォルトの名無しさん
12/05/15 12:19:14.70
Prologだって全部手続き型風に書くことはできる。旧き良き時代のモジュラープログラミングの極意として。
975:Prolog工作員
12/05/15 12:27:01.16
>>974
集約は再帰なしでは書けないよ。再帰と手続き型は矛盾しないのかも知れないけど
976:デフォルトの名無しさん
12/05/15 12:35:55.44
>>967
実践はともかく、プログラミングの学習においては、基本的な関数を自作するのは重要だと思う
それはともかく、Haskellと比較用にRubyでlength関数作ろうとしたら配列はeachメソッドで各要素にアクセスできるが、文字列はeachは行単位で、文字単位にはeach_charを使わないといけないのが分かったんだが、それだと配列と文字列で別々にlength関数作らんといかんの?
ダックタイピング出来るのがLLの利点じゃなかったのかと言いたい
(しかも、1.9からは文字列のeachも廃止になるのでeachの構文糖衣であるfor文が文字列で使えない)
以下のコードは配列だと正しい結果を返すが、文字列だと1.8系だと正しくない結果を返し、1.9系だとエラーになる(eachメソッドが無いぞゴラァ!と怒られる)
def mylength (str)
sum = 0
for i in str
sum += 1
end
return sum
end
Ruby詳しくないとは言え、この動作がおかしいのだけは理解できる
977:デフォルトの名無しさん
12/05/15 13:29:26.25
どこもおかしくないが。
978:デフォルトの名無しさん
12/05/15 13:46:31.08
>>977
仕様通りと言う意味ではおかしく無いんだろうが、pythonでもCでもhaskellでもjavaやC#でも、文字列に対するfor文の動作は一文字ずつアクセスする事だ
そもそも文字列にfor文が使用出来ない仕様って時点でおかしい
979:デフォルトの名無しさん
12/05/15 14:03:21.93
>>978
20年くらいCは使っていないので質問させていただきますが、最近のCでは文字列に
対して、特別な動作をするforが存在するのですか?
980:デフォルトの名無しさん
12/05/15 14:06:47.26
そもそもC言語に文字列型なんてないからな。charの配列はあるが。
981:デフォルトの名無しさん
12/05/15 14:28:26.83
>>979
無いよ
ただ文字列(CとHaskellでは文字の配列だったりリストだったりするだけ)を各要素ごとにアクセスする=一文字ずつアクセスするって考え方はRubyを除いてどの言語も同じってだけ
Ruby1.8だと>>976のコードに"Hello\nWorld!!"を与えると2が返る
Ruby1.9だとエラーになる
他の言語だと、ちゃんと13が返る
C言語版
int my_strlen(char str[])
{
int i = 0;
for( i = 0; str[i] != '\0'; i++ )
;
return i;
}
python版
def mylength (str):
sum = 0
for i in str:
sum += 1
return sum
haskell版
mylength [] = 0
mylength (x:xs) = 1 + mylength xs
982:デフォルトの名無しさん
12/05/15 14:47:36.52
size使えバカ
983:デフォルトの名無しさん
12/05/15 14:50:16.21
>>978
BASICも文字単位のアクセスや長さの取得に関数を必須とするが…
文字列を文字の集合と考える言語か否か、の差じゃね?
Rubyはそう考えず、文字列とはテキストであると考えて来たから
テキストに対するeachは行単位だったのだろう
984:デフォルトの名無しさん
12/05/15 14:53:04.71
ダックタイピングができると、なんでString#eachがcharAt()的な動作をしないといけないのかがわからん
985:デフォルトの名無しさん
12/05/15 15:18:39.49
アルゴのコードが見える人がなんでHaskell覚えんにゃならんの?
986:979
12/05/15 15:33:57.31
>>981
そのC言語版 forと関係ないのではないかな。
987:デフォルトの名無しさん
12/05/15 15:38:38.95
>>976
言語仕様や使用用途や設計目的(ゴール)は、HaskellとRubyで比較で出来るほど似てるんですか?
988:デフォルトの名無しさん
12/05/15 15:47:47.20
>>983-984
個人的にはeach_lineがあるのだから、eachがforの構文糖衣と言う事を考えると、やはりeach_charの別名としてeachは定義する方が自然だと思う
なにより問題はforがeachの構文糖衣であるが故に、文字列のeachが1.9で廃止になったせいでforが文字列で使えなくなった事
文字列のeach廃止にするなら、その辺考えとけよ。と
Ruby(まともに動かなかった)のコードをPythonでほとんどそのまんま書いたら、普通に動いてるし・・・
(というか、文字列を文字の集合と見る言語の方が上で具体的に言語名上げた通り、多数派だ)
Rubyで配列も文字列も統一的に扱える関数って、Pythonよりも作りにくいんじゃなかろうか
989:デフォルトの名無しさん
12/05/15 15:48:19.28
>>985
逆、見えない人がHaskell覚えれば見えるようになる
990:デフォルトの名無しさん
12/05/15 15:53:35.08
>>988
そもそもString#eachはString#each_charとは別物だし、「僕が考える自然」なんかどうでもいいし
991:デフォルトの名無しさん
12/05/15 15:56:30.67
Haskellは言語仕様も機能も先進的で興味あるんすが、いかんせん日常的に使うところがないので覚えても使い道がくすぐ忘れてしまいます。
Ruby,Java,JSなど普通に使える人にとって、Haskellが有用な使い道は現在ではどういうのがあるのでしょうか?(あるならちょっと触ってみようと思います)
992:デフォルトの名無しさん
12/05/15 15:59:31.48
文法はどうでもいい。
Haskellでさえ、元はC/C++のソースなんだろ。
C/C++が出来ればゼロからHaskellが作れる。
速度を気にしなければ逆も成り立つが。
993:デフォルトの名無しさん
12/05/15 16:00:10.14
>>987
どっちも汎用言語なので、まあ、同じゴールは目指してるといえる
今回の件で、少なくとも、Rubyは学習用途じゃ向かないのは分かった
994:デフォルトの名無しさん
12/05/15 16:02:03.63
>>991
その言語を愛して、すべての事に使ってみる以外に、ないのではないかな。
どの言語でも同じでしょう。
995:デフォルトの名無しさん
12/05/15 16:04:29.23
キラーアプリがないから使うタイミングなんて無い
普段使いなら単純に好き嫌いの問題であり
最近のLLは関数型的にも書けるから、殊更に純粋な関数型を好むのはちょっと変わった人間が多い
あるいは変わった人間になりたい中二病が好む
996:デフォルトの名無しさん
12/05/15 16:05:38.58
>>988
Rubyじゃなくてそも元になったPerlに言えよ…
Perlの文字列は配列ではないぞ
997:デフォルトの名無しさん
12/05/15 16:05:52.99
楽して生産性が高かったら良い。
C/C++やC#やPHPやPerlあたりは装備が色々とあって、
どれだけ文法に優れていようとも生産性で抜く事は難しいだろ。
998:デフォルトの名無しさん
12/05/15 16:06:16.01
>>993
つまり文字列を文字の集合として扱わないBASICは、教育用途に向かないと?
999:デフォルトの名無しさん
12/05/15 16:09:09.29
次スレ建てろよ
1000:デフォルトの名無しさん
12/05/15 16:17:45.77
>>993
汎用言語なら汎用性高いはずですが、Haskellは何に向いてるんですか?
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。