X



ぶっちゃけ始めるのにいい言語て何 part3

■ このスレッドは過去ログ倉庫に格納されています
0002デフォルトの名無しさん
垢版 |
2020/09/03(木) 15:59:04.11ID:f/udSEF6
前スレより

790 1 名前:デフォルトの名無しさん Mail:sage 投稿日:2020/08/18(火) 17:43:05.80 ID: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
0003デフォルトの名無しさん
垢版 |
2020/09/03(木) 18:13:15.27ID:6AJp7Q6D
日本語や英語などの自然言語ができるのなら、それよりはずっと簡単なんだから何でもいいから始めればいい
逆に本とかで勉強するだけでは身につかず実際に日常で使っていくのが一番の勉強になる
これは義務教育で英語やった人なら分かるはず。よってここはただの雑談スレ
0004デフォルトの名無しさん
垢版 |
2020/09/03(木) 18:43:13.63ID:bHyMdwQo
個人的にはCで始めることができたのは運が良かったと思ってる。

もう30年くらい前だが(w)、あのときFORTLANとかCOBOLだったら
今の言語見たら目が滑りまくると思う。

今ならC#かjavaから入っとけば潰しが効く気がする。パラダイムシフト
起こったら知らんけどw
0005デフォルトの名無しさん
垢版 |
2020/09/03(木) 20:00:31.82ID:kL+30avi
>>2
selectやmapだの仮変数nだのをいちいち書かなければならなくて冗長。
ベクトル演算できる言語だとすっきり書けて小気味良い。

R: seq(0, 9, 2) ^ 2
Julia, Octave: (0:2:9) .^ 2
0006デフォルトの名無しさん
垢版 |
2020/09/03(木) 20:24:50.20ID:o+d3Cgd9
C# 一択でしょ。Windows、Mac、iOS、Android、ウェブアプリ、何でも作れる。型を指定してオブジェクトを宣言するから、自動補完もばっちり。
0008デフォルトの名無しさん
垢版 |
2020/09/03(木) 23:56:41.77ID:46Dd9IKP
>>2
irb とか、そんな面倒なものは使わない

VSCode の拡張機能・Code Runner(Run Code)で、
ファイル全体、または、コード片を選択して実行できる

p range = ( 0..4 )
p ary = range.select { |n| n % 2 == 0 }
p ary2 = ary.map { |n| n * n }

出力
0..4
[0, 2, 4]
[0, 4, 16]
0011デフォルトの名無しさん
垢版 |
2020/09/04(金) 23:37:49.32ID:I8Hp1/bB
pythonは人気あるけど、括弧が無いっていう他の言語との違いが気になる。
C#とかTypeScriptが良いと思う。
0012デフォルトの名無しさん
垢版 |
2020/09/05(土) 02:51:46.19ID:OV3VFUME
・・・どうしてマキマはパワーを殺めてもうたん?(´;ω;`)ブワッ
0014デフォルトの名無しさん
垢版 |
2020/09/05(土) 20:01:59.21ID:+9oXrKGt
僕もC♯やってつ
0015デフォルトの名無しさん
垢版 |
2020/09/06(日) 15:21:11.67ID:fVJSzq3O
javascriptかな。htmlとcssを一緒に覚えるとブラウザで遊べて楽しい。コード例もゴロゴロ転がってる。
0020デフォルトの名無しさん
垢版 |
2020/09/07(月) 04:25:35.25ID:PFWkTL8D
複合文の波括弧がないということでしょ。個人的にはオフサイドルールは大好きだけど、嫌いという人がいるのも分かる。
0021デフォルトの名無しさん
垢版 |
2020/09/07(月) 04:54:30.33ID:BYWLguUb
>>17
どこまで実用を見越すかってことだろうけどね。
ついでに人気度ランキングも。
だったら、Typescriptかな。
0022デフォルトの名無しさん
垢版 |
2020/09/07(月) 20:19:42.76ID:nh0ZPRbh
波カッコがないとブロックを終わるときにエディタが助けてくれないのかちょっといや
00232
垢版 |
2020/09/07(月) 22:23:17.43ID:RPzI080p
>>2 のお題であれば、波カッコを使えば左から右へ流れるようなコードが書ける
  (0..9).select {|n| n % 2 == 0}.map {|n| n * n}

ところがだ、波カッコを無くしたまでは良かったけど、代わりに丸カッコを三重に入れ子にした
コードを書かざるを得ないのが Python といふ言語
 list(map(lambda i:i**2 , range(0,10,2)) )

 前スレ「ぶっちゃけ始めるのにいい言語て何 part2 」より引用
 http://mevius.5ch.net/test/read.cgi/tech/1594883518/808/

インデントを強制することによってコードを簡潔にして可読性を高める、
と言うアイデアは決して間違いではなかったけれど、Pythonが言語設計の比較対象にしていたのは
FORTRAN/COBOL/PASCALそしてPerlといった手続き型言語とそのプログラミングパラダイムだった
確かにWHILE-ENDやFOR-ENDでループ処理をゴリゴリ回すコードが比較対象であれば美しかった

けれども時代はオブジェクト指向(メソッドチェーン)や関数型(パイプライン演算子 or 関数合成)といった
より洗練されたプログラミング表現へと進化している
たとえば古典的な関数型言語のLISPはS式と呼ばれる丸カッコの入れ子が代名詞だけれど、
最初からインデントの強制を前提に設計された関数型言語Haskellであればパイプライン演算子や関数合成は使えるし、
それどころかHaskellは型システムを前提にしたソフトウェア設計論やプログラミンングにおける圏論といった、
未来へと続く次世代プログラミングヘのパラダイムシフトへの影響をもたらしている

当初は手続き型言語として設計された(Perlと比較すれば)簡潔で美しいスクリプト言語 Python、
けれども新宿界隈の雑居ビルのごとく行き当たりばったりに中途半端なオブジェクト指向や関数型が導入された
0024デフォルトの名無しさん
垢版 |
2020/09/07(月) 23:11:49.23ID:3uGG3SyO
>>23
偶数のみを処理するのとイテレート時に1個飛ばしで処理するのは意味が違うから混同しちゃだめ

Ruby
(0..9).filter(&:even?).map{|x| x ** 2}

Python
[x ** 2 for x in range(0, 10) if x % 2 == 0]
or
list(map(lambda x:x ** 2, filter(lambda x: x % 2 == 0, range(0,10)))) # 醜いので普通は使わない
00252
垢版 |
2020/09/07(月) 23:44:37.90ID:RPzI080p
>>24
> 偶数のみを処理するのとイテレート時に1個飛ばしで処理するのは意味が違うから混同しちゃだめ

前スレ808氏が苦し紛れに書いたコードでしたので、私はあえてツッコまなかったのですが。。。鬼ですね


> [x ** 2 for x in range(0, 10) if x % 2 == 0]

こちらの内包表記を用いたコードであれば「醜さ」は改善されていますね
もっともHaskellのように、あたかも数式であるかのように書ければ、
より「美しい」と共感する人は多かったのでは無いかと思われますが
 [x ** 2 | x <- 0..10, x % 2 == 0]

> { x ^ 2 | x ∈ S, x > 3 } みたいな数学の集合の表現が元ネタなのかもね

 前スレ「ぶっちゃけ始めるのにいい言語て何 part2 」から引用
 http://mevius.5ch.net/test/read.cgi/tech/1594883518/811/


では、続きまして前スレから次のお題です
・ある配列を、昇順に並べて、反転して、文字列化して、間を”-“で繋ぐ
 [1,4,3,2].sort.reverse.map(&:to_s).join('-')

 前スレ「ぶっちゃけ始めるのにいい言語て何 part2 」から引用
 http://mevius.5ch.net/test/read.cgi/tech/1594883518/791-792/

このように波カッコを使えば、先のお題と同様に左から右へと流れるようなコードが書けます
たいして難しいどころか日常的に見られる簡単なお題ですから、もちろん内包表記でも書けますよね?
0026デフォルトの名無しさん
垢版 |
2020/09/07(月) 23:59:11.84ID:3uGG3SyO
>>25
>このように波カッコを使えば

コードブロックの表現に波括弧やキーワードを使うのか
それともインデントを使うのかとは関係なくない?

Pythonが複数行のlambdaを書けないのはPython特有の問題だし
PythonのAPI設計がオブジェクト指向的じゃないのもPython特有の問題でインデントとは関係ない
00282
垢版 |
2020/09/08(火) 00:37:25.12ID:1GKR+zTs
>>26
そもそも>>25のコードでは波カッコを使っていない、というオチは置いといて(苦笑
 [1,4,3,2].sort.reverse.map(&:to_s).join('-')

>>25で書いたように、Pythonが誕生した手続き型プログラミングが主流の時代には、
 > コードブロックの表現に波括弧やキーワードを使うのか
 > それともインデントを使うのかとは
大いに関係がありました(過去形)
Pascal の begin..end を使うのかCの{..}を使うのか、いやそもそもブロック表現は
具象構文にインデントを取り込めば..といった論争です(Occamといふ言語をしていますか?)
今となっては当時を知らない若手か老害しか興味を持たないようなつまらない話題です

おっしゃるように問題は、元々は1980年代の設計思想(手続き型パラダイム)で設計されて誕生し、
時代時代の流行を追いかけて後方互換性を断絶するような改変(Python2->3)を強行してもなお、
中途半端な関数型プログラミンングやオブジェクト指向プログラミングしか
書けないPythonの現状にあるわけです

で、あなたはこの現状を正確に認識した上で、そんな言語を「ぶっちゃけ始めるのにいい言語」として
他人にお薦めしますか?
もちろん実世界の閉じた世界で何も知らない初心者を相手にして、優越感に浸る手段とはなるのでしょうけれど
0029デフォルトの名無しさん
垢版 |
2020/09/08(火) 09:26:52.11ID:01u98+/t
評価軸の1つとしてそういうことを気にする人もいるというのはわからないでもないけど、Pythonは普通に「ぶっちゃけ始めるのにいい言語」としては上位の方でしょ。
お勧めリストとして、RubyをPytnonより上位に位置付ける人よりも、その逆の人の方が圧倒的に多いと思うけど。
0030デフォルトの名無しさん
垢版 |
2020/09/08(火) 17:57:04.25ID:Rm9gieqX
インデントしてりゃそれが制御の範囲を示すんだって頭が
できちゃうのは副作用でかくないか?
0031デフォルトの名無しさん
垢版 |
2020/09/08(火) 18:09:43.81ID:jZ8u+myy
>>28
>大いに関係がありました(過去形)

何と何が関係あるって言ってるの?

左から右へ流れるようにコードが書けるということと
コードブロックの表現に何を使うかということは関係ないってのが>>26の指摘
普通はやらないけどPythonでも左から右に書けないわけじゃない
pipe([1,4,3,2], sorted, reversed, map(str), '-'.join)

上の話と初心者にPython勧めるかどうかは全く別の話
0033デフォルトの名無しさん
垢版 |
2020/09/08(火) 22:56:44.01ID:WZqhOJW2
>>30
そこまで頭の悪い人はいないでしょ。
「VBAから入ると変数宣言はDimでやるんだという頭ができちゃうから副作用がでかい」とか考えるならそうかもしれないが。

両方やった上でインデントが強制されるのは窮屈だから御免被りたいという意見は十分ありうるとは思うが。
0035デフォルトの名無しさん
垢版 |
2020/09/09(水) 00:49:52.32ID:U+WWUaPe
インデントはデメリットに比べてメリットが小さすぎるから採用言語が少ない
0036デフォルトの名無しさん
垢版 |
2020/09/09(水) 06:16:15.19ID:+wID2zCZ
行数が減るメリットは小さくないと思うが。閉じ括弧やendが不要なのでまず1行分減るし、開き括弧やbeginで1行使う流儀ならさらにもう1行分減らすことができる。

オフサイドルールを採用する言語が今のところ少ない理由は、メリットの少なさというよりも、インデントを強制されるのは窮屈に感じるという気質の人が、プログラマには少なくないからではないかと思う。
Pythonの人気でそれが今後変わるのか変わらないのかは分からないが……。
0037デフォルトの名無しさん
垢版 |
2020/09/09(水) 09:30:03.91ID:DjXMW823
字下げスタイルはどれが好き?
C#はオールマンスタイル、Javaはカーネルスタイルが主流だけど
0038デフォルトの名無しさん
垢版 |
2020/09/09(水) 10:35:12.03ID:UWAKNRKG
オールマンが見易くて好きだな
行はその分増えちゃうけど現代では困ることもないでしょう
0039デフォルトの名無しさん
垢版 |
2020/09/09(水) 12:34:01.79ID:DX/5ZzFp
>>36
実際は閉じ括弧の代わりに空行入れるから、ネストしたブロックから一気に抜ける場合以外に行数は減らない

特にPythonだと逆に行数増えるからメリットにはなってない
0040デフォルトの名無しさん
垢版 |
2020/09/09(水) 12:48:13.64ID:DX/5ZzFp
>>36
インデントを強制されるのは窮屈に感じるのは気質の問題じゃなく合理的な理由があるから

間違ってたらバグる、閉じ括弧に比べて間違いを見つけるのが面倒、オートフォーマットできない、改行を入れて読みやすくする自由度が低い

自由度が低いと制約を常に頭の片隅に置きながらコードを書く必要があって脳を活用できる度合いが下がる。

理由をうまく言語化出来ないことを気質の問題にしてるとロクなことないよ
0041デフォルトの名無しさん
垢版 |
2020/09/09(水) 14:01:47.15ID:+wID2zCZ
>>39-40
そんなに拘るつもりもないんだけど、閉じ括弧やendを使う言語でも普通はその後空行を入れるでしょ。行数が減らないというのはさすがに無理筋無批判だと思うなぁ……。

インデントミスでバグるというのは具体的にどういうケースを想定しているのかよく分からないけれど、ブロックの範囲についてプログラマの勘違い・書き誤りがあるケースなら、早めに検出してくれるほうがありがたいと思うが。
閉じ括弧と比べて間違いを見つけるのが面倒というのもあまりピンとこないような。インデント幅が違っていたら警告が出るわけだし、その後、正しいブロックの範囲を示すように直す作業はどちらでも同じでしょ。ぶら下がりelseみたいな問題が生じないのはインデント強制の言語(あるいは括弧を省略できない言語)のメリットだと思うけど。
オートフォーマットの必要性が高いのは、そもそも括弧を書く位置がバラバラだと読みづらいという問題が大きいからでは?
読みやすさのために空行を入れることはインデント強制の言語でも普通にできるし、文の途中で改行を入れるときに行継続が必要になるというのは、物理改行を文の終わりにする言語共通の特徴だろう。行継続なしで書ける方がスッキリしていて良いという感覚はありうるけれど、それはまさに気質の問題だと思うが。

インデント強制が好きではないという人が多くいるのもわかるので、あまり拘る気持ちもないのだけど、個人的には>>39-40の挙げる理由はあまり「合理的な理由」とは思えなかったかな。
0044デフォルトの名無しさん
垢版 |
2020/09/09(水) 14:45:23.92ID:JayL9lJy
インデントでネスティングの深さを判断するのに、それをユーザ任せにすると言うのはよくないと思うけどな、人が作った奴なんてインデントを合わせるのに一苦労する。

最初からインデントをチェックしてくれるPython の方がマシ。
0045デフォルトの名無しさん
垢版 |
2020/09/09(水) 15:55:34.59ID:Hy/Ksgks
Pythonのインデントの関係で引っかかったことがあるのは、ヒアドキュメントとしての三連クォート文字列くらいかな。
最初、/* 〜 */コメントと同じ感覚で書いてしまったんだけど、実際には単なる文字列リテラルで式文だから、インデントルールが適用されるんだよね。考えてみれば当然のことなんだが。

引っかかったことがあるのはそれくらいで、あとは波括弧を使う言語と変わりない感覚で書けていると思う。
0047デフォルトの名無しさん
垢版 |
2020/09/09(水) 22:16:38.50ID:yMfVretT
Pythonのようなインデントに意味を持たず言語もデメリットを理解した上で使うならいいと思うが、全く理解してないんだね

単なる経験不足ならいいけど数年以上やってるようなら言語の弊害と言えそう
0048デフォルトの名無しさん
垢版 |
2020/09/09(水) 22:42:50.98ID:Hy/Ksgks
デメリットの話なら、具体的な点を挙げた方が有益だと思うが。もっともな理由なら「ふーん、なるほど」となるだろうし、大したことのない理由なら「うーん、そうか?」となるだろうし。
いずれにせよ、この手のスレで>>47のように勿体ぶるクズの気持ちは正直よくわからん。
0053デフォルトの名無しさん
垢版 |
2020/09/11(金) 06:21:41.67ID:rDZLwTxX
アセンブラーできる19歳の書いたC++がこれだ


https://sourceforge.net/p/winvn-jp-kinoko/code/HEAD/tree/iwas19/winvn/wvstring.cpp

オブジェクトどこいったw

以下解説

スタックトレースとメモリーリーク検出ライブラリ
wvglob.h wvstring.hとかもっとひどい

以下願望

C++のnew演算子もdefineとかでフックしたいぞ
OvjectiveCとか一バイトオーバーフローで警告もなく
クラッシュして不便すぎる
0055デフォルトの名無しさん
垢版 |
2020/09/11(金) 06:55:40.91ID:rDZLwTxX
v? bでした、、

プログラマーの老化とメンテナンス性能について

なんてスレが欲しい
0056デフォルトの名無しさん
垢版 |
2020/09/11(金) 15:07:34.21ID:rDZLwTxX
まあ、80486が新進気鋭だった時代のC++だね。

レジストリで計算させてヒープメモリを使わず、
スタック変数さえスピードのネックになった時代っす。

一時キャッシュはあったが二時キャッシとヒープキャッシュメモリとか無かったんじゃ
0057デフォルトの名無しさん
垢版 |
2020/09/11(金) 15:10:22.04ID:rDZLwTxX
で、本題に戻る。

Visual C# 2019パーフェクトマスターって3200円の書籍かいましたが、
これGUIアプリ作るゴールとして、勉強した方がよき?

JavaSwingみたいな今からは時間の無駄ってことにはならん?
0059デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:11:33.82ID:rDZLwTxX
入りたかった会社の募集みたらC C++って書いてありましたわ、

また戻るのか私は

では、、
0062デフォルトの名無しさん
垢版 |
2020/09/12(土) 12:12:14.87ID:2yAyoIwr
レジストリワロタwww
C#でGUIはWindowsなら色々あるけど
それ以外はUnityかXamarinしかないんじゃないかな
クロスプラットフォームならElectronが良いとは思うけど
GUIアプリならJAVAでも悪くは無いけど今更感はあるかな
0065デフォルトの名無しさん
垢版 |
2020/09/16(水) 23:01:50.93ID:oh4BMBDv
しーしゃああぷっ
0066デフォルトの名無しさん
垢版 |
2020/09/17(木) 00:50:27.96ID:7NFmc0PC
Pythonってどうやって支持者集めたんだろうね
言語そのものよりコミュニティの中心人物が天才だった?
0068デフォルトの名無しさん
垢版 |
2020/09/17(木) 06:23:43.84ID:7+LGM74S
アセンブラの入門サイトで笑ったよ。
誰も信用できない人向けだってさ。

でも、コンピューターとは?ってところから学ぶのも良いかもな。
0070デフォルトの名無しさん
垢版 |
2020/09/17(木) 11:41:44.72ID:FJaokp+J
>>66 教育用言語にはインタプリタ言語が適している。
古くはBASIC 、Microsoft BASIC が一世を風靡した。

その後釜に座ったのがPython 今やほとんどの大学で教えているから、学生、研究者が高度なツールとして使うために膨大なライブラリ群が集まり今や押しも押されぬ位置を占めた。
高度な処理になればなるほどPython 一択。 例えば AI

Mucro:bits は小学生用からの勉強用コンピュータ(2000円位)だが、Micro Pyhon が動く。
エディタでブロックプログラミングするとPython コードが吐き出される。 それをMicrobit にダウンなロードするとLチカやブザー、音楽、Bluetooth 、温度計、、、、などで遊べる。
イギリスでは小学生4〜5年生全員に無料配布している。

日本の検定教科書でもPythonを扱い始めた。
0071デフォルトの名無しさん
垢版 |
2020/09/17(木) 11:45:03.76ID:FJaokp+J
教育用コンピュータとして、raspberry pi が生まれた。
数千円でLinux が動く。これもPython で動かすのが基本となっている。
色んなセンサーを追加する事で機械学習とか高度な事もできる。
0072デフォルトの名無しさん
垢版 |
2020/09/18(金) 18:58:22.57ID:4IDnzIte
>>69
プログラムとは目的があってそれを実現するための手順
ピタゴラスイッチはプログラムだけど紙にコード書きこむのはプログラムじゃない
0074デフォルトの名無しさん
垢版 |
2020/09/18(金) 20:51:58.45ID:bVx/alhd
>>72
>69じゃないけど、手続き型言語じゃ簡単なのしか紙面では追えない(基本情報の試験とか、コードから実行結果を予想する事自体は不可能じゃない)けど、
Haskellなら多少複雑になっても計算を進めるみたいにして実行結果を求められるよ。
0075デフォルトの名無しさん
垢版 |
2020/09/19(土) 07:50:42.75ID:kGiNzl5D
Pythonは昔「こんにちはマイコン」とか本出してたゲームセンターあらしの作者のすがやみつるって人が、
「こんにちはPython」って本最近出したけど、あの人もうおじいちゃんの筈だから
基本的なことはおじいちゃんでも教えることが出来るくらい簡単なのかもしれないね。
0076デフォルトの名無しさん
垢版 |
2020/09/19(土) 21:36:42.73ID:MBYSM5dA
>>70
そういう御託やら薀蓄じゃなくて「Pythonってどうやって支持者集めたんだろうね」を
求めてる質問なんだが?
0078デフォルトの名無しさん
垢版 |
2020/09/20(日) 19:01:43.79ID:ne2DQc4d
アセンブリ
0080デフォルトの名無しさん
垢版 |
2020/09/21(月) 00:09:42.85ID:tf3MsgL+
>>77 プログラミングって問題を解決するためのツールだぞ、利用できるものは何でも使って早く安く解決するのがプロだよ。
1から手作りしてるのはただのプログラミングのお勉強。
0082デフォルトの名無しさん
垢版 |
2020/09/21(月) 09:20:50.42ID:D3lJhgn+
>>66
ブームとなったAI絡みにのれた、というのが大きかったのでは
それを扱う言語の中では汎用性が高かった
昔は日本だとR言語>>Pythonだったが
0083デフォルトの名無しさん
垢版 |
2020/09/24(木) 15:14:57.09ID:zrfzyy+Q
>>1
質問させてください。
質問内容は初心者はどのプログラミング言語からはじめたらいいのか?です。

色々ググってみると、
1 求人や受託案件から逆算して○○か□□パターン。
2 自然言語のおいてのラテン語にあたるC言語、C言語をものにすれば将来的にもつぶしがきく
3 初心者だから簡単な言語、とにかく簡単な言語△△か××パターン。
4 小学生もプログラミング教育がはじまったから小学生向け教材の◎◎か●●パターン。
5 コンピューターは機械語しか理解しない、機械語から勉強すればコンピューターの動作原理から理解でき真のプログラマーになれるパターン。
こんな感じでした。

1は今のところIT系の業界に就職転職する予定はないのでパス。
2も今の段階ではイージーに始めたいのでパス。
4は簡単に見ましたがプログラム学習が主目的で実際に使えるプログラムができるのか?が不明なのでなるべく避けたい。
5はディープな世界なので後回し。
という感じで3だと思います。

やりたいこと(ゲームを作りたいなど)は特になく単純に作って動かして修正してまた動かしての中で日々の役に立つものができたらいいなくらいの気持ちです。
おすすめ言語を数個教えてください。
■ このスレッドは過去ログ倉庫に格納されています