X



ぶっちゃけ始めるのにいい言語て何 part2
■ このスレッドは過去ログ倉庫に格納されています
0711デフォルトの名無しさん
垢版 |
2020/08/14(金) 19:41:50.71ID:jifd8sPx
プログラムを書ける必要十分条件が仕様の把握なんて誰が言ったっけ
0712デフォルトの名無しさん
垢版 |
2020/08/14(金) 20:05:39.62ID:iKT8HLUL
学術の巨大掲示板群 - アルファ・ラボ 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
0714デフォルトの名無しさん
垢版 |
2020/08/14(金) 22:11:11.39ID:nDm1uwAY
>>707
不便なだけじゃないすか…
0715◆QZaw55cn4c
垢版 |
2020/08/14(金) 23:02:08.74ID:txNZsWd8
>>714
いわゆる拘束プレイ、というやつです…
0716デフォルトの名無しさん
垢版 |
2020/08/15(土) 00:46:19.48ID:ceiT+BNn
>>715
よく理解出来ないな…
最初からライブラリが充実してた方がいい気がするんですがね
0717デフォルトの名無しさん
垢版 |
2020/08/15(土) 01:01:45.74ID:tbDdrA6F
ライブラリーの使い方だけなのは
プログラミングと言えるかということでは?
0720デフォルトの名無しさん
垢版 |
2020/08/15(土) 08:00:06.27ID:3ToZ8TSl
始めるのにいい言語はC言語だろうな
もう業務で使うことはあまりないが、ルールが単純ですぐに覚えられる
そのわりに、ポインタなど難しい概念もある
学習が進めば、自然とコンピュータ内でどんな動作をしてるかが理解できる
基礎としては最適だろう

おまけで「C言語ができます」と言うと、ちょっとデキる感を演出できるw
0722デフォルトの名無しさん
垢版 |
2020/08/15(土) 09:50:07.00ID:UniGXrGx
>>721 機械語の方が古るかぞ。 機械語もアセンブリ言語も今時流行らんタイ。

アセンブリ言語で自分のスマホにサイコロでも転がしてみんさい。
0723デフォルトの名無しさん
垢版 |
2020/08/15(土) 10:40:53.83ID:jhaBe82K
>>720
アセンブラ勧めるアホと同じでコンピューターの仕組みの知識なんかプログラム始めるのにいらない
仕組みの知識が必要ななるプログラムする段階になった時に勉強したらいい
何でここのスレは入口のハードルを高くしようとする人が多いの?
>>722
スマホでアセンブラとかおまえだけでやってろ
0725デフォルトの名無しさん
垢版 |
2020/08/15(土) 11:07:01.32ID:UniGXrGx
>>723 アセンブラを勧めるアホを揶揄してることもわからんとか。

Python なら、あっという間に何でもできる。特にiOSでプログラム開発は難しいとされてきたが、Python なら作ってすぐに使える。
Widget から動かせばPythonすら立ち上がることもない。

スマホ、PCいつでもどこでも練習できる。
0726デフォルトの名無しさん
垢版 |
2020/08/15(土) 12:03:31.60ID:KV0ftL1X
パンチカードはデッキの一部を組み替えることで顧客に合わせた処理が出来るなど、ある意味オブジェクト指向だった。
0727デフォルトの名無しさん
垢版 |
2020/08/15(土) 12:07:36.49ID:KV0ftL1X
単独では最弱だがデッキに組み込むことで類稀な力を発揮するカードは、ジョーカーと呼ばれた。
0728デフォルトの名無しさん
垢版 |
2020/08/15(土) 12:52:41.88ID:sQULdK+x
C言語は外部のライブラリを使えば今はやりの言語でやりたいことは大体あるよ。「ちゃんと書けば」実行時は高速に、メモリ効率もよく書ける。
0729デフォルトの名無しさん
垢版 |
2020/08/15(土) 12:57:28.84ID:t9lyhjXk
即オリジナルゲームを作りたいってヤツはCシャープ覚えてユニテーで作ればいい
0730デフォルトの名無しさん
垢版 |
2020/08/15(土) 13:13:23.50ID:cd5NPbjX
俺は自分がC->C++と勉強して良かったと思っている
他の言語から勉強したらC、C++の学習ハードルが天空になってしまっていた
0731デフォルトの名無しさん
垢版 |
2020/08/15(土) 13:14:15.98ID:UniGXrGx
アセンブラ馬鹿に紙テープでも使わせてみたいな。
破れたりしたら継ぎ合わせて、ビット単位で機械語で穴を開けて補修しなければならない。 今更そんな馬鹿らしいことをやってる人もいないだろ。

