ぶっちゃけ始めるのにいい言語て何 part2
■ このスレッドは過去ログ倉庫に格納されています
プログラムを書ける必要十分条件が仕様の把握なんて誰が言ったっけ 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net 数学 物理学 化学 生物学 天文学 地理地学 IT 電子 工学 言語学 国語 方言 など VM + ASM を書いた (C#, DX) * x86 ではない! simulationライブラリで純粋な関数式プログラミングをする UIライブラリ (C#, 2D) を作ったよ 連続と離散を統一した! 4Dエンジン matrixのライブラリ ある強力なFor関数 SQLライブラリ VM + ASM のダウンロード ttp://up.x0000.net/files/TSimulang.zip >>706 おーどうも有難うございます! お盆休みに入るんでじっくりやりますわ >>715 よく理解出来ないな… 最初からライブラリが充実してた方がいい気がするんですがね ライブラリーの使い方だけなのは プログラミングと言えるかということでは? 何故にみんな C++、Java、Javascriptを極端に嫌うのか 始めるのにいい言語はC言語だろうな もう業務で使うことはあまりないが、ルールが単純ですぐに覚えられる そのわりに、ポインタなど難しい概念もある 学習が進めば、自然とコンピュータ内でどんな動作をしてるかが理解できる 基礎としては最適だろう おまけで「C言語ができます」と言うと、ちょっとデキる感を演出できるw >>721 機械語の方が古るかぞ。 機械語もアセンブリ言語も今時流行らんタイ。 アセンブリ言語で自分のスマホにサイコロでも転がしてみんさい。 >>720 アセンブラ勧めるアホと同じでコンピューターの仕組みの知識なんかプログラム始めるのにいらない 仕組みの知識が必要ななるプログラムする段階になった時に勉強したらいい 何でここのスレは入口のハードルを高くしようとする人が多いの? >>722 スマホでアセンブラとかおまえだけでやってろ >>723 アセンブラを勧めるアホを揶揄してることもわからんとか。 Python なら、あっという間に何でもできる。特にiOSでプログラム開発は難しいとされてきたが、Python なら作ってすぐに使える。 Widget から動かせばPythonすら立ち上がることもない。 スマホ、PCいつでもどこでも練習できる。 パンチカードはデッキの一部を組み替えることで顧客に合わせた処理が出来るなど、ある意味オブジェクト指向だった。 単独では最弱だがデッキに組み込むことで類稀な力を発揮するカードは、ジョーカーと呼ばれた。 C言語は外部のライブラリを使えば今はやりの言語でやりたいことは大体あるよ。「ちゃんと書けば」実行時は高速に、メモリ効率もよく書ける。 即オリジナルゲームを作りたいってヤツはCシャープ覚えてユニテーで作ればいい 俺は自分がC->C++と勉強して良かったと思っている 他の言語から勉強したらC、C++の学習ハードルが天空になってしまっていた アセンブラ馬鹿に紙テープでも使わせてみたいな。 破れたりしたら継ぎ合わせて、ビット単位で機械語で穴を開けて補修しなければならない。 今更そんな馬鹿らしいことをやってる人もいないだろ。 便利なものがあれば便利なものを使えば良いんだよ。 Java 「くっ!!C#!C#!C#! どいつもこいつもC#! なぜだ!なぜやつを認めて このおれを認めねぇんだ!」 たしかにC++ある程度できるからか他の言語触ってもだいたいイージーモード感ある ただHaskellとかは感覚が全然ちがう >>735 Linuxインストールジジイとかこの手の自分の知っているもの出してやってみろってレスはうんざりする 俺は触れたことないけど、本屋でよく見かけるスクラッチは入門向けには、どうなの? >>737 その記事、最新の2020年版では 没落しているRubyが11位にランキングしているから間違ってるぞ IEEEとかいう団体は、捏造情報を垂れ流すべきじゃない >>737 JSにWebマークしか付いてないの意味分からんな。React Native無視とは。 そこまでのシェアじゃないとはいえ、じぁあC/C++のスマホマークは何なんですかと。 PCマークだってPythonに付いてるがVSCodeはじめElectron製アプリのほうがよっぽど多いだろうに。 >>739 あれは、小学校までの入門用。 大人が触るもんじゃ無い。 子供の教育用にちょっとさわれば済む話。 大人なら言語を直接触った方が理解は早いとは思うが、周辺のIO を動かす為にどんなコードで書かれてるのか調べるには良いかも。 Micro:bit を小一の孫にプレゼントしたが、自分も理解しておく必要があったから、BluetoothでMicro:bitと通信してみた。 なるほどとは思う。(micro Python) 似たような2000円くらいで買える大人の玩具には、ichigo jam とか、arduino (IEEEランキング11位)とかある。 少し高度になると、ラズベリーパイ。 これだとほとんど何でもできる。安い教育用Linuxマシン。 基本言語はPython >>740 どうでも良いだろ。 10位以下はゴミだよ。 少なくとも初心者が学ぶべき言語では無いのは確か。 >>746 あれは完全にただのツール。 言語とは言えない、perl の一変態 マクロみたいなものだろ。 facebookはマクロで天下取ったのか。 マクロって すげー! >>746 HTMLに埋め込むっていう斬新な方法で簡単に動的ページを作れるからある程度の規模のサイトを簡単に作るならいいと思う 令和にもなってHTMLにPHPガッツリ書いてる人って引くわ クリーンアーキテクチャどころかMVCとかも知らなさそう >>751 ??? PHPのフレームワークでMVCモデル使われてるやん 言ってること無茶苦茶だぞ ああすまん、ビューファイルにPHPを書くのが引くってことね 簡単に作るなら って書いてるのにガッツリ書くとか煽りたくてしょうがない厨房かよw >>734 意外とでかいんだよな、これ。Haskellはやったことないけど、そんなに違うんだ。 >>723 C言語のハードルは高くないぞ むしろ低い方だ ポインタなどの難しい概念はあるが、最初はポインタを使わなければいいだけ フレームワークだの、オブジェクト指向だの、初心者には理解が難しいことも覚える必要はない しかも、未だに仕事で使うから無駄にはならない おまけにコンピュータの仕組みも知らずに理解できる これほどお得な学習法もないと思うがなぁ >>757 昔々の言語。 覚える価値はない。 環境変数を覚える方が難しい。 Excelマクロは、VBからJavascript やPython に移りつつある。 レガシー言語を勧めるのはどうだろ 新しい言語の方が便利に決まってる >>759 言語を勧める理由として便利さだけを追求する方がどうかと思うぞw 学習的な側面から、理由を説明した上でレガシーな言語を勧めることは十分アリだと思う。 受け取り手が、自分の目的や価値観に合わせて判断すればいいだけのこと。判断の助けになるようメリット、デメリットも含めて提示できればなお良いと思うぞ。 >>737 その表を見ててふと気が付いたんだが、組込用(⚙)の言語がやはり重要そうだな。 Python , C/C++ , C# 敢えて古い言語を勧める理由ってあるかな 学習するなら新しいことを覚えた方が役に立つ気がする 車輪の再発明をするなって言うし CやPythonも十分レガシー言語 新しさや人気みたいな基準で選んじゃうのは外見で人を選ぶのと同じ 教育用言語としての絶対?条件は、インタプリタ言語だろうな。 古くはBASIC、今はPython Python でインラインで 1+2 と入れたら3になる。 >>>1 +2 3 改めて見ると驚きだよ。 全く電卓として使える。 元々BASICも電卓みたいな計算ができることを目的としてた。 自分が会社に入った時に最初に習ったのがベル研のBASICで10か12位の命令しかなかった。 紙っぺらの説明書を貰った後直ぐに実習に入った。 人は見た目が9割だから 古いものや人気のないものは淘汰されていく まあ古くても人気があれば残るんだろうけど C#の人気があるのも最新の機能が使えるからだろどうせ >>> x=1 >>> y=2 >>> x+y 3 >>765 どんなに高度な事をしても直ぐに結果が見れることが、現代のニーズにマッチしてるんだろうな。 先ず実験して本格的にスピードが必要ならそれなりの方法もあるし。 極力インストールしない主義なので、Excelは最初から付いてるVBAでいいや 既に作ったものをわざわざ移植する必然性もないし 学校ではライセンス不要の言語を教えるから、今時の学生に合わせたいんだろうな じゃなぜ昔のリーマンはVB系から入ったのか 昔はコピー余裕だったから、会社のソフトを家にもインストールして練習してたんだな しかし年数経たないと、ネットでノウハウをググれん 新しい言語にはそういう問題がある まあ問題となるのはアプリ操作のブラックボックスなので、その本質は一緒なんだろうけど >>733 そうなの? C#の開発目的が、Javaへの対抗と聞いたが 学校ではJavaを教えるので、Javaに似せれば使ってもらえると とうとう勝ったのかw C#の開発者はDelphiの開発者らしいが、Delphiの方が良かったな シンプルで速い C++のノウハウがほぼ直訳で使えるので、変わったこともできる(する必要もないがw) さらっとも使えるし、凝りまくることもできる >>766 >人は見た目が9割だから お前がそういう価値観なのは分かったよw 人気のないものが淘汰されるのだから、古いから勧めるななんてお前が言う必要ないだろうに。お前が興味ないだけなんだろうが、そこは他の人にとってどうでもいいこと。 お前ではない誰か一人でも、その古い言語に興味を持ったなら、または興味を持たないにしてもその説明で何か得ることがあったのなら、価値があるのだから。 人は見た目が9割とか言ってるやつってまともにその本読んだこと無さそう >>758 さて、それはどうかな 今のVB.Netは文法以外ほぼC#と同じ。 つまりVB.Netを覚えてしまえばほぼC#を 覚えたのと同義と言っても過言ではない。 .Net Coreで成長を止めてしまったとは言え、 VB.Netから勉強した場合、その習得後に C#も使えるようになっていて、 VBAもほぼ使えるようになっていたとしたらどうだろうか? もちろん、言語特有の部分は少し覚えなければならないが、それはのめり込んだときのごく一部と考えれば 極論、VB.Netの習得はいきなり3つの言語を習得したのと同じと言える。 後、いくらJavaScriptやPythonがEXCELで使えるようになるとはいえ、それらが主体として使える望みは薄い。 何故ならVBAで使用するVariant型こそEXCELに対して最も効果を発揮する型であり、 何でも入る危険過ぎる型としてvb.Net上の仕様からも消されたものであるからだ。 後、VBAが他の言語に今まで取って変わられなかったのはそれまで作成されていた資産が多いのと VBAの仕様があまりに雑で他の言語での改修が困難だからと言われている。 ま、その辺のことはVBAスレ行って聞けば蜂の巣を突いたようになるだろうから聞いてみればいい。 PHPが広まった理由はWindowsで動いたからだけど、いまはWSLがあるので、C++でサーバーサイドもアリかな。 このスレが役に立たないのは適当なこと書くアホが多いのに加えてそこに入るべき適切なツッコミのレスが少ないこと 今からプログラム始めようとする人の方がこのスレには向いていない >>765 インタプリタ言語じゃなくてもREPL使えるよ 昭和の昔話する前に現代の言語を勉強しては? >>777 swift などだろ。 そりゃ知ってるよ。 swiftも教育用言語の一つとされている。 ほらやっぱり知らないw c#にもcsiあるし、 javaですらjshellあるんだがwww Ubuntuのインストールを習得してIT系やれば? Javaが既にレガシーになっている 正直言ってCの数倍は難しい そうだjavascriptには内部関数があった 関数が減り、関数の名前で悩む時間が減る 関数を増やしたくなくて同じことを2回書く必要もないw Excelに最初から付いてればそっちだな 関数の名前決めるために一旦寝たりする変な本能があって WebAssembly がホットだな。 Javascript の代わりに仮想マシン語をWebブラウザで動かすんだが、Web の外でも動かせるみたいだ。 上位コンパイラは、C, C++ , GO などだが大抵のコンパイラが、WebAssembly を吐き出せるようになるだろう。 Swiftでも動き始めている。 殆どのブラウザで既にWebAssembly が動くようになっている。 AutoCAD やAdobeのLightRoom などもWebAssemblyで動いてるそうだ。 WebAssembly環境でPython なども動く。 仮想マシンの実行環境が整いつつある。時代が変わるような大変革だな。 >それらの言語をウェブ上で実行することができます。 ブラウザ上だよねw >WebAssembly はモダンなウェブブラウザーで実行できる新しいタイプのコードです。 まあその前にそう言ってるけど 「ウェブ上で」ってプログラマーの感覚では、サーバーサイド、ないし通信のことであって 経営者や企画・営業系が勘違いするような表現やめて欲しいなw 「ウェブ上」で動く専用クライアントを作ると、「ウェブ上でできない?」とかw ブラウザも一つのクライアントソフトなんだがw 強いて言えばメーカーの良心によりローカルアクセスが制限されてる安心感かな(自分が他社製を使う場合) だが「ウェブ上」を希望するアホどもはそんな認識は当然ないw 5chブラウザも未だに専ブラほど快適なブラウザ版ないしね 本気で性能を求めるなら専用クライアント 5chごとき業務用でもないし、モラルが怪しげだし、それこそブラウザ版が望ましいんだが、 それでも怪しみながら専ブラを使わざるを得ないぐらい差がある Python のフルセットもWebAssemblyで動くようになっている。 Pyodide WebAssemblyは、Cなどで書くと変更するとコンパイルしなおさないといけないが、Pythonならソースコードを変更すればその場で有効になる。 実験的に変数や数式を変更したりするには最適。 Javascript の機能も使える。 >>765 対話的なプログラミング環境、いわゆるREPLは大事だよね たとえば「0から9までの数字で偶数のものを2乗した配列」が欲しいとする もしもこうした環境が提供されている言語であれば: $ irb irb(main):001:0> (0..9) => 0..9 irb(main):002:0> (0..9).select {|n| n % 2 == 0} => [0, 2, 4, 6, 8] irb(main):003:0> (0..9).select {|n| n % 2 == 0}.map {|n| n * n} => [0, 4, 16, 36, 64] irb(main):004:0> その場で、手軽に計算を学習できる、あたかも電卓のように こうしたメソッドチェーン(あるいは関数型言語におけるパイプライン演算子)は、 スレタイにある「ぶっちゃけ始めるのにいい言語」には必須じゃないかと思われ https://qiita.com/subaru-shoji/items/110529c2c1824633d79c 別のお題で たとえば「ある配列を、昇順に並べて、反転して、文字列化して、間を”-“で繋ぐ」という 処理を試したいとする: $ irb irb(main):001:0> a = [1,4,3,2] irb(main):002:0> a.sort => [1, 2, 3, 4] irb(main):003:0> a.sort.reverse => [4, 3, 2, 1] irb(main):004:0> a.sort.reverse.map(&:to_s) => ["4", "3", "2", "1"] irb(main):005:0> a.sort.reverse.map(&:to_s).join => "4321" irb(main):006:0> https://edvakf.hatenadiary.org/entry/20090405/1238885788 REPL(対話型プログラミング環境)があれば、 select/map/sort/reverse/join といった操作(メソッド or 関数)を 電卓の + や - といった数値演算子と同様に学習できる >>791 にtypoがあったから訂正 irb(main):05:0> a.sort.reverse.map(&:to_s).join('-') => "4-3-2-1" irb(main):06:0> 実際に動かして見るのが一番だよ。 https://pyodide-cdn2.iodide.io/v0.15.0/full/console.html ここにアクセスして、 1+2 と入れれば答えが出る。 a=1 b=2 print(a+b) 何もインストールする必要もないから、感触を掴むには良いだろう。 他にもサーバーサイドで使えるサイトはあるが、 でもこのサイトは、クライアントで動くようになってるから、電波が届かないところでもPythonが使える。 最初はネットにつながっていないといけないけどね。最初は50MB位ダウンロードされるが一瞬、その後はストレスなく使える。 https://pyodide-cdn2.iodide.io/v0.15.0/full/console.html >>では、2つのお題: (1) 0から9までの数字で偶数のものを2乗した配列(>>790 ) (2) ある配列を、昇順に並べて、反転して、文字列化して、間を”-“で繋ぐ(>>791 ) いずれかでかまわないので、試した実行結果を示してくださいませ ぶっちゃけ始めたばかりの初心者向きの簡単なお題ですよね 自分はPythonに慣れていないんで、エラーで嫌われちゃいました(涙 Welcome to the Pyodide terminal emulator >>> range(10) 0,1,2,3,4,5,6,7,8,9 >>> range(10).filter(lambda n: n % 2 == 0) Error: Traceback (most recent call last): File "/lib/python3.7/site-packages/pyodide.py", line 45, in eval_code return eval(compile(expr, '<eval>', mode='eval'), ns, ns) File "<eval>", line 1, in <module> AttributeError: 'range' object has no attribute 'filter' >>> lisp ときたか!こりゃ一本取られた!\(゜ロ\)(/ロ゜)/ パイソンは隆盛を誇ってるようだが、けったいな呪文を次々に増やすのはどうかな とかく世の中はSQLを避けたがるフシがある .NETも使えない自動発行とか SQLが呪文のようだから嫌われるのに、より呪文のような言語を開発しても ラムダ式もそうだな、そこまでやるなら素直にSQLにすれば もしシステムビューに整数マスタ(sys.math_integers)があれば(なくても作ればいいが) select p =power(n, 2) from sys.math_integers where n>=0 and n<=9 and n%2=0 俺にはこの方が意味が分かりやすい かつDBエンジンは高速 さらに要件が複雑化しても見通しがよい(俺にはねw) 戻り値が表なので、結果を利用した後続処理も高速で、可用性が高い 日本人としては sys.math_integers | filter(n>=0 and n<=9 and n%2=0) | power(2) と書けたほうが分かりやすい >>796 (1) >>> l=list(range(0,10,2)) >>> l [0, 2, 4, 6, 8] >>> list(map(lambda l:l**2 , l) ) [0, 4, 16, 36, 64] >>> >>793 のサイトはREPL でコピペが使えないみたいだから使いにくいね。 >>804 なぜ中間変数 l が必要なのかと考えたら、無理に1行でまとめると: list(map(lambda l: l ** 2, list(range(0, 10, 2)))) カッコが4重にも重なり視点が左右に行ったり来たりする 可読性の悪いコードになってしまうからですよね >>803 氏が指摘しているような、視点が左から右へと流れるような コードは、今時のオブジェクト指向(メソッドチェーン)あるいは 関数型(パイプライン演算子)の特性を備えた言語であれば、 なんの苦もなくさらっと書けるのに: (0..9).step(2).map {|n| n ** 2} いったいどうしてこんなことになってしまったのでしょうか Python は、右から読むから、可読性が低い。 Ruby, Elixir みたいに、左からメソッドチェーン・パイプで、書くのが分かりやすい paiza で、打ち込める メソッドチェーンはできないわけじゃないけど、実際に使われている例が少ないのはPythonの言語思想によるものなんですかね? >>897 1ラインは当然できるが、サンプルと同じようにインタプリタの動きが見えるようにしただけだよ。 1ラインなら list(map(lambda i:i**2 , range(0,10,2)) ) >>807 そうだよ listを生成したいならmapやfilterは基本的に使わずに内包表記を使うのが慣習 [x ** 2 for x in range(10) if x % 2 == 0] サードパーティのライブラリとか使えば左から右に読めるようにできるけど Pythonの慣習から外れて逆に読みにくくなるしメンテも大変になるから特別な理由がない限りやらない 言語のやり方/慣習にプログラマーの考え方を半ば強制的に合わせていくのがPython流 > [x ** 2 for x in range(10) if x % 2 == 0] これ右から左どころか、 真ん中 → 一番右 → 一番左 だよね… 英語話者はこれが分かりやすいのか… { x ^ 2 | x ∈ S, x > 3 } みたいな数学の集合の表現が元ネタなのかもね ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる