全てはアセンブリに帰す
c++やperlで難読なコード書くのが楽しいよね
4 :
デフォルトの名無しさん :2011/05/15(日) 01:13:12.67
>>1 乙w
立てようとしたけど立てれなくて代行依頼したw
今からキャンセルしてくるわw
6 :
uy :2011/05/15(日) 01:19:29.05
楽しいって、 自分は読めるけど、誰も読めないようなソースコードかいてるときのこと? それはある
>>6 お前のコードはコンパイラですら読むことができずに困っているからな
シェルスクリプト
010101001010100111010010010100110100101010010001001001001010010101100101010001010101010010101101?
10 :
デフォルトの名無しさん :2011/05/15(日) 03:04:15.83
Ruby
JavaScript楽しいよ。 よく出来てる。
JavaScript勧めてくるやつは頭に何かの疾患抱えてると思う
JavaScriptは手軽で良いよね ストレス無くコーディング出来る
Qt も全力で JavaScript を採用するレベル
やっぱりスタイルが一貫している言語が楽しいね Forth : 何でもスタック Lisp : 何でもリスト Scheme : 何でもラムダ Tcl : 何でもコマンド JavaScript : 何でもハッシュ Smalltalk : 何でもオブジェクト
C: なんでもスカラ
C++ : 何でもごちゃ混ぜ
Rubyもメソッド以外はオブジェクトじゃね
Pythonは何が一貫しているの
記述の美しさ
記述の美しさとゆったらLispじゃないの
記述の美しさ WS BF Lisp 正宗 昔はobject pascalなんかも良いと言われてた気がするが死んだ
Haskell も美しいフォルムを持ってる
ホットな技術を直ぐに試せる言語はいいな。 クラウドがはやってるけど、試そうと思ったらJavaかPythonになっちゃう。 ちょっと遅れて他の言語でも使えるようになるけどこのタイムラグは大きい
初心者で1スレ目からロムってるけど、スレ覗くたびに意見が違ってて何から始めたらいいかほんと分からないw 少し前にJavaScriptが絶賛されてるかと思えば、次に覗いたときには大バッシングされてたり
>>27 楽しい言語と、始めるのに良い言語とはまた違うよ
>>27 ジャップは自分の意見という物が無く、非常に流されやすい
誰に流されるかと言うと
どっかの英語喋るオッサン達
初心者に勧めるのはpython
同じ動作=同じ見た目になりやすいのはソースコードから学びやすいのではないかという学習面の楽しさから
やってて楽しいをどう考えるかによるが
・難解で本格的、正統派っぽいのが楽しいという変態
・素人でもエレガントに記述できそうだ
・目的に一番早くて達成できるから楽しい
何が楽しくてやろうと思ってるか言わないと助言のしようがない
何が分からないのか分からない
楽しいというのは人によって違うんだから人に左右されるのはおかしい
>>27 現在プログラムしてて楽しい言語を挙げているだけで、
べつに入門言語を紹介してるわけじゃないからな
今楽しすぎても、初心者にはお勧めしにくい言語もある
Haskellとか
C#、java、javascript、actionscript(1.0)は記述が似てるので はじめの一歩にすると手を広げやすくなる ゲーム作るならアドビFlash(actionscript)がVisual風にグラフィカルにいじれて良い
>>27 javaScriptは処理系を用意しなくても、ブラウザさえあれば、プログラミングを始められるという意味では、初心者向き
文法としては別に初心者向けじゃないよ
文法としてはlisp系やhaskellの方が分かりやすい
(ただ、日本語の入門書が少ない)
初心者向けとか関係なく、情報を入手しやすい言語は、javaScript、python、ruby、java、c#、c、c++辺りかな
基本的に初心者向けはどれだろう。。。とか、考えるだけ無駄
>>26 GAEだけがクラウドだもんね^^わかるわかる^^^
直ぐに試すという話だから、やっぱり GAE の存在は大きいでしょ GAE は Java と Python だけじゃないけど
>>36 それはブラウザが有れば動くって言うポテンシャルだけが取り柄って事でも有るんだけどね
他の言語も、ブラウザ上でjavaScriptと同じ扱いになれたら、選択肢が広がって楽しいんだが。。。
>>37 「だけが」って所は貴方個人の見解でしょう。訳知り風に言っても筋は通らないよ。
それと、JavaScript にコンパイルする言語は幾つかあるから、探してみるといいよ。
>>37 ブラウザが有れば動くって言うポテンシャルだけが取り柄って事ならば、
他言語でも JavaScript へのトランスレータ作ればいいだけとちゃうか
ブラウザ上でPythonが動けばいいのに(´・ω・`)
インデントを気にする言語はブラウザには向いてないわな
最近MacでObjective-Cやったら結構面白かった…。
>>41 どういうこと?
Webブラウザのフォントはプロポーショナルだから、
インデントが揃わない可能性があってコードが見難いということ?
それでも意味が全く分からんが
HTTPでは複数のスペースは基本無視されるからだろ。インデントは消えてしまう
トランスレータ作れって言ってる奴で実際作ってる奴なんているの? おれはJavaからC++,javascript,actionscriptってつくったけど。
連続する空白の圧縮は HTML ファイルの軽量化の基本だし。
>>44 それHTTPの仕様じゃなくてHTMLの仕様でしょ
そのHTMLですらちゃんとソース上ではインデント残ってるワケだし
改行どうすんの?
>>48 どうすんの?ってどういうことよ
何を問題に思っているのかが分からないのだが
そもそも、
>>40 に対する
>>41 の返しの意味が分からんぞ
ブラウザ上でPythonが「動く」こととインデントとの関係は?
Python の人は他の言語を羨ましがる必要ないのにね(´・ω・`) QML は JavaScript だし、ウェブブラウザも JavaScript それはもう動かし様が無いの ウェブプログラマだって本物のクロージャは欲しいし、当たり前に JIT が無いとやっていけないし、HTML ファイルが空白文字の数に 左右されたら軽量化が面倒だし UN*X 系の OS でデフォで入ってるとか、GAE で簡単に使えるとか、 Python は Python の良い所をのばしたら良いと思うの インデントが好きなら CoffeeScript を使ったら良いんじゃないかな
>>52 別にHTMLが空白文字の数に左右されようと軽量化はそんな難しくないよ
要は<script language="Python" src="foobar.py" />ってやればいいだけでしょ
えっ
>>53 出来るかどうかじゃなくて、実効性がどのくらいあるかを考えてごらん
ぐーぐるさんがファイルの圧縮にどれだけ力を注いでいるか調べてみると良いよ
そもそも HTML なのに改行に依存するデータは歓迎されないんじゃないかな
誰かが出来ると思っても、他のみんなが嫌がる事はやらない方が良いよね
>>56 ならVBScriptとかどうなるんだ、利用価値はともかく一応IE用として存在はしてるはずだぞ
>>57 VBScript って何?
それって何か重要な技術なの?
ん…重要であることが前提だったのか?それはすまなんだ
できねーよ。まさにJavaScript教信者って感じだな
javascriptでOS作ろうと思ってます
中々面白い試みだな
GoogleやMicrosoftがWeb上で何でも出来るようにしようとしてるが それでJavaScript万能とか言い出すのは勘違い甚だしい
>>36 これなに?初心者の俺には何が凄いのか分からないw
そのウェブ至上主義は何?
わざわざブラウザで動く必要もないな、と思いました
ブラウザごちゃごちゃしてて重いし クライアントとしては最悪じゃないか…
?
74 :
デフォルトの名無しさん :2011/05/18(水) 10:58:18.62
そういうののJavaScriptはインターフェイスを制御してるだけ ブラウザやサーバに組み込まれたモジュールはJavaScriptじゃない
C#が1番楽しい
>>74 「そういうの」が何を指しているのか知らないけど、WebGL はシェーダーも書けるし、
Canvas はピクセル単位の情報にもアクセス出来るんだけど、「インターフェイスを
制御してるだけ」ってどういう意味で言ってるの?
サーバサイドはjavascriptじゃないってことだろ
>>68 上は JavaScript で x86 マシンをエミュレートして、その上で Linux を動かしている
x86 エミュレータの歴史を紐解いたら必ず名前が出て来る Fabrice Bellard というプログラマが書いたプログラム
ブラウザ上で動く QEMU みたいな物
下はデスクトップ環境を丸ごと JavaScript で実装している
GUI の歴史を紐解いたら必ず名前が出て来る Dan Ingalls というプログラマが書いたプログラム
ブラウザ上で動く Squeak みたいな物
どちらも、JavaScript でも、ある程度複雑な物がある程度の処理性能で実装出来る事を示している
Javascript楽しいよ。つーかブラウザ上でのプロトタイピングが楽しい。 UI仮組みすぐだし、ブラウザある環境ならどこでもコーディング可能。 やろうと思えばスマホでもできる。 実際にはスマホ上では作ってないけどスマホ用の簡単なツールとか楽しすぎる。 昔は何でもC/C++でやってたけど今はJava中心にC++とJavascriptも使ってる。
JavaScript を使うと、簡単なプログラムを作るのは本当に簡単だよね 形になるのが早いから、プロトタイピングにはとても適してる 加えて、複雑なプログラムもそれなりの労力で作れるのが良いね 昔と違って処理速度やライブラリの充実度合いもかなりの域に達しているし
JSの布教活動はもうそのへんでやめとけ。JSが何をしてるのか全く理解できてないのが丸わかりだぞ JSで何でもできてしまったらWeb閲覧のセキュリティが崩壊するわ
>>82 最早ウェブブラウザ上だけの言語という訳でもないですし、
そう拒絶する必要も無いと思いますよ
とりあえずデタラメ書き込むのはやめろ
>>84 もし本気でそう思うなら、きちんと具体的に指摘した方が良いですよ
「JavaScriptで実装」とかだよ
「WebGLがJavaScriptで動いてる」とかもだな
>>86-87 レス番込みで、何を問題と思ったのか書かないと誰も分からないよ
真っ白ですが?
熱烈なアンチの方がいるみたいだけど、結局の所、具体的な問題点の指摘は何もないのね
指摘してるのに無視だもんなwまともに会話が成り立つ気がしないw
JavaScriptはセキュリティ上オフにしてる。それが普通だと思うが
指摘ってどれよw
いまどきJavascriptオフでまともに見れるサイトってあるの?
JavaScript は、 わかり易い言語だからプログラマも沢山いて ウェブアプリが成長分野になっていて jQuery や YUI を筆頭に便利なライブラリが沢山あって V8 や JavaScriptCore みたいな莫大な開発費が投入されている処理系があって JIT があるから実行速度が高速で 殆どのサイトで使われていて イラストレータや PDF にも組み込まれていて Qt では次期リリースで第一言語にリストアップされていて Node.js みたいにサーバサイドでも使う事が出来て Titanium みたいにマルチプラットフォームの開発でも使えて プロトタイプ指向だから既存のオブジェクトの拡張が簡単で 本物のクロージャもあってプログラムを書くのが容易で Flash と違って IOS でも実行出来て ブラウザがあれば動くからプログラムをテストするのも容易で AJAX や JSON のおかげで JavaScript の適用範囲が広がって HTML5 によってグラフィックや通信等の高度な処理も可能になって WebGL によって 3D のプログラミングも高速に処理出来て まさに素晴らしいとしか言い様が無い
とっつきやすいがわかりやすくはない。特殊な言語。面白いけど。
だからなんで「WebGL によって 3D のプログラミングも高速に処理出来て」みたいな勘違いを延々たれ流すわけ?
JavaScriptはセキュリティ上オフにして 信頼性のあるサイトでのみアクティブXとセットでオンにする
IEっすかそっすか
アクティブXは絶対にオンにすべきじゃない
なんでちょっと流行るとすぐ信者みたくなる人いるんだろう。
ジャップは流されやすいからな
C++が無いと業界成り立たねーぜ! Rails最高!!Ruby最高!!! 世界はObject-Cで完結した!! Javascript!!!!!! ←今ここ Perl6は言語を超えた文化! ←次ここ
糞言語の代名詞みたいなperlが何か変わるの? 今までの言語仕様を捨てて可読性が向上するとか?
Perl6は互換性のない仕様変更であることは確かだが、多分普及しない
perlは他の言語とは比較対象にならない至高の存在 赤木しげる登場前の鷲巣様みたいなもん
>>108 つーかperl使いがもう少なくなってきているだろ
結局糞言語の吊るし上げにしかならんのなこのスレ
Perlはどんどん覚えることが増えてくのがなあ C++も真っ青の複雑言語と化しつつあると思う
まあツートップって所だな
Perlの節操の無さは酷いけれど それが特長でもあるからな。
>>106 はトンデモ言語集みたいな感じなのか?
どれも一部で高評価されつつ総評としては失笑されてる気がするが
そりゃ全言語に共通するわ
全部って
119 :
uy :2011/05/20(金) 08:24:00.87
>>115 言えてる
あの複雑さが癖になってる奴が、いつまでもPerlを使い続ける
今でもRubyより、Perlのほうが少ない文字数でプログラミングできるしな
覚える気しないけど、既に覚えきってる奴だとRubyがオモチャに見える可能性はある
>>113 C++とPerlは複雑さのベクトルが違うぜ
C++が複雑なのは、コンパイラ言語に似合わない事をやってるからだ
C、JAVA相当の普通のコンパイラ言語として使っていく分には複雑にはならない
ちょっと遊び始めると、メタと、コーディングの二つを同時にやっていくことになるから、スクリプト言語の2倍複雑になる
MathがRubyにマクロ入れたがらない理由は、C++のそういうところを嫌ってると予想する
まぁ、#define か、Template か、 または独自のマクロを実装するにしても、スクリプト言語だったら
evalでマクロ相当の事は出来るはずだからマクロを無理に入れる必要はないとは思う、あったほうが便利だけど
120 :
デフォルトの名無しさん :2011/05/20(金) 15:11:36.35
uyがまともなことしゃべって なかった
jsは糞
と思いたかった...
が、本当にうんこ。
はっ、夢だったか・・・
javascriptは一人で書いてる分にはきれいに書ける perlは・・・
うんこ
JavaScript は奇麗に書ける
ほとんどの人はうんこのようなソースコード。
そんな中、JS を書いているプログラマだけは奇跡的的に奇麗なソースコードを、、、
JSってコードがびろーんって長くならない? 俺だけかな。
そしてそれをうんこにする人がいる。。。
>>130 一度 SML や Scheme をやって戻ってくると良いよ
長いコードなんて書けなくなる
クロージャー使わないと隠蔽化がまったくできないのはどうかと思う
クロージャ使わないとと言うより 関数スコープに統一されてるだけの話 嫌なら let を使えば良い
そういうことじゃないんだが
どういう事かは言わないんだが
とりあえずうんこだな。
さっさと行ってこい
構造化された区切りのよいうんこがでた。
>>133 >まったく
naming convention でも出来る
詰まるところ JavaScriptは綺麗なうんこだと
あながち間違いとも言えない表現だから困る
>143 作る人が下痢にしてる。
javaScriptは好きでも嫌いでも無いから、はしゃがれても肯定も否定も出来ないので反応に困る
全てのレスに反応しようとするのは、はしゃいでいる内には入らない訳ですね
最近のスクリプト系言語とか見てると何処までがプログラミング言語と言えるかという疑問が沸いて来る
チューリング等価ならオケ
<[+-.,]>
もちろんオケ
もちろん水洗トイレ。
プログラマーに作りたいソフトを日本語で指示してもプログラミング
それがチューリング完全である保証はない
人に焼きそばパン買ってこさせるのもプログラミング
仕様書もチューリング完全にしてください
仕様書とは四次元的な意識に依って記述された書であり、三次元的存在である我々には到底不可知
なら、しようがないな
プログラミング言語ってこんぴゅう太に命令出来なきゃだめだろ
printf("うんこ\n");
アプリのボタンをクリックするのとスクリプト書くのとは同じレベル
アプリと生命体は同レベル
他の言語のことは知らんが、少なくとも Haskell の場合は 命令だと捉えると泥沼にはまるな
ついにNemerleの正式版が出たけど試す猛者はおらんか
>>163 マクロ部分が癌になりそうな感じを受ける
ガーン!!!
2chVMで煽りコマンド打ってると 画面にムキー!!!って表示されて楽しいよ
>>163 マクロ部分がうんこになりそうな感じを受ける
168 :
uy :2011/05/23(月) 20:19:50.28
プログラミング自体がつまらない
楽しいよ
みんなの目を醒ますため
プログラミング言語じゃないけど、最近ブログやHP制作に興味があってHTMLとCSSを勉強し始めてる。 このスレの人達にとってはHTMLとCSSなんて意識がなくても書けるくらい簡単なものなんだろうけど・・・いやぁ〜ほんと難しい(;´Д`) WordPressやMovableTypeなんかで書いてあるHPとか惚れ惚れするほどキレイだもん。 自分もああいうキレイなHP作りたいけどまだまだ先が長そうだ・・・。 めちゃくちゃソースがキレイな有料テンプレートとかよく売ってたりするけど、このスレの人達ってみんな市販されてる有料テンプレート程度のソースなら簡単に書けちゃうくらい凄いの?
嫌味のつもりなんだろうけど、数値計算とか組み込み系をやってる人間にとっては全く必要の無い知識 最近はプログラミングと言えばWebプログラミグしか頭に無い人間が増えてるのか
実際増えてるだろうな コンソールも操作できない低脳が ちょっとjavascript触っただけでドヤ顔してるのが現状
>>173 いきなり数値計算や組み込みに手を付けて楽しいなと思う奴はかなり変わってる方だろ
Web系は環境の用意が手軽で結果が目に見えるから楽しみ易いだろ
>>174 こういうコンソール操作で脳味噌が止まってるおっさんが
変にこだわって5分で欲しいものに半日かけたりするんだよなー
他の方法なら5分なのに、コンソールだと半日かかる操作って何?
その半日が楽しければいいんじゃね
>>175 分かってないな
仕事は仕事できちんとするよ
その上で、普通なら5分でできる事を変にこだわって半日かけたりするのが
この上なく「楽しい」んじゃないか
アホなことを大まじめに仕上げる楽しさとか、
処理速度無視で徹底的に自分の美学にこだわる楽しさとか、
逆に美しさ無視で1クロック1バイトの節約にこだわる楽しさとか、
SIGPLAN や SIGGRAPH の論文を最速で実装してみる楽しさとか
そういう点で、君の言う手軽で結果が目に見える「Web系」言語より、
C や Haskell や Scheme なんかの方が何倍も楽しい
おまえにとってはな
>>172 自分が使える言語と大きく記述が違うものは
とりあえずは学習しなきゃ無理だろ
え、やだよ。C楽しいじゃん。 楽しくないやつがやる必要はないけど。
Cは進んで使いたくはない
スクリプト言語でバイト削って何が楽しいのよ
誰も頼んでないのに勝手にめんどくさい 泥被るポジションに付いておいて、 「あーめんどくせー」とか「○○氏ね!」とか言うのが その人の芸風なので、流してあげよう
数値計算こそがプラグラミングの醍醐味 Web系はもはやアプリのボタンクリックするのと変わらないからスレチ
なんつーか、特定の言語が嫌いって言うのは、個人の好みだから良いんだけど、○○言語消えろとかは、どうかと思うな
消えたら困るが今の所そんな事はない
理屈から言って、消えろと祈ってる奴には消せる力は無いって事だよな・・ マなら、Cを置き換える力を持った言語を作るという道もある訳だが
消せたとしても心の中で生きている
消えろ言語 それは大リーグコード2号のことである
消えろって思う言語? 上司が時々使う日本語っぽいけど意味が分からない謎の指示言語とか消えて欲しいな
お前のインタプリタが糞なだけ
言語じゃないがEJBとかHibernateとか消えろ
windowsのcmd.com消えて。
cmd.exeだった。消えて。
上司言語インタプリタなんて搭載したくないわ
>>201 業務で使ってる資産があるんよ
本来の仕事が忙しいのに、作り直すなどという雑用はしたくない
パワーシエルってcmd.exeに対して上位互換なんじゃなかったっけ?
205 :
uy :2011/05/25(水) 15:53:12.53
中途半端なバージョンアップっていらない
パワーシェルってVistaからだっけ? まだ、無条件に置き換えられるレベルにないだろ
XPにもあるけど
デフォルトでは入ってないな、XPだと ただどちらにしろ周辺のコマンドがまだまだ貧弱なんで 結局突っ込んだことやろうとすると何かしらコードを書かされるのがな〜
ラルクパワーシエル
cmd.exeならともかくcmd.comかよ、引き摺り過ぎだ
ああ下まで見てなかった、すまん・・・
.NET Micro Framework があるってことはさ、つまりOSの開発にC#でいけるってことだな
214 :
uy :2011/05/27(金) 21:19:22.74
いけねーよバカ OSには1クロックも無駄に出来ない箇所がある Cを捨てればアセンブラでかく範囲が増えるだけ
>>214 たとえば何処が1クロックも無駄に出来ない?
Linuxのソースで説明してくれ
>>213 行けるだろうが、組み込み向けのcやjavaは浮動小数点使えなかったりと、微妙に違ったりするから、違いを意識してプログラミングする事になると思われ
>>212 いや微妙どころじゃなく違うよ、いい意味で。
外部コマンドの呼び出しに関してはそれほど違いを意識しなくていいけど。
218 :
uy :2011/05/28(土) 00:51:40.69
>>215 Linuxって何?
まず、割り込み処理
次に描画のリフレッシュ部分
この部分だけはどう考えてもC・アセンブラ以外で組めばゴミOSの出来上がり
>>218 え、アプリの話じゃ無いのか?
.netって出て来てたからてっきり。。。。
221 :
uy :2011/05/28(土) 04:47:44.27
>>219 はい? OSなのかアプリなのかどっちだよ・・・ ここまで話通じない人間こええよ
>>217 でも今のところ移行するほどのメリットを感じられんのがなあ。
もうちょっと資源(コードや資料)が揃ってきたら楽なんだが。
アセンブラ1命令、1クロックで実行できるCPUってなんなんだろうか・・・
突然何の話をしてるんだ パイプラインで動かしてればある程度は一命令一クロック実行だろ
条件分岐もFPUも使わないプログラムなんてあるはずないだろ
nop とか
だからある程度って書いてるじゃないか
>>223 今時1クロックで2、3命令実行するのが当たり前だろ
スーパースカラとかの技術が何年前から有ると思ってんだ
近所の書店に行ったらプログラミング関連の本が ほとんどCとC++関係の本で埋め尽くされてた。人気すなぁ
人気というか、本書くには鉄板なんだよC/C++って
>>229 そもそも大型書店やネットじゃないと技術書は売り物にならないんだろうな
一応置いておくのにc/c++は無難
プログラマとしては教養みたいなもんだし
気持ち悪いからC++と一緒にしないで
宗教って大変ね
おれは自分でアルゴリズム書くときは俺言語で書いてトランスレートしてる。
変態すぎワロタ
わざわざ書くことまではせんが、思考としては割とそんなもんじゃね?
javaccさえあればすぐ書ける
でも「俺言語」ってまず間違いなく構文とかクソ曖昧だと思うぞw 要は自分が分かればいいってだけなんだから
アルゴリズム記述言語ってたいてい俺言語にならないか? 和洋色んな技術書を見ても、定まった言語なんて無いように思える ただ俺言語と言っても、余程変な構文でも無い限り、 普通は誰でも読めるものに落ち着くが
そしてなでしこ
>>239 擬似コードはpascalのそっくりさんが多い気ガス
こうして楽しいプログラミング言語などないという結論になった
プログラミングはくだらない事と車輪の再開発だけが面白いのであって 楽しいプログラミング言語という考え方がどうかと思う
そういう人もいる そうじゃない人もいる 色んな人がいる 他人は他人 自分は自分 他人が自分と異なる価値観なのは当たり前
そ、そうですね
>>244 は、言われてみると当たり前だけど、とても重要なことなキガス 意外に忘れてしまうというか
それを認めたうえで議論してるんだろとマジレス
自分の価値観をぶつけてるだけって、それって議論といえるのか 個人の好みの問題じゃ・・・
>>242 プログラミング言語の面白さだったら、どれだけぶっ飛んでるか、かな。。。
純粋オブジェクト指向言語とか、純粋関数型言語もだし、全てがリストという世界観のlispとか、論理型言語も言語そのものが面白い
手続き型、非手続き型問わず、何か一つの世界観で統一しようと試みてる言語は面白いと思う
そういう言語はなんつーか実用性かけるよな だからこそ魅了されるのかもしれないが つまらん言語ほど実用だが憂鬱でもある しかしrubyは面白い rubyの本にもrubyは楽しい言語って書いてあるし・・・
マイクロソフトがvisualruby出したら考える
早くMSは全部C#で統一しろよ
今はHTML5とJavaScriptに熱心らしい
C#信者はMSにはしごを外されてプギャー
MSが何かしたのか?
Windows8はSilverlightではなくHTML5ってことじゃない?
>>253 それはWebで動かせるのが楽しいので有って、javaScriptそのものが楽しいってのとは違う気がする
>>250 実用性のある言語が欲しいのか、面白い言語が欲しいのか。
どっちだ
両方を兼ね備えた言語があればいいのだけれど
じゃあHaskellしかない
えっ
えっ じゃねぇよ
えっ
<p>えっ<p>
Haskellに実用性があるなら、もっと実用性のあるツールがどんどん出てもいいと思うんだけど マイナーすぎてGHCにすら見放されたDarcsぐらいしか聞いたことないのはどうなの
実用性の高さを誰も見抜けていないんだわ そして、これからもずっと見抜かれない 人間ごときには見抜かれない あぁそうですとも、見抜かれてたまるもんですか by かみ
精神障害って大変だよな
>>259 実用性はrubyとかと同じ位ではあると思う
やりたい事が有ったら、haskellスレで聞いてね
haskellってとっつきにくそう lisp全般がそういうイメージだわ
>>269 むしろc言語でプログラミング出来ない自分がhaskellでプログラミング出来てるんだが。。。
cくらいは出来とかないと仕事にならんのじゃないのか・・・学生なら別にいいだろうけどさ・・・
何でhaskellとlispが一緒になってるの?
>>270 ではないが、俺は Haskell 大好きだけど完全な趣味だ
プログラムとは全く縁の無い仕事してる
あ、haskellとlispは違うか 失敬
にんじゃ
取っつきやすさに仕事になるか否かは関係なかろ 職業PGなら知っておきたいC言語ではあるが 高級言語としては相当とっつきにくい部類だよあれ
結局C++とC#ではどっちがやってて楽しいの?
ゲーム → C++ アプリ → C#
楽しい=金集めだと思ってんだけども、c++とc#だと、どっちが金に結びつくの? 本業でなくって、副業レベルでシェアウェア、スマホ、アフィ、topcoderだとか ライブラリ数やデバッグに掛かる時間、マイクロソフトへのお布施など、 金と時間が絡むもので総合的に考えてみて欲しい
>>280 ゆがんでるな
金集めに直結する言語はパラダイムによって様々だ
企業が言語も含めて囲い込みしてるからな
iOS向けのObjCが一番小遣い稼ぎに向いてる
国の金でガッポリとか、大企業からガッポリなら、cobolやfortlanと教授職をエロ
>>265 Pagsの事も忘れないで(Parlインタプリタのhaskell実装)
haskellが注目されたキッカケよ?
>>277 Cは高級言語じゃなくて低級言語じゃまいか
Cは高級言語だよ 低級言語は機械語やアセンブラ
>>283 一応は高級言語に分類されるよ
実際のところ高級アセンブラってのが一番的を得た呼び方だが
理系の中年はフォートラン好き多いね。しかも77という不思議 95じゃダメなんすか
ただの青春補正です まあ、言語的にやれること少なかったので無駄に使い倒し過ぎて印象が強いだけな気もする
生産性は.net使う言語の方が高いが Javaは楽しい とくにライブラリ作りは楽しい
生産性はJavaの方が高いが アセンブラは楽しい とくにゲーム作りは楽しい
プログラマ四天王。1. みながわけんじ 2. 生島勘富 3. インドリ 4. otf だそうだ。 嫌な四天王だな。
一人も知らん・・
その四天王ってどんな事をした人なの
>>286 行列ライブラリの枯れたものが存在するからじゃねーの
数値計算で.NET(javaはまだしも)とかないわー
枯れてて信頼のおけそうなライブラリが見当たらない
もっとも、javaで数値計算なんてオペレータがオーバーロードされてなくて
鬼畜だとしかいえないけど
static importを使ってないサンプルコードとかウェブに載せんなよとか思う
LAPACKの各言語ラッパーが色々あるんじゃないの? もちろん .NET 用にも
構造体や共用体を駆使してピュアCでC++っぽい事をやるのが最高に楽しい。
pdfにあるよ。OOCとかで。言語を英語圏にして、ググってみれば? gtkなんかは、大量のマクロつかって無理矢理なOOP そこまでして、なぜCで書く必要があったのか疑問
>>296 Cが好きだからw
発端はXToolKitでこの手のCOOP(?)が使われてて、激しくインスパイアされた。
んで、関数も・・・
int
hoge(this, val)
hoge_obj_t *this;
int val;
{
↑この書き方が好き
仕事ではやらんが、プライベートな趣味のコードは全部コレw
CだとC++にあるような可読性低くてどのようなコードが出力されるか想像困難な仕様を 使えないのでそれなりのメリットを期待できる。
>>296 今までValaみたいな使い易い言語がなかったからじゃないの
301 :
296 :2011/06/07(火) 23:46:22.51
>>301 興味深いブログの紹介ありがとう。
"OOC object-oriented"でググると、こんなのが上のほうに出てくる。
http://ooc-coding.sourceforge.net/ 上記によれば
ooc is mature enough to be ported onto small microcontrollers or DSPs.
だそうだ。まぁ、これに尽きるわな
しかし上記でググると"Object Oriented COBOL"が出てくるのは、いかがなもんかのう?
>>302 COBOLはプログラミング雑誌に広告出す位には現役ですから。。。
縁が無いのに、よく見かける
プログラミング雑誌ってめっちゃオフラインな感じだな
日立だっけか? .netのCLI上にCOBOL実装して売ってたよな。 名前空間とかオブジェクトに対応してた覚えがある。
プログラマーは常に電波を張り巡らせているから その中を雑誌で儲けるには 騙し騙しいかないといけない
普通、電波じゃなくてアンテナを張り巡らせね?
電波は飛ばしたり受信したりするものだな
張り巡らした電波の、他の電波の干渉による乱れをキャッチするのかも知れない
E-2Cみたいなもんか
プログラミングに憧れてる新米なんだけど、 他の人が組んだプログラミングの画面とかを見ていると、} ←このような記号の後に やたら間隔が空いてたりするけど、一体何の意味があるの?
詰め詰めに書くと見づらいとか、その程度の意味
なるほど ありがとう
>>311 } これは女の子のあそこのボッチなんだよ
でな、あんまり近づいてジロジロ見るのは失礼だから、
ちょっと離してるんだよ
本当はちょっと離すだけでいいんだ
やたら間隔が空いてたりするのはシャイなだけ
315 :
デフォルトの名無しさん :2011/06/20(月) 01:26:34.87
疑似コードを書くのが楽しい リファレンスを引いたり、文法を手直ししたり、現実のプログラミング言語に落とし込むのが辛い Haskell を勉強したら幸せになれるだろうか・・・
しばらく、vimかemacsの環境で遊べよ タイピングは捗るぞ
318 :
デフォルトの名無しさん :2011/06/20(月) 02:30:16.42
>>316 自分の脳がインタープリタだから、間違いは無い筈。
他人が書いたコードに対しては受容範囲は狭いけど、
自分が書いたコードに対しては、かなり強力で協力的な
推論エンジンを搭載してるから大丈夫。
新規関数のバグを補完出来るような強力なシステムなわけだ
そこがバグって話じゃないのか
321 :
uy :2011/06/20(月) 18:48:16.23
生産的な話をしろよ 略すと 生産的な話ろ
性ばな
>>315 擬似コードをそのまま実際に使えるようにした言語って無いの?
>>323 既存の言語の発祥にも割とそんな感じのが多そうじゃね?
PowerPCの命令セットリファレンスの疑似コードはPascalっぽいな。
>>323 逆に現在実際に使えている言語を擬似コードとしてもそのまま使えばいいだろ
それでは何か不満があるのか?
「実際の定義はめんどくさいに決まってるが名前と動作だけ決めておくメソッド/関数」 をちりばめておくだけで擬似的にいけるよな
使える使えないは別にして 「なでしこ」楽しいぜw プログラム作ってるはずなのに なんか良く分かんない小説みたいなの書いてる気分になるw
まんま詳細設計の資料になりそうな勢いだなw
日本語プログラミング言語で何か、素晴らしいもの出来れば 世界の順位を覆せる可能性はあるな アルファベットよりも効率的にかける可能性は、あんまり無いけど = とか if 、for を 凸 凹 回 っていう記号的にあらわしていくことが、マルチバイト文字では可能で 1、記号数 や 文字数は、圧倒的だから 配列、ハッシュ、タプル、リスト、二分探索木、赤黒木、それぞれ別の[]記号で表せるだろう キーボードに細工するかIDE補完充実させないとやっていけないけど 母国語の字数が多いっていうのはコンピュータの世界で今は、日々エンコードに悩まされて不利に見えても 後々は、デフォルトでその国の人間が扱える「記号数」が多いということなので、とても有利になっていく
複数文字列だからこそインテリセンスが生きるんだよな
334 :
329 :2011/06/21(火) 17:27:47.62
Perlの詩なんて興味ねーよ失せろ
>>334 オラ日本人だで英語はわがんね。
日本語に訳してくんろ。
337 :
デフォルトの名無しさん :2011/06/24(金) 08:05:08.21
今PHPやってるけど、この言語はWeb界のBasicって異名を与えてやろうと思う。 いまいち文法が分からんw ってか配列代入がデフォで値コピーだと誰が気づくw Cっぽいかとも最初思ったけど、明らかに別物の流れをくむ言語だw
>>330 こんなんが Googleに引っかかりまくるようになったら
気が狂うぜ
流行りませんように・・・ナムナム
なでしこの文体は携帯小説に近いな。
99 ProblemのProlog版をちまちま解くのが楽しい
>>337 もともとはperlで書かれたテンプレートエンジンだったからな
そういやPerlって @newlist = @list; がコピーになる言語だな
PHPって Personal Homepage Processor の略だったよな 今は知らんが
違うよ PHPは単純にPersonal Home Pageの略
なんでRubyがあんのにPHPなんてやってんだよ っと、諸外国のPGは日本人をみてマジで思ってるよ
初心者向けって感じを全面に出しててとっつきやすいからだろ
毎日触るならc++ こんな感じで アセンブラ:砂糖 c:羊羹 c++:水羊羹 java:ガトーショコラ python:バタークッキー
水ようかん触ったら手がベタベタに鳴るだろ
>>348 とりあえず348の好物が水羊羹なのは分かった
Pythonのイメージは五家宝とか鈴カステラみたいな感じだなあ まあ好物なんだが
C#は? 食べ物の例えもいいけど、 分かりやすくドラゴンボールのキャラで例えて。
天津飯
うわ微妙
>毎日触るならc++ うわ・・・・
水ようかんを毎日食えってことか
今の時期は水ようかんおいしいよね
水ようかんは凍らすと美味い スプーンでシャリシャリ削って食べながらハスケるのが最高
rubyだけは馴染めなかった。
>>360 なんか無理やり筋道と言うか道理をつけたような、ご都合主義っぽい言語仕様が。宗教みたい。
あれなら思いつきで増築しまくったphpの方が便利だし、いっそオブジェクト指向は捨てよう、とか好きな書き方できる。
>>361 何か具体例ある?
どこら辺の仕様が気に入らなかったの?
なんでそんなにRuby擁護すんの?w
>>363 何で擁護だと思うの?
どこに不満があるのか聞きたいだけなのに
・中途半端なPascal記法が気に食わない ・ソースのparser.cの汚さは異常なレベル
>>366 >Pascal記法
もしかして end の事?
NaniIttendaKoitsu
>>367 Pascal記法って、いわゆるIsEnabledみたいな大文字で始めるやつだろ。VCみたいな。
Camel記法が、isEnabledの方。Javaとか。
やっぱりRuby使いは他の言語しらないのに、Rubyマンセーしてんのか?
>>366 Rubyのパーザはカオスだからなあ…
ちなみにendは「中途半端なPascal記法」じゃなくて「Ada/Eiffel記法」ね
なぜalgolを飛ばす
>>370 Rubyの命名はその慣習では無いと思うが…
UpperCamelCase(Pascal記法)を使うのはクラス名やモジュール名で、そこはJavaも一緒だし
メソッド名はsnake_caseが主流だと思うぞ
>>370 何で俺がRuby使いってことになってるのか知らんけどw
結局
>>361 の言う様な言語仕様的な問題はここまで登場してないのね。
これは誰が見ても深刻な問題だねーって感じのがあるのかと思ったんだが。
使ってるやつと作ってる奴が宗教じみてるから嫌い
そういう非プログラム的な話は訊いてないんだわ
真偽値とか、トップレベルの扱い、またはPerl由来の要素あたりなら分からんでもない
…んだが、記法とパーザと宗教しか出てきてないな
>>372 ALGOLもBEGIN/END系だったっけ?
Pythonで言う所のlambdaレベルのがっかりポイントは無いのかな?
rubyはpythonとかと存分に喧嘩しといてくれ。 その間にphpとaspxで食っていくから。
やってて楽しいプログラミング言語スレなのに…
phpとaspxとかワープア
一番手軽に金になるけどな。数もこなせるし。 俺はMUMPSがコーディングしてて一番楽しい。 本当に知名度低い誰も知らないような言語だけど。
rubyは作ってる人が好きじゃない
プログラムに関係無い事はどうでもいいわ
Railsはクソブロガーのせいで印象が悪い
言語仕様に対する不満が出て来ないのは、大きな問題は無いって事かな?
387 :
デフォルトの名無しさん :2011/07/10(日) 04:17:45.51
やってて楽しいのは JavaScript かな Scheme でも CL でも良いけど、やっぱり無名関数を自然に扱える言語は楽しいね 名前を考える煩わしさ無しに、好きなだけ微小関数を量産できるのが嬉しい 最近は実行速度でもライブラリの数でも充実して来ているし、言う事無し
>>388 if you have opposite oppinions, your comments are highly appreciated.
KARA=辛=チョン
どの辺が嫌い?
>>392 p (1 +
2)
とか
p ((1
+ 2))
は通るのに
p (1
+ 2)
はエラーなところ
なるほど unary plus が優先されるのか
これはバグとして報告されるべき
なるほどね、そういうとき演算子を行末に持ってくるほうが多いから気付かなかった まあ改行を文末にしてる言語ならそんなもんじゃねえかな、文が切られないように書くしかないよ
え? PerlもPythonもTclも改行がデリミタだけど こんな行継続はしなくね?
p("very long string" + "additional string") みたいにしたい時は困るかな...
あーでも p (1 ¥ + 2) とか p("a very long string" ¥ + "another string") ならオケなのか 納得したわ
>>397 Perlはセミコロンだし、Tclは結構改行位置強制されるからフリースタイルには書けないよ
>>399 なんだこの\記号。VBのアンダーラインみたいなもん?
気持ち悪いな
え?
Haskellはデフォルトで行継続だから問題ないな。JavaScriptはどうだっけ
<script> console.log(1 + 2) </script> JavaScript はもちろん問題無し HTML に埋め込める事が必須要件だから、改行の影響を受ける様な仕様にはしないでしょ
と思ったが、自動セミコロン挿入があったなw まあ今回の件とは関係無いけど・・・
>>406 マクロを引き合いに出してくる時点で言語としては崩壊してるだろ。
バッドノウハウの塊じゃん。
>>407 君は、そういう字面だけ捉えた表層的な話をしてて楽しい?
ここで話題としているのはマクロがバッドノウハウかどうかじゃなくて、
バックスラッシュの機能についてなんだけど、話を聞く気がないなら
これで終わりね
>>408 バックスラッシュは別にいいんだけど(改行区切りの言語なら何らかの記号は必要)
関数呼び出しの括弧が閉じてないのに行継続されないのは残念
いや、正確には行継続自体はされてるんだろうけど、ちょっと良くわからない
p (1
)
はOKで
p (1
+ (+2))
がNGなのは何で?どうしてこういう仕様なのかが分からない
レキサーの時点で演算子優先順位を見てるバグのせい 作った奴の頭がおかしい
>>406 馬鹿だな。
みんな>401みて思うわけだよ。
「shも知らんのか?」「そもそもエスケープシーケンスを知らんのでは?」等々。
だけどそんな指摘したって不毛なやりとりになるだけなのはわかってるから
黙ってスルーしてるんだ。
自分もスルーしようと思ったというか、実際に一度スルーしたけど、 これで彼もバックスラッシュはおかしくないと分かった事だろうから、 全く不毛かというと、和毛くらいは生えたんじゃないかな
流れを読まずに、最近かじったpython ネストの深い糞ロジックはリファクタリングせずには居られなくなる インデント強制は素晴らしいね あとada インデントはもちろん、変数名の長さ、無駄スペース、演算子優先順位・・etc あらゆる物にケチが付く、厳格過ぎて笑えてくる
結局 Ruby に対する不満って微妙なのしか出て来なかったな もう少し技術的に価値のある話が出来るかと思ったのに
Rubyの不満ねぇ。 1.9で国際化がややこしくなったから HTTP使うとほとんどforce_encoding必須でむかつくというのがあるな。
アンチで頑張ってる奴が少しでも技術に興味関心を持っていればな・・・
信者ウザい
プログラムに関係無い話はどうでもいいわ
Rubyの演算子の優先順位ってどうなってんの? x, y ,z を変数として x = y + z x + y = z のどっちも通るんだが、上は+が先に評価されて 下は=が先に評価されるんだけど(というか下が通るのはさすがRuby)
>>421 Python でも一緒だった
JavaScript と PHP ではエラーになる
>>422 Pythonは x + y = z は通らないだろ
>>423 スマソ
確認する時にコマンド打ち間違えてた
x+y=zって zをyに代入して x+yを計算するが結果は残さない ってこと?
そういうこと。つまり x + (y = z) って評価されてる で、別に x + (y = z) が通ること自体はいいんだ = が式ってだけの話だから わからないのは演算子の優先順位の仕様
仕様的には = の方が + より低いとなっているので、単純な優先順位の話では無さそうだけど
429 :
デフォルトの名無しさん :2011/07/11(月) 18:51:22.26
Rubyのパーサはカスすぎるな 演算子優先順位すらまともに実装できないとか Pythonのlambdaなんて目じゃないレベルのがっかりさ
中学生が適当にいじって高速化される程度の糞実装言語なんか触る価値もねえ 10年後生き残ってたら触ってやるわ
プログラムに関係無い話はどうでもいいわ
右から順にでも +が優先でも =が「右辺の値を左辺に代入」である限り x+y=zの結果は変わらないよな
間違えた +が優先だと「zを(x+y)に代入」ってことになってわけわからんか
>>435 いやいや、Ruby でも (x + y) = z はシンタックスエラーですから
438 :
437 :2011/07/11(月) 19:37:24.01
結局どれも既知の話だった訳だな・・・ ・式の途中で改行する場合はバックスラッシュを入れる ・左辺値に式を置いた場合はアサインメントが優先される 後は何かある?
>>433 情報ありがとう。とりあえず経緯は分かったので良かった
教祖様も驚いてるってことは
>>421 はデザインされた仕様じゃなくて
たまたま生まれた挙動なのか
そんなんでいいのかRuby
matzが無茶苦茶なのはいつものこと Rubyのコアはmatzが仕様変更をしまくって互換性に問題出したりバグ作り込んだりするのを その周りの人達が戻したり改良したりバグ取りすることで出来上がったものだからなw
443 :
デフォルトの名無しさん :2011/07/12(火) 01:43:40.84
rubyが具体的におかしかったらスレとまんのな。 やっぱruby信者のマッチポンプスレだったって訳だ。
>>439 こんなのが既知の不具合な訳?
恥ずかしい言語
単にディスりたいだけならバトロワスレを建ててやればいい。 技術的に意味がある指摘じゃないとレスは付かないよ。
まあ、演算子優先順位だの行継続だのは 普通はまともに実装されてしかるべきで、 技術的な意味を語る以前の問題だな そんなものもキチンと実装されてないRubyは論外ってことで
楽しいかどうかなんてどうでもいい こういう言語に引っ張られる考えは時間の無駄
どうでもいいけど、何が問題だったのかホントに分かってるのかな?
「言語仕様に対する不満が出て来ないのは、大きな問題は無いって事かな?」(キリッ
とか
>>386 が言ってるから不満を書き込んだら
disるなら他スレでやれと言われたでござる、の巻
まあここは「やってて楽しい言語」を語るスレだからな 嫌な言語を語るスレでないことは確かだ
粗探しの楽しいRubyはこのスレ向きってことか
>>439 誤)
・式の途中で改行する場合はバックスラッシュを入れる
・左辺値に式を置いた場合はアサインメントが優先される
正)
・バックスラッシュを省略した場合は行継続に一貫性無し
・アサインメントの優先順位がバグってるけど「仕様です」
ホントに分かってるのかな? 正)どれもコーナーケースにおける特殊な振る舞いで、実害は無い
学生が演習で作ったパーサでも「不可」のレベル
>>454 実害があるか無いかw
さすがRuby使いは違うなw
具体的な実害も挙らないし、他の問題点も出て来ないし、ホントどうでもいい流れだな せめてプログラムに関係する話題にして欲しい物だ
とりあえず楽しかった言語としてJavaScriptを挙げてみる
Rubyは使ってて気持ち悪い。 なおかつ信者がこんなのだから、もっと気持ち悪い。 技術的な問題挙がっても「実害じゃないからそれはどうでもいいプログラムの話題じゃない」 なんて言ってるんだからもう絶滅してしまえと思う。 信者も教祖も言語もゴミレベル。 そもそも、楽しい言語って言ってるんだから、プログラムの実害wとか、 そんなの以前に、使ってて気持ちの良い言語であるべきだろ。 何が「プログラムの話題にして欲しい」だ。信者も布教に必死だな。 Redmineのカスタマイズなんか苦痛過ぎ。 やってて面白いのはlisp。
>>458 自分も JavaScript が楽しい
関数型言語も幾つか試してみたけど、やっぱりオブジェクト指向的に書ける言語が楽しい
LISP信者キモいと言って欲しいのか
本物の Lisp 信者は他の言語をディスったりしないよ 最高の道具を手にした職人が、他の安ピカ物の道具をディスる必要なんてないでしょ
>>461 実用性はほとんど無いが、やってて楽しいぞ。
>>460 最初に触れたときには「何このオモチャ」と思ってたんだけど
やり込んだら「あれ、これ意外と本格派じゃね?」って感じになってくる不思議
newがよくわかんない
>>465 どっかのサイトで色々考察してるのを読んだことがある、詳細は俺もよく解らなかったし、どこかも忘れたが
・プロトタイプベースの本質からすれば要らない
・でもJavaScriptのコンストラクタはnew付きで呼ばれるのが通例なので、new付きの前提で書いたほうが良い
みたいな結論だった気がする
C最強に気づけないやつは才能ない
それは言うまでもないだろ。 高級な低級限後だからな。
Problogが楽しいよw
>>469 prologではなく、problogなの?
初耳の言語だ
俺も初耳だったからググった
C++が最強 多重継承万歳
ちげーよ、アホ。ggrks
>>472 多重継承の何がいいの?
依存・参照関係がややこしく危険になるからやめた方がいいと思うんだけど…。
Aのサブクラスであると同時にBのサブクラスである必要ってどういう時に出てくるの?
一意に親が辿れなくなるような継承って美しい?役に立つ?
インターフェースじゃ駄目なの?
実装の継承が必要なだけならScalaでいうトレイトとかの方が良くない?
ダイヤモンド継承を避ければ無問題 便利ですよ
>ダイヤモンド継承を避ければ無問題 そういうのを自動で避けるような設計がなされてるのがいい言語だと思うんだけどな…。 Mix-inを目的として使用するのであれば、 クラスの多重継承は明らかに危険で美しくない解決策じゃないの? モジュールやトレイトがある今、 クラスの多重継承は過去に行った実装を引きずってるだけの盲腸的仕様になってる気がするけど。
自動で避けれられなくて困ったこと一度もないけど どうしても困るならダイヤモンド継承禁止した言語使えばいい
Cの話題が出ると、C++使いが対抗心を燃やしてくるのは何でなんだろうなあ C系統の言語の一つに過ぎないのに
釣り? c++はcを包含してるけど、全く別の言語じゃん。
今までの流れからするとC言語使いがC++使いに対抗意識燃やしてる感じだけど
Cを改良したのがC++、それを改良したのがJava Java先生が一番でございます。
java遅い
改良したつもりなのがJavaでしょ
C#が1番だよ
487 :
デフォルトの名無しさん :2011/07/16(土) 22:11:31.65
C++とか気持ち悪いからあっちいけって思う
やっぱぁ包含よ
結局Common Lispが最強なんですよね?
使っている奴の態度のでかさでは最強だよな > Common Lisp
Schemeこそ正義。
特徴を整理したうえで比較検討するような議論にできないもんかね 盲目的なクソ信者みたいにわめきやがってバカどもが
common Lispとかww 使用人口がいるかどうかも
事実と向き合うにはそれなりの素養が必要だからな
楽しい言語なんて個人差があるからな 俺は楽しさがウリのRubyとかちっとも楽しくないし
だから、感覚的な部分を排除して話をできないかという提案なんじゃないの
それはもはや「やってて楽しい」からはほど遠い話になると思うが
>>498 他人と共有できない話だったらそれこそチラ裏にかいとけですよ
単なるレッテル貼りの書き込みとかを見ていると、それを他人に言って 何が楽しいのかと思う事はあるな
>>497 楽しい言語の感覚的な部分排除して、何を楽しいと思うのか。。。
最強でも、実用的でもなく、楽しい。だぞ?
感覚だからといって科学的分析の対象に出来ない訳じゃないぞ
>>494 Common Lispは確かにマイナーではある。
しかしそれは実用的でないという意味ではない。
遊びならともかく実用用途で マイナーな言語は避けた方が吉
自分でメンテを続けられるなら良いんじゃないの CL なんて処理系も沢山あるし、規格もきっちりしてるし
Brainfuckがなぜでない
もっともマイナーな言語といったらジョジョ言語だろう
>>505 面白い言語って遊びで使うんじゃないの?
仕事で面白い言語使えるかは会社に依るだろ?
マイナーと面白いがどう繋がるんだ
>>510 いや、おいらが確認したいのは、ここで面白いって主張する言語は遊ぶ事前提でおk?って事
実用性無視が基本で良いんだよな?と
これがブレると面白いって言う言語が大きく違ってくる
仕事でもプログラミングしてる奴は 遊びで書くなんて事はしないっしょ
>>511 C#は「組み易いから面白い」
なんてレスもよく出て来る
遊びだろうと何か書くなら最低限の実用性がないと苦痛だろ その意味でCommon Lispや最近のHaskellには実用性があって、 だからこそこのスレで名前が挙がってる
>>514 何を以て「遊び」とするかに依る
例えば BrainFuck なんかを「楽しんでる」人たちは、
論理的なパズルを解く(組み立てる?)ような感覚を面白がっている
また、そうとう限られたリソースや極悪な環境で
他人にはできない何かを作ることを楽しんでる人もいる(メガデモ的楽しみ)
最低限の実用性という場合の「最低限」がどの辺りかは知らんが、
このようなことを楽しみとしている人たちにとって
最低限の実用性すらないことはそれほど苦痛ではない
むしろ無い方が高難易度だと言って楽しめる人も多くいる
そういう意味では x86 のアセンブラが楽しかったな。 適当なプログラムをヘックスダンプして、インテルのマニュアルを片手に 解読して行く行程は胸躍る物だった。ムスカのあの台詞が乗り移るね。
Brainfuckとか組み込み言語として使うと面白そうだけどな インタプリタ実装もそれほど難しくなさそうだし
組み込み言語とかDSLは、プログラム内部のオブジェクトを簡単に生成したり 操作したりする為の手段だから、入出力が手軽に扱えてリテラルもそれなりに 揃ってないとしんどいぞ
Small Basicっていうのが出たけど 誰か使ってみた?
亀+MS BASICって感じだな。 新しいんだけど凄くノスタルジックw
>>516 x86も面白かったけど、GBAでARMアセンブラも楽しいぞ
OSも無いゲーム機に組んだプログラム流して動いたの見ると震えるw
>>518 そんなメタ的な使用法でなくとも、もっと軽い用途いくらでもあると思うぞ
たとえばRPGのイベント制御とかなら簡単な演算と制御分岐くらい出来れば十分
Brainfuckはさすがにアレだが、俺はそれをC+FORTHでやってる
うん Brainfuckだとさすがにアレだよねってこと
BFはチューリングマシンの勉強になるから自分で実装すると楽しいぞ。
実装するならね BrainFuckとかGrassとかで盛り上がってるのは基本アホ
俺もアホとは思うが、奴らはいい意味でのアホだな 少なくとも愚かではない
流れぶった切るようだが VBだわ それに限らず.NETは良いと思う
>>528 面白いというより、楽な言語だな
自分なら、ここじゃ挙げない
haskellとsmalltalk挙げる
Haskellってどのあたりが楽しいのかな? 最近触り始めたんだけど、まだ楽しさがよく分かっていない。
結局トイプログラムで終わる言語だよ。面白いけど、実用性がね
具体的にどうおもしろいの?
プログラミングって何が面白いの?
型クラスとかじゃないの? haskellやった事ないけど
型クラスって、JavaのAbstractクラスみたいなイメージなんだけど あってる? 機能一覧とデフォルトの振る舞いを纏めたものって感じ。
手続脳の俺にはHaskellとかSchemeとかはパズルみたいで面白いかな
>>535 どっちかっつーとinterfaceじゃね
>>530 ループを再帰で置き換えるとか、よく言われるけど、むしろ、いかに再帰を使わないで、関数の組み合わせだけで書いていくかが燃える
(組み込み関数内では再起してるだろうけど)
レスサンクスです。 どちらかと言えば何かを作るよりも、プログラミング自体を楽しむためにHaskellを使っている人が多いのかな? 自分にはまだ分からないけど、そういう方達を満足させるような構文だったり言語仕様になっているのかな。 ふむ、もうちょい勉強してみます。
おまえら、阿呆のように、再帰、再帰っていうけどさ、 どんなお題に再帰をつかっての?
ここ数年の流行は fold 系じゃないの?
>>539 ループするものなら何でも
但し末尾再帰にする
昔Haskellの末尾再帰は最適化されなかった 今はしらん
だったらSchemeで良いじゃない、仕様で明言されてるぞ
単純なループの再帰って、どのぐらいの難しさ? P99のリストの中身を前後逆にするようなもん? それとも2分木をトラバースするぐらい?
gotoを使ってもいいとなったCの柔軟さに対しては今ひとつかなぁ。 今の職場が、ロートルがバイナリにホットパッチ当てまくるから、途中return禁止なんだが、 gotoを解禁するだけでこれだけ使いやすくなるとら思わなかった。
>>545 ループの中に飛ぶgotoみたいな曲芸的なのを除けば、
gotoを多用して書かれた関数は素直に末尾再帰に直せるよ
関数型言語の説明で末尾再帰最適化の話が出るとどうももにょる それはコンパイラの最適化であって、パラダイムの特徴ちゃうわ…
末尾再帰が最適化されるからこそ関数的なスタイルで実用コードが書けるんだが
末尾再帰って、どんな風に考えて作るもん? 良い問題集や実装の具体例を教えてエロい人
>>550 末尾再帰は可読性がループ並みなる
そんな事するなら、組み込み関数でループ再現させた方が確実に最適化されるし、可読性が保てる
>>550 それはそうなんだけど、
相互参照してる再帰が最適化されないとか、
デバッグビルド時は最適化されずにスタック積まれるとか、
ふつーにあるぞ。
>>553 どの言語?
デバッグビルドはともかく相互再帰で最適化が効かないのは酷い
>>554 その例の一つは、俺が好きな言語のScalaたんである。
(…あった、と書けるのかもしれない。2.9でどうなってるのかまだ知らない)
でさ、それって、言語じゃなくて、実装の話だよね。パラダイムの話でもない。 反復を再帰として書こうと思ったら末尾再帰最適化はほぼ必須と思っていいと思うけど、 それは実装レベルの問題であって、言語の問題じゃない。
>>556 実装が 1 つしかない言語だとしかたない。
>>556 言語によっては末尾再帰について実装ではなく「言語仕様」としてるものがある
そういった言語の場合、末尾再帰を実装してない処理系は
もはやその言語を名乗れない、実装の問題ではないよ
まあ、パラダイムとは確かに関係ないけどね
scratch 言語仕様覚えるのを面倒い コード書きたく無いって人には良いかなと思った (そうで無い人にもオモチャとしてオススメ) プロトタイプベースで以外と作り込める これでプログラミング出来ない奴は、何使ってもプログラミング出来ないだろ。と思った
scratch はエンドユーザプログラミングシステムとしては良さげだけど、 プログラマがプログラムを書く用途で使えるものなのかな?
>>560 それは素直に言語覚えろとしか
プログラミング言語覚えてるなら、コード書いたほうが楽だったりする
(ロジック部分にはマウス操作でプログラミングは向かない。。。)
コードを書くより面倒なのに、ロジックをパズルみたいに組み立てるのが楽しいと言う、何か原点回帰的な体験だった
時々、プログラミング出来るようになるにはどうしたら良いですか?とか聞いてくる奴いるけど、そう言う奴にこそscratchで修行しろと言いたい 言語に依存しない、でもプログラミングに大切な(そしてプログラミングが難しい本当の原因)を勉強出来る 逆に言えば、scratchでプログラミング出来なかったら、根本的にプログラマの素質が無い その位、子供向けだと馬鹿に出来ない位、よく考えられてる
こういうのってわりと昔からあるんじゃないの? 特に目新しい点は無いような気がするんだけど
特定の形のピースを繋ぎ合わせてロジックを作るというアイデアは昔からあったとして、 電子ブロックやカルネージハートや FFXII のガンビットのシステムが好きだったとして、 それでも Scratch みたいなシステムを現実的なレベルで実現するのは非常に価値のある 仕事だと思うなあ 小さな子供にソフトウェアの仕組みを学ばせる必要があったら、俺もこれを選ぶかも
>>564 個人的には大人でもプログラミング初心者は、まずscratch触ってから他の言語に行くとスムーズに覚えられるんじゃ無いかと思ってる
自分はある程度言語を覚えた後で触ったけど、良くで来てると思うよ
大人だったら独習シリーズとか与えるわ
>>566 パソコン初心者脱してたらそれで良い
何か最近、パソコン初心者すら脱してないのにプログラミングに興味持ってやって来るの多いから。。。
成人していて、具体的な目的も無しにプログラミングを学びたいという人は見た事無いわ
社会人なってからの初心者って、ExcellかAccess弄るだけだろ。VBでいいじゃん いきなり統計処理のためにR、matlabが必要になる場面なんてあんの?
「必要になる」ことは希だろうね 周りの話を聞いて「興味が沸いた」という場面ならいっぱいある
俺の周りにはそんな話をしている人は一人もいないわ
Scalaスレは地道に伸びてるけどClojureスレは伸びない。
Delphi(Pascal)は括弧が少ないから好きだ。 VB.net も括弧は少ないが、今時行に意味があるような言語仕様は嫌だな。
今時と言うが、行に意味がある言語なんて比較的新しい言語でも沢山あるぞ
みんなは頭に浮かんできたアイデアを何でもすぐにコーディングできるの?
10代のころは出来たが今は一旦紙に書かないと無理ぽ
いいなーアイデア次第で億万長者じゃん
俺は紙には書かないな、テキストエディタに向かって自己流デタラメコードで書くほうが多い んでそれを手直ししたり、デタラメ関数名を実際に実装したりして組み上げてくことが多いかと でもグラフィックス関係とかになると流石にコードより描いたほうが早いだろな
579 :
576 :2011/08/23(火) 05:24:52.16
あぁ・・・説明が足りんかった。 紙にコードを書くというよりは、処理の流れとかデータ構造を図形とか矢印で紙に描いていくってこと。 フローチャートとはちょっとちがう。
それはむしろ、そうやって考えをまとめる術を身につけたということでは。
>>579 データ構造もテキストファイルだなあ
Tabで階層付ける感じで書く
紙だと付け足したりするのがやりにくくない?
処理の流れって聞くとフローチャートのような気がするんだが
個人的にはフローチャートよりコード書いたほうが解りやすい…
私もデータ構造は手書きです 手で書いて消してとやらないとなかなか頭に入らないし 手書きの方が余計なものを書かないように頭が働きます
あー…ってことは俺が電子データメインなのは 「余計なものを書かないように」すると、思考そのものが止まっちゃうタイプだからなのか
モニタを見てると神経が昂ったりネット見るのに集中が移っちゃったりするので、 最近は擬似コードを紙に手書きが多いかなぁ…。 矢印や図を書いたりするのにツール変えなくて済むのもいい。 んで、擬似コードの段組が終わってからエディタで少々肉付けして、後はIDE。 擬似コードで処理の内容を書いていくと自動的にメソッド切り出しが出来る。 まぁCodeCompleteに書かれてたPPPまんまなんだけど、 やってみるとすごくしっくり来て、そのまま習慣として続いてる。
おれはレコードを示す長方形を書いて埋めていく 人に説明する時だけど
>>573 関数内関数がけっこう好きだった。
λでいいじゃんとも思うけど。
今は、jmpでとんじゃえば?って思うようなプログラミングしてるけど。
有名なOSベンダーもFOSS圏も、html5+javascriptを推すんじゃないか? 低レベルな層なんて弄っても面白くないし、 高級言語が欲しいなら対応している環境が多いもん使う方ができること多いし、 言語固有の罠やら作法を覚えなくてすむよ。 多言語から入ってわざわざjsonを覚える必要もないし、jqueryなんてライブラリも出来た。 html5のキャンバスにお絵描きもできて、railsにはcoffee scriptが対応した。 仮に今から何か1つだけ言語を覚えて、 プログラミングでやれることを増やすならjavascriptでやるけどな
>>587 ここは、やってて楽しい言語スレですよ
生産効率の良い言語の議論は別のスレでお願いします
589 :
デフォルトの名無しさん :2011/09/04(日) 16:21:40.68
587じゃないけど、 「1個覚えるだけで色々できて楽しい」ってことじゃねーの? >1にも「また、その理由は?」ってあるし。
変な内容に釣られただけだろ ほんとclojure楽しいのにそんなに人気ないのかな
>>590 Lisp系は好き嫌いが分かれるから。。。
最近Javaが楽しい イベントにインターフェース関連付けて、様々なクラスに処理を飛ばしたり。 クラスの継承のさらに継承にジェネリック合わせて多方面に使えるようにしたり。 シングルスレッドな言語からの人なんで、 処理が複雑に絡み合う。 それでもスパゲティにならないようにバランスを取り続けるってのが パズル作ってるみたいで楽しい
パズルって感じてるようではまだまだだけどな
デザパタとumlも未習得なのかな javaなんて業務両言語じゃねーの パズル解くのが好きならschemeなりprologなりの方がいいよん。
つーてもProlog使いに言わせるとあれが直感的らしいからなあ やっぱりパズルと感じるか、書きやすいと感じるかは個々の適性によるところがあるんだと思う
パズル好きならパズルやりゃいいじゃん
パズル解くってより作る側の気持ち あれこれな機能をプログラマが使う際に、 プログラマの手間ができるだけ最小かつ処理の無駄を抑えつつ、さらに拡張性と読解難易度を低く保ち続ける構造を求める事 アンドロイド相手にしてる人だから業務用とか知らないけど、 アンドロイドのフレームワークで使用頻度が高いけど、改良すればもっと利便性が上がる箇所とかあるし、 趣味全開
パズーでバルス
プログラマの仕事辞めて趣味にすると楽しいな。ソースコード見るだけでワクワクする。
ちょっと感動したんで書いとく まずはプログラミングhaskellからの引用 x^2+y^2=z^2を満たす正の整数をピタゴラス数と呼び、三つ組(x,y,z)で表す。ピタゴラス数のリストを生成する関数pythsを定義せよ。ただし、ピタゴラス数の要素は、与えられた上限以下であるとする。 以下に例を示す。 >pyths 10 [(3,4,5),(4,3,5),(6,8,10),(8,6,10)] 引用終わり これ、haskellで書くと(と言うか、リスト内包表記使える言語だと同じ感じ)、こうなるんだけど、 pyths n = [(x,y,z) | x <- [1..n], y<-[1..n], z<-[1..n], x^2+y^2 == z^2] リスト内包表記以外の方法だとこんなに短く書け無いんじゃ無かろうか pythonはリスト内包表記あるの知ってるけど、他の言語でも、こんなに短く書けるんだろうか。。。
scalaだと def pyths(n:Int) = for(x <- 1 to n; y <- 1 to n; z <- 1 to n; if x*x+y*y==z*z) yield (x,y,z)
Ocamlだとrange関数相当が標準では無いので定義してやる必要がある let rec (--) x y = if x > y then [] else x :: (--) (x + 1) y let pyths n = [ (x,y,z) | x <- 1--n; y <- 1--n; z <- 1--n; x*x + y*y = z*z]
604 :
デフォルトの名無しさん :2011/09/23(金) 01:23:21.32
Matlab: function f = pyths(n) [x y z] = meshgrid(1:n, 1:n, 1:n); sol = x.^2 + y.^2 == z.^2; f = [x(sol) y(sol) z(sol)]; こういう例題って効率良く解こうとすると 途端に汚くなるんだよな
Mathematicaだと
Select[Tuples[Range@#, 3]^2, Plus @@ Most@# == Last@# &]^.5 &
もしくは問題文をそのまま書いて
Solve[x^2 + y^2 == z^2 && 0 < x <= # && 0 < y <= # && 0 < z <= #, {x,
y, z}, Integers] &
>>604 こういう初等整数論の問題をガリガリ求めるのは
結局C/C++が最速なのかな?
>>604 手続型でも短く書けるもんですね。
>>606 短くないけど面白そうですね。
手続型、関数型と発想が違う
>>607 このお題だと短く書けるもクソもねーだろ
どうやったら長くなるんだよ
>>606 見たけどすごいな
暇人というか何と言うか
>>605 pyths = #^2+#2^2==#3^2&~Array~{#,#,#}~Position~True&
なら
>>601 より9文字短いけど、リスト内包のほうが見やすいな
あまり実行ファイル作った事ないんだけど、頑張ってHaskellでコマンドライン引数とって
>>601 を実行するプログラム書いてみた。
import System.Environment
pyths n = [(x,y,z) | x <- [1..n], y <- [1..n], z <- [1..n], x^2 + y^2 == z^2]
main = do
args <- getArgs
putStrLn $ show $ pyths $ read $ args!!0
副作用の扱いが苦手って言うけど、関数型言語っぽくないだけで普通な気がする・・・
他の言語だともっと簡単なの?
少し解説すると、readは文字列を型推論で推論された型へ変換する関数で、showはその逆。
短く書くならperlやrubyが得意そうだが。俺書けんけど
>>609 Cは納得するがOCamlてなんでこんなに速いの?
>>613 Matlabだと文字列のコマンドライン引数をstr2numで数値に変換される処理が入る
function pyths(n); [x y z] = ndgrid(1:str2num(n)); s = x.^2+y.^2==z.^2; [x(s) y(s) z(s)]
>>609 rubyがドン亀すぎて笑える
ライバルのpythonがはるか雲の上じゃん
[1..n] 3セットを何か一言で表現できないければ、同じ穴の狢。
今更追記
>>613 のコードをO2オプションつけて最適化したらかなり早くなった。(pyths 100で明確に分かる速さ)
テキスト処理とかの用途だったらruby/pythonより向いてたりするんだろうか・・・
だと嬉しいなぁ・・・
計算量の多い数値計算ならともかく、ウェブアプリにとって言語の速度ってどのぐらい重要なんだ?
コード量が同じ、柔軟性も同じなら、速いに越したことはないと思うが
>>623 エスパーすると、
>>622 は
>>623 みたいな他の条件を揃えた場合の事じゃなくて、
単純に他の要素(柔軟性とか可読性とか)に対して
言語の速度はどれほど重要度・優先順位が高いか(いや、あまり高くないだろ)
という意味かと
>>624 程度問題だなぁ。。。
遅いと言っても、許容範囲なら書きやすい方使うけど、遅過ぎたらそうも行かないし
Webアプリに速度は重要じゃ無いけど、たまに「もうこれ、遅過ぎるだろ」ってサイトはたまに有るし
(多分、アルゴリズムの見直しで解決できそうなレベルだが)
SQLの書き方や鯖側の設定(FastCGI)とかで何とかなる問題がほとんどだろうから 言語だけで使い物にならなくなるなんてことは無い。
[1..n]^3みたいに直積集合書ければな
>>627 Haskellなら書ける(そのような^を定義できる)
>>627 直積集合と言うのがよく分からんが、どう言う結果を期待するの?
haskellは演算子も関数だから、定義しようと思えば出来ると思うけど
直積集合ってのは、こういうのだな [1..2]^3 なら [[1,1,1], [1,1,2], [1,2,1], [1,2,2], [2,1,1], [2,1,2], [2,2,1], [2,2,2]]
どこかのイケメンがHaskell版を書くのを待ってくれ(これはOCaml) let rec (--) x y = if x > y then [] else x :: (--) (x + 1) y let rec (^) l = function 1 -> [[x] | x <- l] | n -> [x @ y | i <- [n / 2]; x <- (^) l (n - i); y <- (^) l i] 使用例: # (1--2)^3 [[1; 1; 1]; [1; 1; 2]; [1; 2; 1]; [1; 2; 2]; [2; 1; 1]; [2; 1; 2]; [2; 2; 1]; [2; 2; 2]]
>>632 少しだけ短くなる
使用前:let pyths n = [(x,y,z) | x <- 1--n; y <- 1--n; z <- 1--n; x*x + y*y = z*z]
使用後:let pyths n = [l | l <- 1--n^3; let [x;y;z] = l in x*x + y*y = z*z]
>>633 使いまわしでスマン
lst ^ 1 = [[x] | x <- lst]
lst ^ n = [x ++ y | i <- [n `div` 2], x <- lst ^ (n - i), y <- lst ^ i]
でも、実際は"^"と"^^"は定義済みなので、"^^^"とかにしてね
マセマテカでもリスト内包っぽいの: min_∴max_ := min~Range~max (* haskell風リスト *) dom_↑dim_ := dom~Tuples~dim (* 直積集合 *) < vars_∈prod_, expr_ > := Select[prod, expr/.Thread[vars->#]&] (* { . } 演算子が使われてるので < . > *) pyths = < {x,y,z}∈(1∴#)↑3, x^2+y^2==z^2 >&
640 :
デフォルトの名無しさん :2011/09/24(土) 22:41:59.19
どいつもこいつも呪文みたいで汚い。 なんで、こんなのをよろこんでるのかw
>>617 Scratchのコードを初めて見たけど、なにやら楽しそうだ。
煩雑ではあるが日曜大工的な面白さがありそうだ(と想像)。
>>640 全然汚くないと思うが?
お前が思う綺麗なコードとやらを出してみ?
643 :
デフォルトの名無しさん :2011/09/25(日) 01:57:56.43
ああ、そう。 こんなのに興味がないが、FORTRANでいい。 この言語にしかできないってことあるか? どうせ、この言語だとこんなに綺麗に書けますよ といった好みの問題だろ。 お前が変態を美しいというのなら、別にそれでいい。 相手する気にもならん
>>643 このスレで何言ってんだ、お前の方が場違いじゃね
やってて楽しいなんて、まさに「好みの問題」だろ
ここはそういう趣旨でおしゃべりするスレだと思うが
俺がやってて楽しいFORTRANなら、こんな風に書くぜって言えばいいのに
どんな言語でも、枝葉末節をちまちま手動最適化するのが楽しい
646 :
606 :2011/09/25(日) 05:09:54.67
何をやっているのか、何を考えたのか、書き記すのが楽しい。
「この道具サイキョ!」とか言ってるの見ると笑えてくる 別にそういうテーマで頭の体操するならいいけど (>642)→>643みたいに 「何もうまいこと言えないけどとにかくサイキョ!」っていうようなのは特に
>>641 プログラミング言語覚えた後だと非効率的極まりないが、作るのも動かすのも楽しいぞ
デバッグは、他の言語と比べ物にならん程イライラするがw
fortranでウェブアプリすらも書くのか hack精神に溢れてるなw
>>650 まあ、最初のPrologインタプリタ処理系はFORTRANで書かれたくらいだから。
もっともこれは元になった自然言語解析システムがFORTRANで書いてあって、
それをそのまま流用したからだと思うけど。
652 :
デフォルトの名無しさん :2011/09/25(日) 16:39:00.36
C++が最強に楽しいよ
653 :
デフォルトの名無しさん :2011/09/25(日) 19:25:56.60
ほんとに、糞どもがうじゃうじゃ。 おーい。殺虫剤もってきて! 害虫じゃない、ゴミ退治だw
自殺は止めろ
>>651 はははっ!こやつ。と思って調べたら、stack overflowに
the first two Prolog implementations were an interpreter written
in Fortran by Colmerauer et al.
and a DEC PDP-10 native compiler by Warren et al
諸君らが愛したfortranは死んだ!なぜだ?
ってか、膨大な資産があっても言語って死ぬのな。恐ろしい。
苦労してc++を覚えたと思ったバッドノウハウの塊だったとか悲しすぎるな
656 :
デフォルトの名無しさん :2011/09/26(月) 14:53:33.16
日本語をしゃべれ。チョンが
FORTRANまだ現役だろ一応
>>614 Pythonにはlist comprehensionあるけど
1..nをrange(1,n+1)と書かないといけないしlist comprehensionのsyntax自体
for〜in〜if〜とか余計なものを書かせるので、集合表記として読みにくいし
別に短くもならない
Rubyだとlist comprehensionないのでproduct()とselect()で書く感じかな
Cでベタに書いたってそう長くなるわけじゃないけど、ジェネレータや無限リスト みたいなものがないから、一般的な関数にしにくいのがむしろネック メモリの無駄を承知で全部のリスト作って返すことにしたとしても やはり面倒くさい #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { if (argc > 1) { int i, j, k, n = atoi(argv[1]); for (i = 1; i <= n; ++i) for (j = 1; j <= n; ++j) for (k = 1; k <= n; ++k) if (i * i + j * j == k * k) printf("%d,%d,%d\n", i, j, k); } }
>>658-659 うーん・・・
例が悪かったのかも?
副作用を多用するようなプログラムの場合はHaskellは苦手って話は良く聞くけど、そこまでやった事ないから、なんとも・・・
今度、時間があったらHaskell版のじゃんけんゲームでも作ってみます。
それと他の言語の比較でもしませう。
巨大なリストを作ってしまう問題は
>>634 の (1--n)^3 を使った方の pyths にもある
OCamlは正格評価だから、一度 (1--n)^3 のリストが生成されてしまう
それを避けるにはHaskellのような非正格評価か、Pythonのジェネレータ的なものが必要になる
そういう問題を考えなくて済む点ではHaskellは楽だし、
比較の意味はあったんじゃないか?
>>660
なお、OCamlにはストリーム(Pythonのジェネレータみたいなもの)がある 以下はStreamをモナドと見なして(^)の遅延評価バージョンを定義してる let rec ( >>= ) m f = (parser [< 'x; rest >] -> [< (f x); rest >>= f >] | [<>] -> [<>]) m let return x = Stream.ising x let rec (^) l = function n when n > 1 -> Stream.of_list l >>= fun x -> (l^(n-1) >>= fun y -> return (x :: y)) | 1 -> Stream.of_list [[x] | x <- l] | _ -> [<>]
ぱっと見、何を計算しているのか分からん
C別解、product()だけ関数化してみた そんなに長くないように見えるが、main()がごちゃごちゃするのを 見ての通り使いにくく、ベタループよりずっと効率が悪くなるのが C的にはやはり問題 #include <stdio.h> int product(int nelem, int *elems, int *limits) { int i; for (i = nelem - 1; i >= 0 && ++elems[i] == limits[i]; --i) elems[i] = 0; return i >= 0; } int main() { int ix[] = { 0, 0, -1 }; int limits[] = { 10, 10, 10 }; while (product(3, ix, limits)) { int x = ix[0] + 1, y = ix[1] + 1, z = ix[2] + 1; if (x * x + y * y == z * z) printf("%d, %d, %d\n", x, y, z); } }
product(またはn重ループ:nはパラメータ)って概念的には簡単なのに いざ実装しようとすると案外頭を使う
>>665 やはり前に出てきたPrologのコードのように多重ループを見せない
工夫がいるのでは。
>
>>666 「見せない」ようにすると不自然になる
「見る必要がない」ようにすると自然になる
Python、これだとリスト全部作ってしまうし自然どころか暗号的 Pythonならジェネレータで書いたほうがいいな (つーかproduct()は元々あるので自分で書く必要ないけど) product = lambda *xs: [[]] if not xs else \ sum(map(lambda y: map(lambda ys: [y] + ys, product(*xs[1:])), xs[0]),[]) >>> product('ABCD', [1,2,3]) [['A', 1], ['A', 2], ['A', 3], ['B', 1], ['B', 2], ['B', 3], ['C', 1], ['C', 2], ['C', 3], ['D', 1], ['D', 2], ['D', 3]]
Haskellだとproductは数値のリストの積を求める関数だから、ちょっとここ見てると混乱する。
>>668 ジェネレータ式に書き直してみた
product = lambda *xs: [[]] if not xs else ([y] + ys for ys in product(*xs[1:]) for y in xs[0])
Pythonはジェネレータ式にも内包表記が使えて良いな
みんな短さを競ってるけど、時間orメモリの手動最適化した場合(といっても sqrt(x^2+y^2)等々は無しで)、どれくらいコード変化する?
リスト生成をジェネレータやストリームに変換するのは まさに省メモリ化の話だと思うが
674 :
デフォルトの名無しさん :2011/09/28(水) 20:12:54.24
あーあ、変態プログラムが、うじゃうじゃと。 しかも、書いてる奴は「俺はこんなにうまいんだ!」と自己陶酔してるから 始末が悪い。メンヘルに治療に逝ってこい。アスペルガーの糞共。
やってて楽しいなら、お得意のJavaのコードを書いても良いんだよ? コードが冗長すぎて1レスに収まらんだろうけどwww
676 :
デフォルトの名無しさん :2011/09/28(水) 20:21:22.11
\ U / \ U / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ / \ / く l ヽ._.ノ ', ゝ \ <本当にスゲエ!> / /⌒ リ `ー'′ ' ⌒\ \ / \ (  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄ ` ̄ ̄`ヽ /´ ̄ | | ゴゾンジ!の変態ぶりにジュウシマツも驚いています。
コードは書けないけどAAは貼れるのか アホの極みだな
678 :
デフォルトの名無しさん :2011/09/28(水) 20:28:00.20
釣れたw 雑魚だけど
>>674 このスレは、あなたの言う変態プログラムのためのスレだから
うじゃうじゃいる方が当たり前
Androidの開発始めて久々にJava使ったけど、プロパティ無いとこんなに不便なのな。
681 :
uy :2011/10/03(月) 04:20:58.60
俺は最近
>>664 こういうソースコードをみると、古めかしさを感じるだけど、お前等はどうなの?
特に { ... } これが古めかしいよね
Rubyみたいに思い切ってendとか、Pythonみたいにインデント構造にするとか
Lisp、XML、 ぱっと思いつくだけで4種類も別の方法がでたが
古いものがよいとも限らないところがIT技術だねぇ
>>681 p :- q1,q2,q3.
というような構造もあるが。
uyには構いたくない…んだけど、乗っておくか。
TransactSQLみたいに文法の欠陥でBEGIN,ENDを書かざるを得ないのは最悪。
けど、Endホニャララってそんなに悪いもんでもないと思うよ。
{ ... }を使用(多用)する場合、特殊な意味(レコード型とかクロージャとか)に使いにくくなるし、
言語が強いるコーディングポリシによってはElseIf周辺で3行取る事になるのはどうよと思う。
というかEnd勘弁って人はなんでそう思うのさ?
>>683
ぶっちゃけどれでもいい… ブレース使うのは古めかしくも何ともないし endもインデントも括弧も何らおかしくはない 特定の書法を貶める気持ちは全く理解出来ん
たいていのエディタでは、対応するカッコ、ブレースを色づけしてくれたり、 ジャンプしたりできる。 愛用してるエディタがbegin〜endの対応をサポートしてくれるなら、そっちでもいいのだが。
beginがなかったりendの後ろにピリオド付いたり付かなかったり 気持ち悪い
>>686 自分で設定すればいいじゃないかプログラマなら
勉強でRubyやってたんだけどMacのXcodeで対応してたよ
他は知らん
ふつうのプログラマはvimかemacsを使う 誰かがfixしたり便利なマクロを先んじて作ってくれるからだ ダチョウ倶楽部のどうぞ、どうぞののりで
クラブ ダチョーって懐かしいな まだ居るのか?
Pascalもピリオド付くよ。
C#は名前空間単位のアクセス修飾が無いのと通信関係とコレクション操作のAPIが富豪過ぎるのを除けば良い言語 Silverlightは業務で使わない分には良いサブセット
付いたり付かなかったりの話しだろ?
ESPの end. もクラスの終了を表す時だけだから、ここでの話から すこし外れますね。
>>696 それにしたって、Pascalの場合は
エディタの設定には何も困らないんだよ
最近javascriptが楽しい node.js最高
それは動くものがすぐ目に見える楽しみと違うか?
OCamlを始めた。型周りが面白い。 もっと早くML系やっとけばよかった。
>>700 js使ってモジュール化してくのが楽しいよ。
単に見下したくて言ってるだけなら死ね。
>>702 モジュール化してくのが楽しいって、意味が分からん
モジュール化なんてたいていの言語で実現できるが、
jsでモジュール化するのと他言語でモジュール化するのとで、
「楽しさ」にどう違いが出るの?
JavascriptはPerlやPythonからおいしい所取りしてるから、 なんでもアリの楽しい言語だよ。 扱いを間違えれば、あっという間にカオスで、バギーになるけど。
美味しいところ取り切れてないからCoffeeScriptとか出てくるんでないの なんでもありというならそれこそPerlがそうだし、Pythonは真逆の思想でしょ いや、JavaScriptをバカにする気はないけどさ
ブラウザに載っているのがJavaScriptだけだから みんな仕方なく使っているだけ
>>705 表現力が高いことを言いたかったんだけどね。
Javascript1.7以降に限定されるけど、Python風にも書ける。
素数計算だとこんな感じで(Javascript1.8以降で動作)。
function range(begin, end) {
for (let i = begin; i < end; i++) {
yield i;
}
}
var prime = [p for each (p in range(2, 100))
if ([d for each (d in range(2, p))].every(function(x) p % x !== 0))];
var prime = for (i <- 2 to 100; p = for (j <- 2 to i; if i % j == 0) yield j; if p.length == 1) yield i
var prime = for (i <- 2 to 10 if (for (j <- 2 to i if i % j == 0) yield j).length == 1) yield i
バカにする気はないと言ってバカにしてるとはこれいかに
何で急に重箱の隅をつついてきたり、暗にバカにするのかなあと思ったら、 絶賛してる奴でもうお腹いっぱいって事かよ。 はいはい、素直に帰りますわ。
JavaScript面白いよ!で自己完結してる分には可愛いものだが ニュー即あたりで初心者に勧めてるキチガイは頭おかしいと思う
>>712 webプログラミングやりたいって奴にはjavaScript取り合えず勧めるけど、学習用途はhaskellだな
その後C#へ進めと言う流れで
haskell触ったこと無いけど モナディウスの詳細見る限りでは 言語学習というよりアルゴリズム力(論理力)アップに役立ちそうな感じがするんだけどどう?
>>714 モナディウスを見ても、関数型言語としてのアルゴリズムは
あまり参考にならないような気がする
が、Haskell がアルゴリズム力(論理力)アップに役立ちそうな
という感じは間違っていないと思う
今まで培ってきた自分のアルゴリズム力に、新たな発想力が加わるという意味で
ハスケルはそれなりに良い言語だけど、学習リソースが少ないからプログラミング初心者には勧めない
haskellをずっとメインで使うならともかく、学習用途だったら「プログラミングHaskell」一冊で十分だろ 練習問題も良い問題多いし
haskellをメインで使いつづけたら?手続き型のポトペタなアプリが書ける奴なんて、 その辺の道端に犬のウンコぐらいいくらでも転がってんだろ haskellでCSP、TSPなりパーサーなりをスラスラ書ける奴と 手続き型でありきたりなウェブアプリしか書けない奴を同時に面接するとして、 自分が経営者ならどっちを雇いたい?
>718 手続き型でCSP、TSPなりパーサーなりをスラスラ書ける奴と haskellでありきたりなウェブアプリしか書けない奴を同時に面接するとして、 自分が経営者ならどっちを雇いたい?
どちらかしか雇えないのなら、必要な方を雇うに決まってる どちらが必要かは、何をどう経営してるかや経済状況などによるとしか言いようがない そういう当たり前な前提条件を全く提示しないでたとえ話を持ちかける奴は、 どういう経営状況・経済状況であってもプログラマとしては雇いたくない
>>718 CSPとは何か、TSPとは、パーサーとは何か、を理解してればどっちでも書けるだろ
そう言うのを理解するためのhaskellで、必要なパフォーマンスに合わせて他の言語でも書けると良い
これまでの総勉強時間が100時間あったとして、 10種類の言語を10時間ずつやった奴と、2種類の言語を50時間ずつやった奴でどちらがマとして優秀か?と言えば後者だろう。 なぜなら前者はどの言語も環境や基本文法に慣れるだけの入門レベルで忙殺されて応用的な課題に取り組めないから。
そんな無意味な条件(トータル100時間なんてどっちみち初心者だろ?)で比較してまで 二種類しか言語使えない俺優秀って言いたいの?
そもそもスレチ
COBOLとSQLを50時間ずつなら、 手続き型、オブジェクト指向、関数型、論理型、機械語、 brainfuck,whitespaceなんかで計100時間ほど触った奴を選ぶよ
>>719 Haskeで募集して、PHPで書かせる。
問題ない 優秀な Haskeller なら Haskell->PHP トランスレーターを作って対処する
元のプログラムがPHPで書かれているから PHP->Haskellトランスレーターも必要だな
俺は広告代理店でバイクしてる時、サイト量産する事になったから、 PHP上で動くwikiみたいなフレームワーク組んで、ついでのようにそこにオレオレ言語のインタプリタ組んだ。 クソ遅かったけど、社内で大流行したわ。 あれ楽しかったな。
振り込むか通報かってやつ?
バイク→バイトだった。 要は広告枠をある程度自社でも処理しよう的な。
>>722 その言語とその方言ばかりで10言語100時間だったら、そこそこの
技量はついてると思うけど、全く毛並みの違う言語10言語だったら
時間は足りないだろうね。
Common Lisp,Haskell,C++,Prolog,Python,Java,SmallTalk,R,SQL,Fortran
を100時間で10言語といわれたら、かなりきつそう。
7つの言語7つの世界だっけ?あれが流行ってるから7つくらい概要を
知ることができる人は増えるかもしれん。
やってて楽しい言語?Lisp系に決まってるよ。文法は単純だし あるていど見につけてしまったら、制限らしい制限が殆どなくなる。 ただ、ライブラリの不足による制限を感じることはあるが。 やってていらいらする言語は?C++だったな。
Lisperはゴミしか作れないのに 態度のでかさ、横柄さだけは凄い
俺はLisp系にイライラした Haskellは
大好き
うむ
>>736 Lispは記法になれるのが大変だからね。Haskellも面白い。
日本人が英語に、あるいは英語ネイティブが日本語に戸惑
うところと似てるかもしれない。
BASIC覚えた頃よりも、LISPの方が習得時間が圧倒的に短かかった俺はイレギュラーかな(^◇^;) プログラムの概念を知っていたからかもしれんが(basicで)
Common Lispやってみたんだが、結局何もできん。 どうしたらよいものやら。 いや、末尾再帰がどうだの高階関数がどうだのってのは説明読めばわかる。 でも、他人にも使ってもらうような業務アプリ作るならGUIの作り方を知らなければならないし、 TCP/IP通信やら正規表現を使ったテキスト処理やらにも習熟しなくちゃならない。 これまでシェルスクリプト、awk、sed、python、Tcl/Tkを適当に使い分けてきたんだが、 それらの代替となるほどにLispを使い込む自信は全くない。
Lisp は文法が簡単だから覚えることが少ない気はする。 Common Lisp で使えるものを作ろうとすると、 整理された使いやすい標準的なライブラリない。
いろんな言語が使えるって豪語してる奴が会社にいるんだ そいつが最近Haskellかじってるとか言い出したから、8クイーンをお題に出してあげたら、 そんなにHaskell詳しくないとか言い訳はじめてくそわろたww じゃあJavaで書いてもいいよって優しさ見せてやったら、それでも解けないでやがるwwwバカスw 使いもしない言語を覚える前にやることあんじゃねえの?ww
勉強するために覚えた言語というのはあるかもschemeなんてその典型だろうよ。 8クイーンだって知らなくてもSICPでお目にかかることになるしね。 Common LispはInternet普及以前の仕様のままなのが辛いところかも、日本人で web関連を整備することに情熱をかけてる人は出てきてるけど、大変だよね。 ライブラリのことをきにしてLispをやるのならClojureが一番気楽かも。Java ライブラリをそのまま生かせるから。 Haskellって学習コストが高い印象があるけど、他言語習得者で実際に習得し た人何ヶ月くらいで、ちょっとした小物を作った?
>>743 そいつは言語オタクであってプログラマではないな
言語の文法は沢山覚えてるけど、8クイーン自体は作ったことないだろ
俺の仲間だわw
(それでもクイックソートとマージソートは作れるが)
>>744 Lispもマクロとか継続とか語りだしたら途端に難易度上がるし、Haskellと大差ない気がする
プログラミングHaskell読めばコマンドラインアプリならすぐ作れるようになる
(大体一か月?)
GUIとか外部パッケージは、Hoogle or Hahooがある分、JVMに乗ってない他のマイナー言語よりは大分情報探しやすいと思うけど
言語オタクだから、関数づくりに夢中になりすぎて実際のアプリはじゃんけんゲームとか、yesコマンドとかしか作ってないけど^^;
手続型言語よりも、作りたい関数をコードにしやすいんで、GUIライブラリさえ決めて覚えればjavaよりも簡単にGUI作れそう
(両方とも、テキストエディタ上での開発の場合)
glade(GUIビルダー)拡張してIDEになってくれんかね…
つ Xtext
>>746 マクロの感覚が身につくのは半年以上はかかるだろうな。マクロで
マクロや関数を作るってのは抽象化のセンスも問われるところだし
多分、これがうまく作れる人はhaskellのポイントフリースタイル
はすぐにできるようになる。両方共扱うけど、使うときのセンスが
共通してる。
Lisp:マクロ周辺,Haskell:モナド周辺, C:ポインタ周辺
この辺がそれぞれの言語を扱う上でワンランク上に行くの壁だろう。
モナドは、人が難しいというけど、やってることを見ると単純なこ
とだから。偏見がなければ習得は難しくない。モナド変換子まで行くと
混乱するかもしれないというのが感想。継続にしてもモナドにしても
感覚的に理解を促す説明が誰もうまくできてないのがダメなのかなと
思ってて、良い方法がないか模索はいつもしてる。
Haskellは最初からごっついモナドライブラリが付いてくるからなぁ 初学者は天から降ってくる感じになってしまう OCamlあたりでモナドを自作して使ってけば わりと簡単に理解できると思う
8クイーンかけるかけないって あんまマと関係なくないか
8クイーン別に大げさなもんじゃないよね Pythonで書くとこんなもんだ def queens(size): solve = lambda y: ((),) if not y else \ (((x, y),) + qs for qs in solve(y - 1) for x in range(1, size + 1) if all(x != u and abs(x - v) != y - v for u, v in qs)) return solve(size) for x in queens(8): print x
くだらなすぎるfizzbuzzより適切かもな
はたして8クイーンは C++ の template で解けるか?
>>752 FizzBuzzは
「根本的にプログラマに向いてない人種」
を振り落とすための問題だから仕方ないな
>>751 大げさに間違ってるのはギャグのつもり?
うお、ほんとだw > if all(x != u and abs(x - v) != y - v for u, v in qs)) if all(x != u and abs(x - u) != y - v for u, v in qs)) こうかな
「こうかな」って 別に大げさなもんじゃないなら、もっと自信持てよ
pythonって循環定義(solveの定義の右辺にsolveを利用)を許すんだ。 ちょっとびっくり。
>>759 たぶん変数が関数スコープだからだと思う
やった!!! 高卒の自分でもHaskellで自然数の定義と加減算の定義ができたよ… (デクリメントに発想の転換が必要だったけど・・・) -- 自然数を定義 data VNum = Zero | One VNum deriving (Eq,Ord,Show,Read) -- 加算を定義 Zero +^ n = n m +^ Zero = m m +^ n = inc m +^ (n -^ (One Zero)) -- 減算を定義 Zero -^ n = n m -^ Zero = m m -^ n | m == n = Zero m -^ n = dec m -^ (n +^ (One Zero)) -- インクリメント(1+)を定義 inc n = One (n) -- デクリメント(−1)を定義 dec (One (n)) = n 3+2の独自定義版の使用例 *Main> (One (One (One Zero))) +^ (One (One Zero)) One (One (One (One (One Zero))))
ごめん 減算の定義が間違ってた 正しくはこちら -- 減算を定義 Zero -^ n = n m -^ Zero = m m -^ n | m == n = Zero m -^ n = dec m -^ (n -^ (One Zero))
今までの文脈に全く関係ないそういうのは Haskell スレでやれよ
すまん 嬉しくてつい・・・
やってて楽しかったなら別にいいんじゃね
766 :
デフォルトの名無しさん :2011/11/09(水) 10:27:49.27
>>764 かまへんよ。嬉しいことは多くの共有したいもんね。:-)
>>751 でも絶対に使いたくない言語だと思わせる。
fizzbuzzって最近知ったんだが ほんとに書けない奴いるの
そりゃまあ世の中にはいるだろうな
おるから、一番最初の篩に使ってるんだろう。
fizzbuzz は書けるかどうかじゃなくて、 如何に面白い、そうきたか、と思わせる書き方ができるかが大事 そういう意味ではソーティング アルゴリズムなんかと似てる
haskellでエイトクイーン でももっと短く書けるに違いない module Main(main) where import Control.Monad import Data.Tuple main = print $ nQueen $ 8 nQueen n = nQueen_ (n-1) (map return [1..n]) where nQueen_ 0 result = result nQueen_ c base = do xs <- base x <- [1..n] guard (cond x xs) (nQueen_ (c-1)) $ return $ (x:xs) cond x xs = let list = zip (iterate (subtract 1) (length (x:xs))) (x:xs) (p:ps) = tUnion (+) list (m:ms) = tUnion (-) list in notElem x xs && notElem p ps && notElem m ms tUnion f [] = [] tUnion f (x:xs) = (f (fst x) (snd x)):(tUnion f xs)
>>768 学校でプログラミング習うと
分岐やループ辺りから何人か脳がフリーズし始めるよ
Cで書いてもこんぐらい #include <stdio.h> #include <stdlib.h> void print(int *pos, int n) { int i; for (i = 0; i < n; ++i) printf("(%d, %d) ", i + 1, pos[i]); putchar('\n'); } int safe(int x, int y, int *pos) { int i, d; for (i = 0; i < x; ++i) if ((d = y - pos[i]) == 0 || abs(d) == x - i) break; return i == x; } void queens(int n, int x, int *pos) { int y; if (x == n) print(pos, n); else for (y = 1; y <= n; ++y) if (safe(x, y, pos)) queens(n, x + 1, (pos[x] = y, pos)); } int main() { int pos[8]; queens(8, 0, pos); return 0; }
>>773 basicで値の交換が理解出来ない人が居たのには驚いた
(関数使える言語なら、まだ分からなくはない)
>>772 haskell ってそんなに簡単にかけるのですね。うらやましい。
OCamlだとこんなもんか let rec (--) x y = if x > y then [] else x :: (--) (x + 1) y let queens n = let rec f = function 0 -> [[]] | y -> [[(x, y)] @ s | s <- f (y - 1); x <- 1--n; List.for_all (fun (u,v) -> x != u && abs(x - u) != (y - v)) s] in f n let _ = List.iter Std.print (queens 8)
>>774 > queens(n, x + 1, (pos[x] = y, pos));
恥ずかしながら、この用法初めて知ったよ。
更新したものを返すのを引数内に書けるのね。
今まで","はfor文第一引数で複数の変数の初期化とかしか使ったこと無かった。
得した。ありがとう。
>>777 ああそうか、最初から二要素タプルにすれば良かったのね
直した
import Control.Monad
import Data.Functor
main = print $ length $ nQueen $ 8
nQueen n = nQueen_ 1 (map return (zip (repeat 1) [1..n]))
where nQueen_ m base = if m == n then base
else do xs <- base
x <- [1..n]
guard $ and $ (\(i,j) -> x /= j && abs (m+1-i) /= abs (x-j)) <$> xs
(nQueen_ (m+1)) $ return $ ((m+1,x):xs)
やべえ、Cはわかったけど ハスケルもオカムも全然わからん
>>782 そりゃ、文法くらいは覚えなきゃ判るわけないw
でも、Cより、ポインタとか機械寄りな概念がない分、素直に書けるし、素直に読める。
自然数の定義なんて、
data 自然数 = ゼロ | ひとつ足す 自然数
型、自然数はゼロか、自然数にひとつ足したもの。と言う定義。
ゼロは自然数だから、
1 = (ひとつ足す ゼロ)
ここで「1」と「ひとつ足す」が=(イコール)じゃないのがミソ。
インクリメントは、何か自然数を受け取って、「ひとつ足す」
inc n = ひとつ足す n
デクリメントは何か自然数に「ひとつ足したもの」を受け取って、「ひとつ足す前の」自然数を返す
dec (ひとつ足す n) = n
それを処理系が解釈できるように
>>761-762 は半角英数で書いてるだけ。
>>782 他人のコード読むなら、CでもhaskellでもOCamlでも組込み関数覚える必要は有るな
でも、Cと違って型宣言の読み方に複雑なパターンはない
(関数ポインタとか)
何より、基本的なデータ構造が配列とリストって言う違いが大きい
手続き型言語だと入門終わってから使う柔軟なデータ構造なのに、それがデフォルトになってる
配列の方が、簡単さ、柔軟さを犠牲にして速度を求める、入門終わってから使うデータ構造と言う位置付け
list処理がマスターできたら、ほとんどループは使わなくなると思うよ。 確かに早さが違うもんな。配列は任意の要素にアクセスするのにO(1)だけど リストはO(N)、順次処理させるようなものはリストは得意だし。 今年はhaskellを身につけるという方針でやってるけど、いつか、 prologとsmalltalk をやってみないとと思ってる。今までやってた言語にくらべても 毛並みが違うから時間が欲しそうだし。これらの言語を楽しくて使ってる人 あまりいないのかもしれないが。
>>786 概ね同意だけど、
> 順次処理させるようなものはリストは得意だし
「順次処理」なら配列も同じ
次の要素へのポインタを経由しなくて良い分、むしろ配列の方が得意
リストは挿入や連結が配列に比べて得意
OCamlやHaskellのリストはimmutableだから挿入や連結も苦手だけどな 本当に速いのは先頭への追加/削除だけ
>>789 え?
add3 (n1:n2:n3:ns) x = n1:n2:n3:x:ns
>>789 速さよりも単純明快さを求めてるからな
速さ求めたければ配列でやればいいし
>>790 「先頭に近いところ」への追加は速いと言ってもいいけど、
add3を一般化てaddNにしたら、addNはNに比例する時間が掛かる
>>792 内部的には他の言語も同じだと思うが・・・
>>793 破壊的なつぎかえ(splicing)を許しているのなら、途中の入れ替えもO(1)でできるよ
Lispで言うとconsセルのcarまたはcdr部の書き換え
splicingを使わないのなら、リストが動的配列に対して勝る部分は正直なにもないね
動的配列でも末尾の追加はO(1)で、全要素にO(1)でランダムアクセス可能だ
>>790 馬鹿?
文法で得手不得手を語ってる流れに見えた?
何もないとまで言うのはさすがに言いすぎか 関数型言語でリストが多用されるのは、それが再帰と相性がよく、 部分列を(ポインタのような飛び道具なしで)自然に扱うことができて、 先頭への要素の追加が既存の部分を破壊しないからだろう (動的配列ではメモリが再配置される可能性がある)
>>792 騙されたなw
add3 (n1:n2:n3:ns) x = n1:n2:n3:x:ns
も
add (n:ns) x 0 = x:ns
add (n:ns) x num = n:add ns x (num-1)
も同じ。二つは、再起でメモリ消費するかしないかだけで、データ構造としてのリストは「先頭から順に辿る」のは変わらずO(n)だw
破壊的かどうかも、メモリ上でリストをコピーするか、しないかだけで、データ構造としてのリストはどの言語でも、「先頭から順に辿る」は変わらず、O(n)なんだよwww
破壊的かどうかってのは、リストと言うデータ構造の速度とは別の問題。
>>797 何に騙されたって?
ともあれ、破壊的更新ができるリストなら、あらかじめ末尾へのポインタを持っておけば
定数時間で連結できるよね
>>798 変動する末尾へのポインタ保持するのに結局最初から辿らないといけなくね?
うろ覚えだが、Cのデータ構造としてのリストも
struct intList
{
int value;
intList *next;
}
みたいなのじゃなかったっけ?
>>799 いや、末尾へのポインタをずっと保持しておいて、必要に応じて更新するという手段がある
末尾への要素の追加と二つのリストの連結は(末尾ポインタの更新を含めても)定数時間
構造としては、そのintListを使って、
struct wholeIntList
{
intList *first; /* 先頭ノードを指す */
intList *last; /* 末尾ノードを指す */
};
みたいにする
今思い付いたアホアイデア 上のレスのやり方は双方向リンクリスト+頭とケツを覚えておく、だよね。 そこに[ほぼ真ん中も覚えておく]とするとO(log)になったりして
いや、挿入がO(n)になるか(w
>>800 うーん・・・
それでいくと
head xs = xs!!1
last xs = xs!!(length xs -1)
みたいな感じで、!!は定数(O(1))だけど、length xs -1の部分でO(n)掛かってるよね。みたいなのは変わらん気も・・・
(いや、!!も実際はO(n)だろうけど・・・)
参考までに、どういう仕組みでリストの末尾を保持するのか教えてほしい
.
>>803 前半何言ってるか分からん
>参考までに、どういう仕組みでリストの末尾を保持するのか教えてほしい
要素数1のリストの末尾を保持するのは簡単(空リストはちょっと特別扱いが必要)
そこから始めて、
・要素を先頭に追加する(末尾は変わらない)
・要素を末尾に追加する(末尾ポインタの更新は自明)
・二つのリストa, bを連結する(bの末尾が全体の末尾になる)
を繰り返すことでリストを作れば、ずっと末尾ポインタを持ち続けられる
末尾からの要素の削除はできないけど、これは単方向リストなので仕方ない
oz/mozartってインストールしてみたけど、emacs必須の言語なんだね。
なんでリスト実装のお勉強が… クヌース先生の本でも読めば…
上司からの指示をそのまま解釈して意図通りにちゃんと動くアプリケーションを出力してくれるコンパイラはどこにありますか
>>808 むちゃくちゃ安いな
それどこだよ
会社名やホームページ、住所や電話番号さらせ
またも何も、Javaの時代は別に終わってないだろ
tes
VBってやたら変な記述してるね 今ではVBとC#はその記述以外大体同じらしいのに このスレではC#だけ持ち上げられてVBがさっぱりなのはそのせいなの? Basicから抜け出せない人用か
だいたいゲイツのせい
>>813 C#と同じこともかけないしね。λとか、.net FW3.5以降の美味しい所はあんまり食べれない。
とは言うものの、うちはVB.netだよ。その通り、前のバージョンがVB6だから。
インフラ周りはC#とcppだけど。
c#とほかの.Net言語を混在させてるプロジェクトあるのかなあ
うちはそうだよ。あと未だにVB6も残ってる。 初期はVB側の人が、大文字小文字に無頓着で、イラっとしたりしたが、最近はコーディング規約が現実的な所に落ちて来てて、 あんまり不自由無いよ。 VisualBasic.dllは重たいが。
a = b = 0 VBでは代入は文なので曖昧性はない。
左端っつーか、文を書くときに=を書くと、かな 式を書くときに=を書くと確実に等価演算子 てかBASIC出身の俺からすると C系の「代入が値を返す」仕様はデメリットのが大きく感じるよ
>>818 代入構文以外だとかならず比較演算子だから、大丈夫。
心配なら右辺にカッコつければいい。
那覇那覇
>>821 「代入」操作自体が、関数の一種だとかんがえればいいと思う。
「代入操作」が手続きのの一種ではなく関数の一種となってしまう事に違和感を感じる
代入って代入演算子だから四則演算や比較演算と同じ扱いじゃないのかね それが文扱いになるのってVBだけ?
>>826 文扱いになる代入操作は VB 以外にも Python や「なでしこ」などある
こういう言語では、代入は代入演算子ではない
BASICの代入は、SETほにゃららの省略じゃ無かったっけ?
>>826 そもそもBASIC系はだいたいそうだよ
>>828 LETね
SETはVBなどにある、参照の代入
そう言えば、LET A = 1 って数学的な記述方法なんだよな Haskell も let a = 1 だ
書くことが楽しい言語ってのも無いな。 結局、結果を見てその成果物の成長を楽しめないならクソ言語。 書くことが楽しくて、やってることが単なるリファクタリングばかりなら 不毛でしか無い。 ということで、楽しいとなると、シェルスクリプト(zsh, bash)とC++か。 前者は、とにかく必要なものをすぐ作れて楽しい。 後者は、グラフィックスとかアーカイバとか、個性のはっきりしたものを作れて楽しい。
楽しいと言えばアセンブラだろ。 書いた通りに動くぞ。 あとドマイナー言語だが、MUMPSは滅茶苦茶面白い。
Mは超メジャーじゃないか
tes
( ^ω^)おっおっおっ
834だが、誰かMスレ立てないもんか。 まぁもともと人口少なすぎるし、全く伸びないだろうが。 各社、化石のような、例えばU-MUMPS時代のルーチンを礎にいろんな事してると思うんだが。
自分で立てたらどうかな?
立てた事無いからわからんのだよ……
スレタイと
>>1 を書いてくれたら誰か立てるんじゃね
そういうスレあるしな
>>843 こっちだとeの上に点が乗ってるように見えるよ、環境によって表示されないってことなのかな
ああ、2chの本文だと見えるだけか 実際のスレタイは見事に化けてた
>>845 そうそう、本文には書ける事しってたから、そのまま行っちゃったら化けたよ。もっと仕様を確認すべきだった。
しかも案の定伸びないしw
まぁ、即身バレするからなぁ。
RDBで特に困ってないしなあ。
普通はRDBで全く問題ないからね。うちも、会計系にはOracleつかってる。集計やら統計はやっぱフットワークが違う。 ただ、生産、出荷、途中の検品なんかは、他資本入った時にやっぱモノイイついたものの、 両方作った上でのベンチマークでCachéの圧倒的勝利に落ち着いたよ。
VSのMFCには不思議な魅力がある はた目には難解すぎるライブラリなはずなのに… 難解すぎるから、分かるまで挑戦したいと思わせるんだろうか… 学制の頃バイトで金貯めてやっとの思いでVS6.0買ったけど、今は学生じゃないからなぁ… あ、Haskellも好きです こっちはシンプルすぎるのが好き Winじゃ日本語文字化けするのが難だけど… 実用的な言語と面白い言語は別だよなぁ…と思いつつ、どっちにも魅力を感じる今日この頃 ちら裏でした
今まではMFCで書いとけばWinでは何とかなるだろう感があったが、Vista以降微妙な感じはするな。
>>850 VS2011のMFCのクラスの強化具合が分かるまでは何とも言えないが、VS2010でも順調にMFCは新しいクラスが追加されてるみたいだし、これまで通りパフォーマンス向けはx86 or x64に特化でMFCも残るんじゃないかな
そんなパフォーマンスが必要な場面は確実に減ってるけど、無くなりもしないだろうし
個人的にはARM向けにもネイティブ吐けるようになると嬉しい
(その分、for x86, for x64, for ARM。みたいになるんだろうけど)
>>851 昔はVSでCEのSH3とかのコードも出せたし、そこは安心しててもいいかもな。
どう考えてもObjective-C Cocoa, iOSの言語だから
>>854 どう考えた結果なのか言わないのなら、なんの意味もないゴミ発言だよ
多分 > Cocoa, iOSの言語だから なんじゃね? そういう人なんでしょ。
まあ、そういう人ならもう仕方ないな
理由にはなってるな。 ある程度的を射てる。
Javaに素晴らしい所があるとすればJVMで動作する数多くの優秀なソフトウェアがある事だし、 プラットフォームの魅力って重要だよね。 連携すればすぐに出来のいいソフトウェアが作れるのは楽しい。 構文とか意味論とかの面で見る所が無くてもね。
>>859 > Javaに素晴らしい所があるとすればJVMで動作する数多くの優秀なソフトウェアがある事だし、
大量のCPUを並列に動かせないのでつまんないんですけど
>>860 スレッドわかんねえんだろ?
無理すんな(笑)
JavaはCPUやコアのリソース配分はどうやるの
やれるやれない以前に、そもそものJavaの思想から考えると CPUとかリソースは基本的には「触れるべきでない」部分じゃないかな
>>861 fortran のような並列化はしてくれんだろw
write once,debug everywhere
write many times, run nowhere
>>859 ビジネス向けはね
ゲームはC#+XNAの方がwin+xbox360+WP7でコード資産は上回ってる
日本では魅力的なwp7.5端末でないとダメだろうけど
xbox360とかWP7に魅力はないし、WindowsでもXNAを使ってどんな面白いゲームが出てるのか知らないし むろんJavaでゲームというのもずいぶん寒い状況だけど、一応Minecraftっていう面白いのはあるな
869 :
デフォルトの名無しさん :2012/01/11(水) 18:56:19.05
>>868 完全にJava製なの?>Minecraft
MinecraftフォロワーのTerrariaっつーPCゲームがあるが これはXNA製だな
Perl、Ruby、JavaScriptとやってきたけどどれも楽しかった プログラムの手助けになるライブラリや、新しく追加された言語仕様を数年遅れで知って 「うおーこんなのもあったんだー」となるのがますます楽しいね
Perl の最近の仕様変更は面白いな 知ったときは面白い割に、頭に入らんけど…
873 :
デフォルトの名無しさん :2012/01/17(火) 22:15:40.18
やはり、すっきり書くことができなくては、 Haskell, Prolog, Smalltalk の3つで決まり。
やってて楽しいというか、ストレスを感じないのはC#だな 構文とかライブラリの命名規則とかが だがLinqのクエリ式、てめーはダメだ
>>874 なんで?
けっこう合理的な設計だと思うが
>>875 ごめん、なんかえらそーにダメだとか言ったけどただの俺の好みなんだ、すまない
今までのクラスとメソッドをベースにした文法と掛け離れてるから
何をしてるのか俺にはぱっと見で理解できない
SQLをよく触ってる人からしたら分かりやすいのかもしれんとは思う
プログラミング言語と呼べるかは別として、 SQLは、面白いと思うけどな。 パズルっぽくて。
SQL書くの楽しいよな 読むの嫌だけど。
確かにこんな事も出来るのか的な発見は何時もあるよねSQLには。
むしろSQLは読んでるほうが楽しい 自分が書くと、あんまり色んなこと考えたくなくなって ごく単純なSQLで済ませてしまいたくなる
それは楽しんでないだろw
長いSQLは人間が読むものじゃないと思う GUIとかで自動認識させてer図でみれないかな
>>883 guiで作ったクエリで大失敗したことないか?
七月位に新人が本系にマジで投げよって業務停止させるのが恒例だったな。俺が前居た会社だと。
UPDATE a_tbl SET flg = true; ____ /::::::─三三─\ /:::::::: ( ○)三(○)\ |::::::::::::::::::::(__人__):::: | ________ \:::::::::: |r┬-| / | | | ノ::::::::::::: `ー'´ \ | | |
うあ゙ぁあ ・゚・(´Д⊂ヽ・゚・ あ゙ぁあぁ゙ああぁぁうあ゙ぁあ゙ぁぁ
>>885 ぎゃあああああああああ
CRUD時はWHEREの使用を強制する文法の方が良かったよな…
commitしておきますね^^
885にこのスレの終了フラグを全部立てられたようだな
ほんっとにこのスレ終わっちゃったな それ以前からRubyネタも消えちゃってたし
実は自分が昔投下したHaskellネタにRubyユーザーが食いついてくるかと期待したが、一度も来なかったな・・・ アンチ関数型言語スレでも食いついてくるのはpythonユーザーだけで、rubyは来なかった オブジェクト指向言語としてはpublic/privete/protectedが指定できないpythonよりもしっかりしてるし、底力見せて欲しかったんだがなぁ・・・
Rubyは理論じゃなくて実験的、技巧的な話をしたがる人が多いかも Haskellな人はコードを無視してもの凄い勢いで理論の話をするからRubyな人は離れてくと思う
>>892 > Haskellな人はコードを無視してもの凄い勢いで理論の話をするから
頼むから偏見を持たないでくれ
やっぱ偏見なのかな?でもそういうイメージ強いんだよなあ
世界中の普通にHaskellを使ってアプリを作ったり研究してる人たちは、 相手のことを考えずコードを無視してもの凄い勢いで理論の話をしたりはしません 会話の相手に応じてちゃんとトーンや内容を使い分けます これはHaskellに限らず他言語を好む人たちも同じです コードを無視してもの凄い勢いで理論の話をしたり、 理論を無視してもの凄い勢いで技巧的な話をしたりするのは、 扱っている言語ではなく、その人自身の性格の問題です
〃∩ ∧_∧ ⊂⌒( ・ω・) はいはいハスケルハスケル `ヽ_っ⌒/⌒c ⌒ ⌒
897 :
デフォルトの名無しさん :2012/03/06(火) 23:55:56.50
漏れもハスケるぜ!
898 :
109 :2012/03/07(水) 00:25:51.66
Excelをバリバリと計算に使う事務職の人には、関数型言語はとても理解してもらえると言うことが最近わかった。 手続き型言語は何度説明しても、ふうん。逆に面倒そう。といった反応だったが。
どいつもこいつも贅沢だな。 物凄い勢いで理論の話をしてきても結構。 物凄い勢いで技巧的な話をしてきても結構。 一番メンドクサイのは何も言わないで人を見下した顔している奴。
例えば誰のことよ
人を見下した顔して物凄い勢いで生まれて来た奴のことだよ
想像したらワロタ
903 :
デフォルトの名無しさん :2012/03/07(水) 12:52:58.20
個人的にはjavascriptが楽しいかな node.js+html5+jsで大体やりたいことは全部できるし(俺の中では) jqueryつかうとDOMを面白いようにいじれるし あとは人の書いたコードでxssできそうなとこを探すのも楽しい haskellも興味はあるけど関数型ってのがまだいまいちわからん
JavaScriptは関数型言語
>>903 > haskellも興味はあるけど関数型ってのがまだいまいちわからん
そりゃ使わなきゃ分かるわけがない
>>904 確かに手続き型の中では比較的関数的な書き方ができる言語だが、いくらなんでも手続き型言語だろう
関数型に、比較的出来る、みたいな意味不明な状態はない
×意味不明 ○曖昧
言語というよりもメタ言語の範疇になるだろうけど、yacc,lex(bison, flex)でインタープリター書くのは結構楽しい。一種のパズルゲーム的な意味で。
楽しいが、そのうちyaccは使わなくなる。 オレオレ言語をオレオレ言語でコンパイル出来るようになった頃。
今はcoffeescript まだ勉強中だが
今までC〜JAVA系書式の言語ばかりやって来て ちょっと関数系でもかじろうかな〜ってことでF#とHaskell試してみたらチンプンカンプン こりゃこの書式に慣れるまで苦行だなあ
>>914 きっとそのチンプンカンプンの根本の原因は書式じゃなくて考え方だ
Haskell はブロックを { } でも表せるし $ は基本的に ( ) に置き換えられるけど そうしたところで手続き型ではないから 「手順を書くのがプログラミング」 「プログラミングの基本は順次・分岐・ループ」 といった常識が通用しないことも多いね もろちん手順を書けないワケではないし、少し違う形で分岐や繰り返しも存在するのだけどね
>>914 慣れると、関数型の方が楽だよ
オブジェクト指向はライブラリがサポートしてる範囲はメソッドを利用するだけになるけど、そこから外れるとメソッドを手続き的に作る必要がある
ライブラリのサポート範囲によってプラットフォームが変わってしまうので、考え方が違ってくるけど、関数型言語は、基本は関数適用という同じ考え方で統一されてる
小さい関数は再帰関数が多いけど、それも自分自身を「関数適用する」し、大きめの関数は、既存の関数を「関数適用する」だけ
>>917 コード量の比較等を見れば確かに慣れたら楽そういや楽しそうだけど
その慣れるまでが、ネット講座とか少ないし厳しい
画像表示とフレーム毎の処理とマウスキーボード入力どうすればいいのか
とりあえずMonadiusのコード切り貼りしてみようと思うけど
>>917 > オブジェクト指向はライブラリがサポートしてる範囲はメソッドを利用するだけになるけど、そこから外れるとメソッドを手続き的に作る必要がある
私は Haskell も C/C++ や Java も日常的に使っていますが、
オブジェクト指向言語に対するこの認識が私にはよくわかりません。
オブジェクト指向でライブラリがサポートしてる範囲の
メソッドを利用するだけの部分も、どう考えても「手続き的に」記述して
利用する必要があると思うのですが。
もしかして、メソッドを呼ぶだけの場合は宣言的になるという意味でしょうか?
環境が変化する順(フロー)を意識しなければならないメソッド呼び出しは、
宣言的とは言いがたいと私は思います。
違うことを言っているのでしたらごめんなさい。
あと、関数適用あるいはメソッド呼び出しにおいて、
その記述的な違いは表層的なものであり本質ではないと思います。
Haskell のような関数型と C++ のような手続き型で本質的に違うのは、
記述的なことではなく、関数型は参照透過性が保たれること、
これに尽きると思います。
・手続き型 コード上から順番に実行 ・オブジェクト・関数型 処理に応じてコード飛び飛びに実行 手続き型は塊が大きく内部複雑でバグ多い オブジェクト・関数型は塊を小さく出来 純粋関数型では代入を排除しバグも更に減少 こちら関数型初心者だけど>917の言いたいのはこういうことでは? 「既存の関数(中身は手続き型だけど完成されててバグ無し)」について分けて語ってるし
>>919 >環境が変化する順(フロー)を意識しなければならないメソッド呼び出しは、
>宣言的とは言いがたいと私は思います。
これは、Haskellでもdo構文使えば同じように手続き的になると思うのですが・・・
それは置いておいて、rubyやsmalltalkのような純粋なOOだと、メソッドチェーンが繋がりやすいのですが、これは関数型言語も関数適用の連鎖で最終的にほしい関数を作るのに似てるな・・・と感じます
ただ、ほしい関数(やメソッド)の部品として作られた関数(やメソッド)の作り方が関数型言語はやっぱり関数適用であるのに対して、オブジェクト指向は手続き的になるな・・・と感じました
そして、順序を意識したHaskellのdo構文は、関数数適用という考え方のまま、手続き型をエミュレートしてるという感覚を最近感じています
>>918 プログラミングHaskellをまずは読んで下さい
その後なら、ネットの情報も生きてきます
結局、大部分は優しく書いてるだけで、理解を促す書き方になってるとは言いがたい
文法覚えるだけならネットや他のHaskell本でも十分ですが、考え方を覚えるにはプログラミングHaskellか、プログラミング in OCamlのような、実際に大学で関数型言語の授業をしている人が書いた本を読む必要があります
>>921 ごめんなさい、言葉が足りなかったです。
私が言っている環境というのは、アプリの振る舞いに影響を与える情報を蓄える
メモリ全体の内容の事です。
手続き型の場合、あるメソッドを呼んだ時に、
環境の複数の部分が同時に変化する事は普通にあります。
そして、ある部分の変化がその後に呼ぶメソッドの振る舞いに影響を及ぼします。
このためプログラマは環境の変化の順を意識します。
言語仕様も意識する必要がある部分を可能な限り局所化しようと工夫され、
プログラマの方も環境の局所化に苦心しますが、根本的に宣言的にはなりにくいです。
Haskellでこのような意味での環境の変化順を本当に意識しなければならないのは、
ほとんどの場合IOモナドを使っている時だけではないでしょうか(do表記かは無関係)。
この時ばかりは、変化する環境に影響される部分がコードの広範囲に渡る可能性があり、
アプリのコード全体でちゃんと意識しなければなりません。
それ以外のモナドでは、わざと環境の変化順を意識させるような構造・使い方でない限り、
たとえdo表記で見た目手続き型っぽく書いても、それほど意識する必要はないです。
せいぜいリストを map f に通してから map g に通す、程度の順の意識で良いはずです。
(この場合の環境変化は、超局所化されて引数と戻り値の関係だけになり、意識すらしない)
なので、IOモナド以外のモナドでは、
普通にHaskellコードを書くのと同程度には宣言的に書けます。
例えばYesodというWebフレームワークではdo記法を多用しますが、
むしろdo記法でより宣言的に書けるように工夫されています。
>>923 私の言いたいこととあなたの言いたいことは概ね同じなんですが・・・
要するにですね
何か処理させたければ、必然的にOOでも関数型でも何らかのメソッドや関数を作らないといけません
その時点で、OOは手続き的にならざるを得ないが、関数型はどこまで行っても関数適用(宣言的)だ。と
(do記法すらも、モナド記法よりも手続き的に書いたほうが読みやすい場合に使う為の構文糖衣だと感じている)
OOな人たちに波風立てたくないから、オブラートに包んでいるのに、オブラートを引き剥がさないで下さいw
Listモナドも「先頭から順に」という順番はありますよ
意識しないといけないほど順序がハッキリしてるのは確かにIOモナドだけかもしれませんが
>>924 > OOな人たちに波風立てたくないから、
気づかなくて申し訳なかったです。
> Listモナドも「先頭から順に」という順番はありますよ
私が言ってるのは環境が変化する順なんです。
では、どのような時にListモナドに対して
「先頭から順に」という順番を気にするのでしょう。
>>917 > オブジェクト指向はライブラリがサポートしてる範囲はメソッドを利用するだけになるけど、そこから外れるとメソッドを手続き的に作る必要がある
やはり私には、コードの中でメソッドを利用するだけの部分も、
どのように利用するか、つまり環境をどの順でどう変化させるかを考える必要があり、
その手続きをコードに書いている様にしか見えないです。
>>925 え、リスト使うときに(x:xs)とかしない?それが、順序を気にしてるところだよ
環境・状態って言うよりは構造って感じで、あなたも私もあまり意識はしないけど
モナドそのものが順序の無い関数の世界に順序をもたらすものだから、環境・状態に限らず、順序を意識するものはモナドで定義されてる
そのおかげでIOモナドも宣言的に書けると言える(大抵はIOモナドはdo記法の方が読みやすいが)
数学セミナーによると静的マンセー(ここで言う静的は恐らく宣言的)な数学で動的なものを表現しようってのがどうやら圏論(モナドの元になった数学の分野)らしいんですね
(数学セミナー2011年7月号第一回圏論の歩き方・参照)
一応、擁護すると、最近のオブジェクト指向言語(主にLL)は関数型言語とも被りますが、イテレータ等でループを表現できるようになってますよ
Haskellで言うfoldlがeachに、mapはまんまmapという「メソッド」として
もちろん、それでも関数型言語ほど宣言的には出来ないし、一応OOも宣言的を目指してるはずなんですが、どうしても全部宣言的とは行かない(というか、ほとんど手続き的)です
(ついでに言うと、蒸し返したこの部分がまさにオブラートですw)
>>926 > え、リスト使うときに(x:xs)とかしない?それが、順序を気にしてるところだよ
それはListモナドの事では無くて、リスト構造の事なのでは?
リスト構造を持つデータ型を自作して、それを Monad のインスタンスにしなくても、
全く同じ事が言えるような気がするのですが・・・
もともとデータの構造の中に順序の概念が含まれているので
(というか、順序の概念をデータ構造にしたと言っても良いですが)、
それは手続き型の言語で扱おうが、関数型の言語で扱おうが、
Plorogのような論理型の言語で扱おうが、
どれも同じように「構造の順」を意識する必要があると思います。
ただ、その扱いの中で環境の変化する順を意識する必要があるかどうかは、
言語に依ると思います。
928 :
926 :2012/05/17(木) 07:30:02.00
>>926 既に「構造って感じで」とおっしゃって説明されていますね。
申し訳ないです。
考えていることがだいたい同じであることは分りました。
いい加減スレチなので、この辺りで引きます。
長々とすいませんでした。
929 :
927 :2012/05/17(木) 07:31:08.97
>>928 名前欄のレス番が間違っていました。
大変失礼なことをしました。
>>926 foldl は reduce とか inject とかって名前であることが多いと思うよ
リストで言えば、次のどっちを選ぶかで性能が変わったりする (f xやg xが[]を返すことがある場合) [(x,y,z) | x <- xs, y <- f x, z <- g x] [(x,y,z) | x <- xs, z <- g x, y <- f x] だから環境の変化が無くても順序を意識することはある
AS1.0、JAVA&C#(XNA&Form)とやってみて今回C++CLIFormを齧った この辺で比較してみると色々認識できて面白かった ただしモノ作る分にはC++の情報が少な過ぎてキツイ C#なら楽に組めるのに記述が違うだけの同じマネージ言語に変換する空しさもね・・・ 画像ビューア作ってたけどもう「C#ならとっくに完成してる」ってことにして とっとと素のC++かF#に進もうかな
>>851 QtやらWTLやら便利なもんあるんだから
未だにカビ生えたようなライブラリつかうなよ
>>854 むしろNextStepとUNIX系だがな
GNUStepもしらんのか?
しらん
937 :
デフォルトの名無しさん :2012/07/09(月) 18:29:13.83
何の言語でもいいが、車輪の再発明はなぜか楽しい。 無駄だアホだと言われてもやめられん
再発明もだが、車輪がなぜ回るのかを理解できた時も楽しいぞ。 ブラックボックスの中を知る必要性はたいていは無くて、 こっちも仕事的には無駄だアホだと言われる類のことだけどな。
車輪の再発明するなってのは罠だと思ってる やったほうが勉強になる
そんなのは状況と目的によるだろ。 趣味で勉強してるのなら、再発明は避けるべきではなく、積極的に行った方が良い。 納期の決まってる仕事なら、積極的に行うべきはむしろ再利用だ。 どんな事に何が再利用できそうか、日ごろからアンテナを張り巡らしておかないといけない。 予算があるなら、有料のライブラリやミドルウェアなどの購入も検討すべき。 勉強は昼休みや終業後にファミレスなどで勉強会を開いてやって、仕事中は再利用に集中。
状況や目的によらず、やった方が勉強になる > 車輪の再発明 ただし他に優先して勉強すべきことがあるかもしれない
>>941 すまん
「車輪の再発明するなってのは罠」に反論したつもりだった
再発明はスキルレベルを高めるにはいい、ように思えても無駄だからさー 時間は大切に使えよ ゴミカスのような作業に必死になっていないで。
少なくとも言語習得には一番良い方法に思える
誰にも遊んでもらえない ウンコレベルのゲーム作ってる uyが何言ってんだ? あんなの再発明以外の何物でもないだろ
>>945 お前は何か言う権利を主張できるほど、いや、人が何か言う権利を押さえつけられるほど
ご立派なものを作っているのか?
たとえ立派なものを作っていても、他人の権利は奪えないのであしからず
アホにアホと指摘する権利
そんな権利を持っていても、普通は行使しないよな 意味無いし、時間の無駄だし、自分に返ってきそうだし
アホは生存そのものが無意味で時間の無駄
そんな事はないぞ お前にとっては、下には下がいるんだと安心できる大事な存在だろ
下を見て安心するという下衆の発想
ここまでの、まとめはPHPが1番やってて面白いで決まりだな。
それでいいんじゃね
おめぇはそれでいいや 俺はPHPよりもやってて辛いってことになぜかなっている言語を使い続けるわ
ない 唯一あるとすればlispだけど、 すぐ飽きる
957 :
uy :2012/07/22(日) 22:27:18.25
ゴミカス
そんなに人生つまんないの?
人生がツマラナイ連中がプログラミングをはじめるものだろ
関数型プログラミングも関係代数も楽しいからな。 人生がツマラナイものでないならおめでとう。幸せな人生をまっとうして下さい。 それはともかく、知的な楽しみが欲しいのであればPHPをメインで使う所には来ない方がいいぞ。 技術的な話が出来ない人間が大半だからな。人間的にもアレ。落ちこぼれが来る所だよ。 PHPは言語的にも面白くないし、他の言語をやりましょう。
>>960 人間的にもアレ以降が余計な話
そんな話を思わずしてしまう辺りがまさに人間的にアレだと自分では思わないか
PHPな会社に就職しそうなんだが、 技術的な話って、どこから仕入れてくるものなんだ?スラド?
学会から仕入れてくる。
964 :
デフォルトの名無しさん :2012/10/14(日) 16:16:19.46
JavaScriptいいよね。 ライブラリが充実してきた頃から 面白くなった。
965 :
デフォルトの名無しさん :2012/10/14(日) 19:35:46.06
オブジェクティブCは、目標が分かり易いからモチベーションの維持にはいいかもね。
C#ってほぼMS独占だろうからIDE込みで語るけど 「安全」に使えるようにした割には下位でも同じ変数名宣言出来るね 宣言消せば普通はエラー出るけど 上位で同じ変数名があるとそれ使うようになって 結果構文上でなく使用中にバグる まあしかしIDE込みで凄い使い易いからそれくらいいいけど
>>966 そんなもんC#以外でもモダンな言語だったらだいたい一緒
つーかIDE関係ないだろ
次スレが立つまでに、少しはまとまる・・・ことはないか
Java, Prolog
970 :
デフォルトの名無しさん :2013/11/09(土) 20:02:34.72
OCaml
971 :
デフォルトの名無しさん :2013/11/09(土) 23:34:36.02
C#
972 :
デフォルトの名無しさん :2013/11/10(日) 00:04:37.04
やってて楽しいのはRuby+Railsだな。 お客さんの要望を最短距離で実現するために 基本的な機能やライブラリが揃っていて、 必要最小限のコードで目的を達成できる; これほど楽しい言語はない。
973 :
デフォルトの名無しさん :2013/11/10(日) 00:51:27.13
974 :
デフォルトの名無しさん :2013/11/10(日) 01:19:35.60
Pharo( Smalltalk )いいわ。Smalltalkだけで オブジェクト指向型RDBを200行足らずで書けたり、 とにかく書きやすい。それから、状態や設定を保存するだけの処理を 全く作る必要が無いのが助かる SqueakとGUIのイメージで嫌遠してるかもしれんが、 Pharoなら標準入出力も実行引数も使えるし、簡単にOSのAPI叩けるから、 OS固有のGuiを使うことだってできる。 お前らも毛嫌いせずに使ってみ。 シェルスクリプト的な 位置づけで使えば作業が劇的に楽になるぞ。 "OOなRDB処理" resultTable := ( QueryForTables tables: { userTable. imageTable } ) do: [ :query :userRow :imageRow | query where: [ userRow isHas: image ] select: [ userRow name. imageRow name ]. ].
C#,Python
>>974 2行ぐらいで済ませりゃいいのに
なんでそんなに臭いレスをするのか
977 :
デフォルトの名無しさん :2013/11/10(日) 12:22:06.07
978 :
デフォルトの名無しさん :2013/11/10(日) 12:26:36.58
>>974 > "OOなRDB処理"
その程度なら、どの言語でも書けそうだが?
どの言語でも直書きすれば一つのやり方で済む
980 :
デフォルトの名無しさん :2013/11/10(日) 13:03:53.26
981 :
デフォルトの名無しさん :
2013/11/10(日) 13:07:10.76