便利なものがあれば便利なものを使えば良いんだよ。
0732デフォルトの名無しさん
垢版 |
2020/08/15(土) 15:30:45.15ID:KV0ftL1X
いや、Javaだろ。
0733デフォルトの名無しさん
垢版 |
2020/08/15(土) 15:47:09.21ID:TdEhWykx
Java
「くっ!!C#!C#!C#!
 どいつもこいつもC#!
 なぜだ!なぜやつを認めて
 このおれを認めねぇんだ!」
0734デフォルトの名無しさん
垢版 |
2020/08/15(土) 15:56:46.06ID:Y9oiVJFr
たしかにC++ある程度できるからか他の言語触ってもだいたいイージーモード感ある
ただHaskellとかは感覚が全然ちがう
0736デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:07:44.43ID:gC8AEAiT
>>735
Linuxインストールジジイとかこの手の自分の知っているもの出してやってみろってレスはうんざりする
0739デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:45:44.65ID:t9lyhjXk
俺は触れたことないけど、本屋でよく見かけるスクラッチは入門向けには、どうなの?
0740デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:46:22.32ID:YIEd4cAz
>>737
その記事、最新の2020年版では
没落しているRubyが11位にランキングしているから間違ってるぞ
IEEEとかいう団体は、捏造情報を垂れ流すべきじゃない
0741デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:52:00.07ID:crtSow9x
>>737
JSにWebマークしか付いてないの意味分からんな。React Native無視とは。
そこまでのシェアじゃないとはいえ、じぁあC/C++のスマホマークは何なんですかと。
PCマークだってPythonに付いてるがVSCodeはじめElectron製アプリのほうがよっぽど多いだろうに。
0742デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:59:26.81ID:4Fj9Za8e
>>739 あれは、小学校までの入門用。 大人が触るもんじゃ無い。 子供の教育用にちょっとさわれば済む話。

大人なら言語を直接触った方が理解は早いとは思うが、周辺のIO を動かす為にどんなコードで書かれてるのか調べるには良いかも。
Micro:bit を小一の孫にプレゼントしたが、自分も理解しておく必要があったから、BluetoothでMicro:bitと通信してみた。 なるほどとは思う。(micro Python)

似たような2000円くらいで買える大人の玩具には、ichigo jam とか、arduino (IEEEランキング11位)とかある。

少し高度になると、ラズベリーパイ。 これだとほとんど何でもできる。安い教育用Linuxマシン。 基本言語はPython
0743デフォルトの名無しさん
垢版 |
2020/08/15(土) 17:03:00.11ID:4Fj9Za8e
>>740 どうでも良いだろ。 10位以下はゴミだよ。
少なくとも初心者が学ぶべき言語では無いのは確か。
0745デフォルトの名無しさん
垢版 |
2020/08/15(土) 17:46:39.06ID:KV0ftL1X
日本にはHSPがあるだろ。
0747デフォルトの名無しさん
垢版 |
2020/08/15(土) 19:29:13.86ID:4GsEJ4Sf
>>746 あれは完全にただのツール。 言語とは言えない、perl の一変態
マクロみたいなものだろ。
0749デフォルトの名無しさん
垢版 |
2020/08/15(土) 21:14:36.29ID:OkeTMDO9
>>746
HTMLに埋め込むっていう斬新な方法で簡単に動的ページを作れるからある程度の規模のサイトを簡単に作るならいいと思う
0751デフォルトの名無しさん
垢版 |
2020/08/16(日) 08:15:14.42ID:ZkarGjJb
令和にもなってHTMLにPHPガッツリ書いてる人って引くわ
クリーンアーキテクチャどころかMVCとかも知らなさそう
0754デフォルトの名無しさん
垢版 |
2020/08/16(日) 14:45:02.26ID:7n2hwSPz
簡単に作るなら
って書いてるのにガッツリ書くとか煽りたくてしょうがない厨房かよw
0756デフォルトの名無しさん
垢版 |
2020/08/16(日) 21:24:08.57ID:Oe4ljRpl
>>723
C言語のハードルは高くないぞ
むしろ低い方だ
ポインタなどの難しい概念はあるが、最初はポインタを使わなければいいだけ
フレームワークだの、オブジェクト指向だの、初心者には理解が難しいことも覚える必要はない
しかも、未だに仕事で使うから無駄にはならない

おまけにコンピュータの仕組みも知らずに理解できる
これほどお得な学習法もないと思うがなぁ
0758デフォルトの名無しさん
垢版 |
2020/08/16(日) 22:57:55.38ID:nFaLAj/B
>>757 昔々の言語。 覚える価値はない。 環境変数を覚える方が難しい。
Excelマクロは、VBからJavascript やPython に移りつつある。
0759デフォルトの名無しさん
垢版 |
2020/08/17(月) 00:23:40.37ID:SO3bXD1g
レガシー言語を勧めるのはどうだろ
新しい言語の方が便利に決まってる
0760デフォルトの名無しさん
垢版 |
2020/08/17(月) 00:33:18.38ID:MuKH26x+
>>759
言語を勧める理由として便利さだけを追求する方がどうかと思うぞw
学習的な側面から、理由を説明した上でレガシーな言語を勧めることは十分アリだと思う。
受け取り手が、自分の目的や価値観に合わせて判断すればいいだけのこと。判断の助けになるようメリット、デメリットも含めて提示できればなお良いと思うぞ。
0761デフォルトの名無しさん
垢版 |
2020/08/17(月) 01:05:18.18ID:frAy30YW
>>737 その表を見ててふと気が付いたんだが、組込用(⚙)の言語がやはり重要そうだな。
Python , C/C++ , C#
0762デフォルトの名無しさん
垢版 |
2020/08/17(月) 01:14:18.56ID:SO3bXD1g
敢えて古い言語を勧める理由ってあるかな
学習するなら新しいことを覚えた方が役に立つ気がする
車輪の再発明をするなって言うし
0763デフォルトの名無しさん
垢版 |
2020/08/17(月) 01:43:28.52ID:r+bG+fmh
CやPythonも十分レガシー言語
新しさや人気みたいな基準で選んじゃうのは外見で人を選ぶのと同じ
0765デフォルトの名無しさん
垢版 |
2020/08/17(月) 02:24:58.40ID:frAy30YW
教育用言語としての絶対?条件は、インタプリタ言語だろうな。
古くはBASIC、今はPython

Python でインラインで 1+2 と入れたら3になる。
>>>1+2
3

改めて見ると驚きだよ。

全く電卓として使える。 元々BASICも電卓みたいな計算ができることを目的としてた。
自分が会社に入った時に最初に習ったのがベル研のBASICで10か12位の命令しかなかった。 紙っぺらの説明書を貰った後直ぐに実習に入った。
0766デフォルトの名無しさん
垢版 |
2020/08/17(月) 02:36:30.94ID:SO3bXD1g
人は見た目が9割だから

古いものや人気のないものは淘汰されていく
まあ古くても人気があれば残るんだろうけど
C#の人気があるのも最新の機能が使えるからだろどうせ
0768デフォルトの名無しさん
垢版 |
2020/08/17(月) 03:23:28.91ID:frAy30YW
>>765 どんなに高度な事をしても直ぐに結果が見れることが、現代のニーズにマッチしてるんだろうな。
先ず実験して本格的にスピードが必要ならそれなりの方法もあるし。
0769デフォルトの名無しさん
垢版 |
2020/08/17(月) 03:34:59.74ID:iLtCCqZP
極力インストールしない主義なので、Excelは最初から付いてるVBAでいいや
既に作ったものをわざわざ移植する必然性もないし

学校ではライセンス不要の言語を教えるから、今時の学生に合わせたいんだろうな
じゃなぜ昔のリーマンはVB系から入ったのか
昔はコピー余裕だったから、会社のソフトを家にもインストールして練習してたんだな

しかし年数経たないと、ネットでノウハウをググれん
新しい言語にはそういう問題がある
まあ問題となるのはアプリ操作のブラックボックスなので、その本質は一緒なんだろうけど
0770デフォルトの名無しさん
垢版 |
2020/08/17(月) 03:38:50.66ID:iLtCCqZP
>>733
そうなの?
C#の開発目的が、Javaへの対抗と聞いたが
学校ではJavaを教えるので、Javaに似せれば使ってもらえると
とうとう勝ったのかw
0771デフォルトの名無しさん
垢版 |
2020/08/17(月) 03:47:08.56ID:iLtCCqZP
C#の開発者はDelphiの開発者らしいが、Delphiの方が良かったな
シンプルで速い
C++のノウハウがほぼ直訳で使えるので、変わったこともできる(する必要もないがw)
さらっとも使えるし、凝りまくることもできる
0772デフォルトの名無しさん
垢版 |
2020/08/17(月) 05:28:56.29ID:MuKH26x+
>>766
>人は見た目が9割だから
お前がそういう価値観なのは分かったよw
人気のないものが淘汰されるのだから、古いから勧めるななんてお前が言う必要ないだろうに。お前が興味ないだけなんだろうが、そこは他の人にとってどうでもいいこと。
お前ではない誰か一人でも、その古い言語に興味を持ったなら、または興味を持たないにしてもその説明で何か得ることがあったのなら、価値があるのだから。
0774デフォルトの名無しさん
垢版 |
2020/08/17(月) 06:06:31.83ID:Agahn7wQ
>>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スレ行って聞けば蜂の巣を突いたようになるだろうから聞いてみればいい。
0775デフォルトの名無しさん
垢版 |
2020/08/17(月) 08:29:51.17ID:HJfgae1K
PHPが広まった理由はWindowsで動いたからだけど、いまはWSLがあるので、C++でサーバーサイドもアリかな。
0776デフォルトの名無しさん
垢版 |
2020/08/17(月) 08:42:05.28ID:kqc8skie
このスレが役に立たないのは適当なこと書くアホが多いのに加えてそこに入るべき適切なツッコミのレスが少ないこと
今からプログラム始めようとする人の方がこのスレには向いていない
0777デフォルトの名無しさん
垢版 |
2020/08/17(月) 10:52:24.72ID:r+bG+fmh
>>765
インタプリタ言語じゃなくてもREPL使えるよ
昭和の昔話する前に現代の言語を勉強しては?
0780デフォルトの名無しさん
垢版 |
2020/08/17(月) 11:39:38.29ID:HJfgae1K
Ubuntuのインストールを習得してIT系やれば?
0781デフォルトの名無しさん
垢版 |
2020/08/17(月) 20:02:06.93ID:SO3bXD1g
もうUbuntuはいいよ
言語じゃないじゃん
0783デフォルトの名無しさん
垢版 |
2020/08/18(火) 01:24:35.75ID:2HI6hPLK
そうだjavascriptには内部関数があった
関数が減り、関数の名前で悩む時間が減る
関数を増やしたくなくて同じことを2回書く必要もないw
Excelに最初から付いてればそっちだな

関数の名前決めるために一旦寝たりする変な本能があって
0784デフォルトの名無しさん
垢版 |
2020/08/18(火) 01:33:02.18ID:8gN8Hzmn
Pythonで向こう100年戦うつもり
0785デフォルトの名無しさん
垢版 |
2020/08/18(火) 09:37:49.15ID:CekSd1r9
WebAssembly がホットだな。

Javascript の代わりに仮想マシン語をWebブラウザで動かすんだが、Web の外でも動かせるみたいだ。

上位コンパイラは、C, C++ , GO などだが大抵のコンパイラが、WebAssembly を吐き出せるようになるだろう。
Swiftでも動き始めている。

殆どのブラウザで既にWebAssembly が動くようになっている。
AutoCAD やAdobeのLightRoom などもWebAssemblyで動いてるそうだ。
WebAssembly環境でPython なども動く。

仮想マシンの実行環境が整いつつある。時代が変わるような大変革だな。
0786デフォルトの名無しさん
垢版 |
2020/08/18(火) 12:05:53.52ID:TUZhvGor
>それらの言語をウェブ上で実行することができます。

ブラウザ上だよねw

>WebAssembly はモダンなウェブブラウザーで実行できる新しいタイプのコードです。

まあその前にそう言ってるけど

「ウェブ上で」ってプログラマーの感覚では、サーバーサイド、ないし通信のことであって
経営者や企画・営業系が勘違いするような表現やめて欲しいなw

「ウェブ上」で動く専用クライアントを作ると、「ウェブ上でできない?」とかw
ブラウザも一つのクライアントソフトなんだがw
強いて言えばメーカーの良心によりローカルアクセスが制限されてる安心感かな(自分が他社製を使う場合)
だが「ウェブ上」を希望するアホどもはそんな認識は当然ないw
0787デフォルトの名無しさん
垢版 |
2020/08/18(火) 12:28:09.39ID:TUZhvGor
5chブラウザも未だに専ブラほど快適なブラウザ版ないしね
本気で性能を求めるなら専用クライアント
5chごとき業務用でもないし、モラルが怪しげだし、それこそブラウザ版が望ましいんだが、
それでも怪しみながら専ブラを使わざるを得ないぐらい差がある
0788デフォルトの名無しさん
垢版 |
2020/08/18(火) 16:30:46.24ID:x5qGmzqp
Python のフルセットもWebAssemblyで動くようになっている。
Pyodide

WebAssemblyは、Cなどで書くと変更するとコンパイルしなおさないといけないが、Pythonならソースコードを変更すればその場で有効になる。 実験的に変数や数式を変更したりするには最適。 Javascript の機能も使える。
0790デフォルトの名無しさん
垢版 |
2020/08/18(火) 17:43:05.80ID:HR/M/dGq
>>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
0791790
垢版 |
2020/08/18(火) 18:03:34.26ID:HR/M/dGq
別のお題で
たとえば「ある配列を、昇順に並べて、反転して、文字列化して、間を”-“で繋ぐ」という
処理を試したいとする:

$ 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 関数)を
電卓の + や - といった数値演算子と同様に学習できる
0792790
垢版 |
2020/08/18(火) 18:21:19.16ID:HR/M/dGq
>>791にtypoがあったから訂正

irb(main):05:0> a.sort.reverse.map(&:to_s).join('-')
=> "4-3-2-1"
irb(main):06:0>
0793デフォルトの名無しさん
垢版 |
2020/08/18(火) 18:47:20.91ID:5CK1RoYW
実際に動かして見るのが一番だよ。
https://pyodide-cdn2.iodide.io/v0.15.0/full/console.html

ここにアクセスして、
1+2
と入れれば答えが出る。
a=1
b=2
print(a+b)

何もインストールする必要もないから、感触を掴むには良いだろう。
他にもサーバーサイドで使えるサイトはあるが、

でもこのサイトは、クライアントで動くようになってるから、電波が届かないところでもPythonが使える。
0796790
垢版 |
2020/08/18(火) 19:12:36.84ID:HR/M/dGq
>>では、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'
>>>
0799デフォルトの名無しさん
垢版 |
2020/08/18(火) 21:14:01.10ID:DLOA82Zt
lisp ときたか!こりゃ一本取られた!\(゜ロ\)(/ロ゜)/
0800デフォルトの名無しさん
垢版 |
2020/08/18(火) 21:22:38.85ID:ZOejX8E8
じゃあN88 BASICでええやん。
0802デフォルトの名無しさん
垢版 |
2020/08/18(火) 22:08:13.38ID:TUZhvGor
パイソンは隆盛を誇ってるようだが、けったいな呪文を次々に増やすのはどうかな

とかく世の中は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)
戻り値が表なので、結果を利用した後続処理も高速で、可用性が高い
0803デフォルトの名無しさん
垢版 |
2020/08/18(火) 22:21:04.37ID:zD91pcSD
日本人としては
sys.math_integers | filter(n>=0 and n<=9 and n%2=0) | power(2)
と書けたほうが分かりやすい
0804デフォルトの名無しさん
垢版 |
2020/08/19(水) 00:10:16.21ID:LQ0AAX+I
>>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 でコピペが使えないみたいだから使いにくいね。
0805デフォルトの名無しさん
垢版 |
2020/08/19(水) 02:02:54.37ID:fkJrhcWm
>>804
なぜ中間変数 l が必要なのかと考えたら、無理に1行でまとめると:

 list(map(lambda l: l ** 2, list(range(0, 10, 2))))

カッコが4重にも重なり視点が左右に行ったり来たりする
可読性の悪いコードになってしまうからですよね

>>803氏が指摘しているような、視点が左から右へと流れるような
コードは、今時のオブジェクト指向(メソッドチェーン)あるいは
関数型(パイプライン演算子)の特性を備えた言語であれば、
なんの苦もなくさらっと書けるのに:

 (0..9).step(2).map {|n| n ** 2}

いったいどうしてこんなことになってしまったのでしょうか
0806デフォルトの名無しさん
垢版 |
2020/08/19(水) 02:42:54.68ID:w/3evjlx
Python は、右から読むから、可読性が低い。
Ruby, Elixir みたいに、左からメソッドチェーン・パイプで、書くのが分かりやすい

paiza で、打ち込める
0807デフォルトの名無しさん
垢版 |
2020/08/19(水) 07:53:27.30ID:lpXV8Fer
メソッドチェーンはできないわけじゃないけど、実際に使われている例が少ないのはPythonの言語思想によるものなんですかね?
0808デフォルトの名無しさん
垢版 |
2020/08/19(水) 10:15:22.66ID:LQ0AAX+I
>>897 1ラインは当然できるが、サンプルと同じようにインタプリタの動きが見えるようにしただけだよ。
1ラインなら

list(map(lambda i:i**2 , range(0,10,2)) )
0809デフォルトの名無しさん
垢版 |
2020/08/19(水) 11:45:02.35ID:meyBYzW3
>>807
そうだよ

listを生成したいならmapやfilterは基本的に使わずに内包表記を使うのが慣習
[x ** 2 for x in range(10) if x % 2 == 0]

サードパーティのライブラリとか使えば左から右に読めるようにできるけど
Pythonの慣習から外れて逆に読みにくくなるしメンテも大変になるから特別な理由がない限りやらない
言語のやり方/慣習にプログラマーの考え方を半ば強制的に合わせていくのがPython流
0810デフォルトの名無しさん
垢版 |
2020/08/19(水) 12:47:09.25ID:d4bqPFA7
> [x ** 2 for x in range(10) if x % 2 == 0]

これ右から左どころか、
真ん中 → 一番右 → 一番左
だよね…
英語話者はこれが分かりやすいのか…
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況