ぶっちゃけ始めるのにいい言語て何 part3
■ このスレッドは過去ログ倉庫に格納されています
>>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)))) # 醜いので普通は使わない >>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/ このように波カッコを使えば、先のお題と同様に左から右へと流れるようなコードが書けます たいして難しいどころか日常的に見られる簡単なお題ですから、もちろん内包表記でも書けますよね? >>25 >このように波カッコを使えば コードブロックの表現に波括弧やキーワードを使うのか それともインデントを使うのかとは関係なくない? Pythonが複数行のlambdaを書けないのはPython特有の問題だし PythonのAPI設計がオブジェクト指向的じゃないのもPython特有の問題でインデントとは関係ない 単なる癖づけの問題で、多数派の方が楽だよねって思うが。 >>26 そもそも>>25 のコードでは波カッコを使っていない、というオチは置いといて(苦笑 [1,4,3,2].sort.reverse.map(&:to_s).join('-') >>25 で書いたように、Pythonが誕生した手続き型プログラミングが主流の時代には、 > コードブロックの表現に波括弧やキーワードを使うのか > それともインデントを使うのかとは 大いに関係がありました(過去形) Pascal の begin..end を使うのかCの{..}を使うのか、いやそもそもブロック表現は 具象構文にインデントを取り込めば..といった論争です(Occamといふ言語をしていますか?) 今となっては当時を知らない若手か老害しか興味を持たないようなつまらない話題です おっしゃるように問題は、元々は1980年代の設計思想(手続き型パラダイム)で設計されて誕生し、 時代時代の流行を追いかけて後方互換性を断絶するような改変(Python2->3)を強行してもなお、 中途半端な関数型プログラミンングやオブジェクト指向プログラミングしか 書けないPythonの現状にあるわけです で、あなたはこの現状を正確に認識した上で、そんな言語を「ぶっちゃけ始めるのにいい言語」として 他人にお薦めしますか? もちろん実世界の閉じた世界で何も知らない初心者を相手にして、優越感に浸る手段とはなるのでしょうけれど 評価軸の1つとしてそういうことを気にする人もいるというのはわからないでもないけど、Pythonは普通に「ぶっちゃけ始めるのにいい言語」としては上位の方でしょ。 お勧めリストとして、RubyをPytnonより上位に位置付ける人よりも、その逆の人の方が圧倒的に多いと思うけど。 インデントしてりゃそれが制御の範囲を示すんだって頭が できちゃうのは副作用でかくないか? >>28 >大いに関係がありました(過去形) 何と何が関係あるって言ってるの? 左から右へ流れるようにコードが書けるということと コードブロックの表現に何を使うかということは関係ないってのが>>26 の指摘 普通はやらないけどPythonでも左から右に書けないわけじゃない pipe([1,4,3,2], sorted, reversed, map(str), '-'.join) 上の話と初心者にPython勧めるかどうかは全く別の話 >>30 そこまで頭の悪い人はいないでしょ。 「VBAから入ると変数宣言はDimでやるんだという頭ができちゃうから副作用がでかい」とか考えるならそうかもしれないが。 両方やった上でインデントが強制されるのは窮屈だから御免被りたいという意見は十分ありうるとは思うが。 インデントはデメリットに比べてメリットが小さすぎるから採用言語が少ない 行数が減るメリットは小さくないと思うが。閉じ括弧やendが不要なのでまず1行分減るし、開き括弧やbeginで1行使う流儀ならさらにもう1行分減らすことができる。 オフサイドルールを採用する言語が今のところ少ない理由は、メリットの少なさというよりも、インデントを強制されるのは窮屈に感じるという気質の人が、プログラマには少なくないからではないかと思う。 Pythonの人気でそれが今後変わるのか変わらないのかは分からないが……。 字下げスタイルはどれが好き? C#はオールマンスタイル、Javaはカーネルスタイルが主流だけど オールマンが見易くて好きだな 行はその分増えちゃうけど現代では困ることもないでしょう >>36 実際は閉じ括弧の代わりに空行入れるから、ネストしたブロックから一気に抜ける場合以外に行数は減らない 特にPythonだと逆に行数増えるからメリットにはなってない >>36 インデントを強制されるのは窮屈に感じるのは気質の問題じゃなく合理的な理由があるから 間違ってたらバグる、閉じ括弧に比べて間違いを見つけるのが面倒、オートフォーマットできない、改行を入れて読みやすくする自由度が低い 自由度が低いと制約を常に頭の片隅に置きながらコードを書く必要があって脳を活用できる度合いが下がる。 理由をうまく言語化出来ないことを気質の問題にしてるとロクなことないよ >>39-40 そんなに拘るつもりもないんだけど、閉じ括弧やendを使う言語でも普通はその後空行を入れるでしょ。行数が減らないというのはさすがに無理筋無批判だと思うなぁ……。 インデントミスでバグるというのは具体的にどういうケースを想定しているのかよく分からないけれど、ブロックの範囲についてプログラマの勘違い・書き誤りがあるケースなら、早めに検出してくれるほうがありがたいと思うが。 閉じ括弧と比べて間違いを見つけるのが面倒というのもあまりピンとこないような。インデント幅が違っていたら警告が出るわけだし、その後、正しいブロックの範囲を示すように直す作業はどちらでも同じでしょ。ぶら下がりelseみたいな問題が生じないのはインデント強制の言語(あるいは括弧を省略できない言語)のメリットだと思うけど。 オートフォーマットの必要性が高いのは、そもそも括弧を書く位置がバラバラだと読みづらいという問題が大きいからでは? 読みやすさのために空行を入れることはインデント強制の言語でも普通にできるし、文の途中で改行を入れるときに行継続が必要になるというのは、物理改行を文の終わりにする言語共通の特徴だろう。行継続なしで書ける方がスッキリしていて良いという感覚はありうるけれど、それはまさに気質の問題だと思うが。 インデント強制が好きではないという人が多くいるのもわかるので、あまり拘る気持ちもないのだけど、個人的には>>39-40 の挙げる理由はあまり「合理的な理由」とは思えなかったかな。 インデントでネスティングの深さを判断するのに、それをユーザ任せにすると言うのはよくないと思うけどな、人が作った奴なんてインデントを合わせるのに一苦労する。 最初からインデントをチェックしてくれるPython の方がマシ。 Pythonのインデントの関係で引っかかったことがあるのは、ヒアドキュメントとしての三連クォート文字列くらいかな。 最初、/* 〜 */コメントと同じ感覚で書いてしまったんだけど、実際には単なる文字列リテラルで式文だから、インデントルールが適用されるんだよね。考えてみれば当然のことなんだが。 引っかかったことがあるのはそれくらいで、あとは波括弧を使う言語と変わりない感覚で書けていると思う。 行数が減るのがメリットとかプログラムまともに書けない人っぽいなw Pythonのようなインデントに意味を持たず言語もデメリットを理解した上で使うならいいと思うが、全く理解してないんだね 単なる経験不足ならいいけど数年以上やってるようなら言語の弊害と言えそう デメリットの話なら、具体的な点を挙げた方が有益だと思うが。もっともな理由なら「ふーん、なるほど」となるだろうし、大したことのない理由なら「うーん、そうか?」となるだろうし。 いずれにせよ、この手のスレで>>47 のように勿体ぶるクズの気持ちは正直よくわからん。 アセンブラなら インデントなんてあまり気にしなくてもいいんだけどなぁ アセンブラーの書いたC++とか全然OOしてないよな アセンブラーできる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とか一バイトオーバーフローで警告もなく クラッシュして不便すぎる v? bでした、、 プログラマーの老化とメンテナンス性能について なんてスレが欲しい まあ、80486が新進気鋭だった時代のC++だね。 レジストリで計算させてヒープメモリを使わず、 スタック変数さえスピードのネックになった時代っす。 一時キャッシュはあったが二時キャッシとヒープキャッシュメモリとか無かったんじゃ で、本題に戻る。 Visual C# 2019パーフェクトマスターって3200円の書籍かいましたが、 これGUIアプリ作るゴールとして、勉強した方がよき? JavaSwingみたいな今からは時間の無駄ってことにはならん? Javaでは途中まで、やりましたが SmallMIDIMix概要: SmallMIDIMix https://smallmidimix.seesaa.net/article/474509301.html みたいのC#で、できたら、クロスプラットフォームな ライブラリが欲しい アプリまでクロスプラットフォームでないにしてもね 過去スレ全ては読み終ってないですが、、 入りたかった会社の募集みたらC C++って書いてありましたわ、 また戻るのか私は では、、 レジストリワロタwww C#でGUIはWindowsなら色々あるけど それ以外はUnityかXamarinしかないんじゃないかな クロスプラットフォームならElectronが良いとは思うけど GUIアプリならJAVAでも悪くは無いけど今更感はあるかな アセンブラならレジストリで計算しなくても済むんだけどなぁ Pythonってどうやって支持者集めたんだろうね 言語そのものよりコミュニティの中心人物が天才だった? アセンブラの入門サイトで笑ったよ。 誰も信用できない人向けだってさ。 でも、コンピューターとは?ってところから学ぶのも良いかもな。 プログラミングやるのに言語なんかいらん 紙と鉛筆あればできる >>66 教育用言語にはインタプリタ言語が適している。 古くはBASIC 、Microsoft BASIC が一世を風靡した。 その後釜に座ったのがPython 今やほとんどの大学で教えているから、学生、研究者が高度なツールとして使うために膨大なライブラリ群が集まり今や押しも押されぬ位置を占めた。 高度な処理になればなるほどPython 一択。 例えば AI Mucro:bits は小学生用からの勉強用コンピュータ(2000円位)だが、Micro Pyhon が動く。 エディタでブロックプログラミングするとPython コードが吐き出される。 それをMicrobit にダウンなロードするとLチカやブザー、音楽、Bluetooth 、温度計、、、、などで遊べる。 イギリスでは小学生4〜5年生全員に無料配布している。 日本の検定教科書でもPythonを扱い始めた。 教育用コンピュータとして、raspberry pi が生まれた。 数千円でLinux が動く。これもPython で動かすのが基本となっている。 色んなセンサーを追加する事で機械学習とか高度な事もできる。 >>69 プログラムとは目的があってそれを実現するための手順 ピタゴラスイッチはプログラムだけど紙にコード書きこむのはプログラムじゃない >>72 >69じゃないけど、手続き型言語じゃ簡単なのしか紙面では追えない(基本情報の試験とか、コードから実行結果を予想する事自体は不可能じゃない)けど、 Haskellなら多少複雑になっても計算を進めるみたいにして実行結果を求められるよ。 Pythonは昔「こんにちはマイコン」とか本出してたゲームセンターあらしの作者のすがやみつるって人が、 「こんにちはPython」って本最近出したけど、あの人もうおじいちゃんの筈だから 基本的なことはおじいちゃんでも教えることが出来るくらい簡単なのかもしれないね。 >>70 そういう御託やら薀蓄じゃなくて「Pythonってどうやって支持者集めたんだろうね」を 求めてる質問なんだが? パソコンでライブラリAPI使うのはプログラミングじゃないので〜 >>77 プログラミングって問題を解決するためのツールだぞ、利用できるものは何でも使って早く安く解決するのがプロだよ。 1から手作りしてるのはただのプログラミングのお勉強。 逆にわざわざフルスクラッチでゼロから作るメリットってなんかある? >>66 ブームとなったAI絡みにのれた、というのが大きかったのでは それを扱う言語の中では汎用性が高かった 昔は日本だとR言語>>Pythonだったが >>1 質問させてください。 質問内容は初心者はどのプログラミング言語からはじめたらいいのか?です。 色々ググってみると、 1 求人や受託案件から逆算して○○か□□パターン。 2 自然言語のおいてのラテン語にあたるC言語、C言語をものにすれば将来的にもつぶしがきく 3 初心者だから簡単な言語、とにかく簡単な言語△△か××パターン。 4 小学生もプログラミング教育がはじまったから小学生向け教材の◎◎か●●パターン。 5 コンピューターは機械語しか理解しない、機械語から勉強すればコンピューターの動作原理から理解でき真のプログラマーになれるパターン。 こんな感じでした。 1は今のところIT系の業界に就職転職する予定はないのでパス。 2も今の段階ではイージーに始めたいのでパス。 4は簡単に見ましたがプログラム学習が主目的で実際に使えるプログラムができるのか?が不明なのでなるべく避けたい。 5はディープな世界なので後回し。 という感じで3だと思います。 やりたいこと(ゲームを作りたいなど)は特になく単純に作って動かして修正してまた動かしての中で日々の役に立つものができたらいいなくらいの気持ちです。 おすすめ言語を数個教えてください。 >>83 実行する環境も書かずやりたいことも無いのにオススメ教えてって無理 プログラムは誰にでもできるけど、やりたいことや目的に沿ってやっていくことが勉強になるから それがなければモチベーションが続かないので上達しないし止めといた方がいい >>83 五択がよくまとまってて好感がもてる どういう言語がいいかは「日々の役に立つもの」のイメージ次第 >>83 Pythonでいいんじゃね? 私の真似をすると、工業高校生が使うポケコンBASICとかあるけど。 ※Visual Basicとは全く違う 今の時代ならPythonにするかな。 簡単だし。実用面もあるし。 Pythonで簡単な計算スクリプトを作成し、スマホに忍ばせておくという簡単なことから始めればいい気がする。 興味が湧いたらガチな開発に切り替えられるし。 >>83 言語というよりプログラミング環境を整え触れることから始めた方がいい N予備校の入門Webアプリコースお薦め https://www.nnn.ed.nico/pages/programming/ この中で近年メジャーエディタなVisual Studio Codeの扱いを学べる 言語としてはJavascript/html/cssで、 どうWebがコントロールされているか知れる VS Code分かったら、PythonやC#なり気になる言語の環境作ってそっち学ぶといい なおWebアプリに興味あればそのまま進めると仮想サーバー構築まで学べる スマホでも使える言語が良いと思うよ。 Pythonならスマホでも使える。 いつでもどこでも勉強できる。 沢山の回答ありがとうございます。 >>84 > 実行する環境も書かずやりたいことも無いのにオススメ教えてって無理 > プログラムは誰にでもできるけど、やりたいことや目的に沿ってやっていくことが勉強になるから > それがなければモチベーションが続かないので上達しないし止めといた方がいい >>85 > どういう言語がいいかは「日々の役に立つもの」のイメージ次第 おっしゃる通りです。作りたいことやりたいことが決まらないと進む道もわからない。 しかしながらイメージするにも地図すらなくイメージすら難しいという悩みがループしている状態です。 >>86 > Pythonでいいんじゃね? > 今の時代ならPythonにするかな。 > 簡単だし。実用面もあるし。 > Pythonで簡単な計算スクリプトを作成し、スマホに忍ばせておくという簡単なことから始めればいい気がする。 >>88 > スマホでも使える言語が良いと思うよ。 > Pythonならスマホでも使える。 > いつでもどこでも勉強できる。 プログラム言語難易度でPythonは★★、C言語やC++は★★★カテゴリーに入っているので選択肢から除外していました。 初心者向きでもあるわけですね。 とりあえず、Pythonではじめてみます >>87 こんな便利なネット学習環境があるのですね、月1000円と安い。 自分は本で学習してみることから開始してみます。 みなさん、色々おしえていただきありがとうございます。 >>89 Python なら無料の教材がネットに山のようにある。 電子教材ならサンプルを試すのにもコピペで試せるから効率的。 公式ドキュメントもネットにあるが、全くの初心者だと少し難しく感じるだろうから入門用教材から始めた方が良い。 >>89 1ヶ月後くらいに進捗報告してくれ この板の平均的住民より日本語能力が高いので期待してる 本命】Blazor スレ1【真打】 https://mevius.5ch.net/test/read.cgi/tech/1595255796/608 ここに書いた YouTube で有名な雑食系エンジニア・KENTA は、 初心者が進む道を、サーバー側言語のRuby → Go を王道としてる KENTA の動画を参照 >>89 JavaScriptならパソコン開いてすぐ出来るよ メモ帳で書いて動かして見ようさ 半角で書いて拡張子HTAで保存後ダブルクリックだけ <script> var str = “ HELLO WORLD<br>”; var num =0; for(var i=0; i<10; i++){ num=i*i; document.writeln(“[“, num, “]”, str); } </script> 超簡単! 未経験なら、Ruby 一択! 他の言語は、挫折確率が非常に高い。 だから、全ての学校は、Rubyばかり教える そして、ベンチャー企業は、Ruby on Rails ばかり採用する >>95 rails6がrails5に勝ってる点を教えてくれ webpacker が、デフォルトになった。 Coffee Script が無くなった AWS に合わせて、DB のリードレプリカ機能。 並列テスト、Credentials, Action Text, Action MailBox 以下に、Rails 6 の本をまとめた レールは続く】 Ruby on Rails Part21 【これからも https://medaka.5ch.net/test/read.cgi/php/1545146635/117 >>94 javascript はあくまでもscript だから、初心者が最初に学ぶ言語には適していない。 >>97 変更点じゃなくて勝ってる点聞いてるんだけど? ほとんどの言語はCの応用 それとほとんどのアルゴリズム(ループとか)は特定の言語とはほぼ無関係だから言語の学習でそれらを学ぶのは時間の無駄 >>98 ほんとに初心者は環境構築からこけるんさね PHPやPythonもスクリプトっしょ?で スクリプト言語の中ではJSが1番取っ掛かりやすいっしょ JavascriptはTypescriptから変換かけたり、 の方が実践的ではと思う (とか考え始めるとどう学ばせるか悩ましい) そもそもjavascriptだけ勉強したところでという感じがする webデザイナーとかならそれでもいいけど バックエンドも確かにnodeでexpressなど使えば全てjavascriptに統一出来るけど PHPなどを勉強してからフロントの制御でjavascriptも覚える方が現実的だと思う 変数、配列、繰り返し、条件分岐、関数、クラス、ファイル操作、例外 くらいまではどこぞの言語もほとんど同じなんだから 始めの一歩は書いて動かす体験が出来ればいい 言語選びよりプログラミングで何がやりたいかのほうが先かもしれんね 重要なのは実現できることの違いではなく学びやすさの違い >>106 CでできるからCがお勧めとはならないよな。その理屈突き詰めれば アセンブラ読めってなるw なので遡って >>104 の意見もどうだかなあ。 Cって文字列も char の配列で\0ターミネイトされてますって前提なので ハードル高いと思う。 全ての学校は、Rubyばかり教える 他の言語は、挫折確率が非常に高いから、 苦情ばかりになって、学校の評判が下がるから、ダメ そして、ベンチャー企業は、AWS, Ruby on Rails ばかり採用する。 Rails 以外を学んでも、無駄 [53選]国内注目のWebサービス・アプリを大調査! プログラミング言語、フレームワーク、アーキテクチャの一覧【2017年】 https://employment.en-japan.com/engineerhub/entry/2017/04/07/110000 だから、YouTube で有名な雑食系エンジニア・KENTA は、 初心者が進む道を、サーバー側言語のRuby → Go を王道としてる この2つの言語以外を言わない。 特に、PHP・Java を言わない >>101 スクリプトとインタプリタは違うんじゃないか? >>111 初心者ならわざわざ月1000円でPythonを勉強しなくたって この御時世Webは避けて通れないんだしJavaScriptで良いのにって話しの流れであって なんならPythonとJavaScript同時進行で良いし インタプリタがどうのこうのいうのはプログラムの一種でしょ?的な? 既にあるのものをあえて使わずに ぶっちゃけインタプリタを作り始めるのにいい言語て何 ってんならC言語やるしかないだろうさ PythonはLinuxの勉強にもなるから良いけど APIとライブラリの組み合わせ最適解だけを求めるような MITのSICPの嘆きと紆余曲折もわからなくは無いよ。 小学生は日本語を習うのに平仮名からやるようなもん だけどスクラッチよりスクリプトの方がよかないか? VSやらUnityやらのポトペタ系ビジュアルプログラミングの弊害の方が気になるので だから始めの基本パターンくらいはスクリプト言語で良いんじゃないかな?と言いたかったんだ。 >>108 ほとんどの言語はCの応用なので あとアセンブリ言語やるのも悪くない 真面目に習得考えたらやることはやらないといけない というかハードウェアの知識すっ飛ばして初心者向きだなんだのいう傾向って何なん? オートマや自動運転ならエンジンやら内燃機関やらモーターの知識は不要という風潮 新人研修なんて無駄は省きたいから即戦力で動かせれば良いよね APIとライブラリの使い方さえ覚えれば良いのでブラックボックスのおまじないも気にしてはいけません >>108 いや、Cはおすすめだがアセンブラはおすすめではない Cは他のモダンな言語に似ているが、アセンブラはどんな制御系でもまるで違う C#やJavaまではCに似てる言語が多かったけど、GoもRustもPythonもSwiftもCと似ても似つかないよね。 流石にCの影響も近年は薄れて来た気がする。 >>113 > ほとんどの言語はCの応用なので そんなことはない >>112 1000円って何やねん。 無料だぞ。 javascript は、HTML , CSS 込みのWeb制作なしでは語れない。 Webを作るならさらなる高級言語で作り、javascript はおまけみたいな物。 普通は元となる高級言語を覚えた後でWeb制作に入れば簡単。スクラッチって何やねん。 Python は、 1+2 と入力するだけで 3と言う答えが出てくるんだぞ。 インタラクティブ シェルが使えるってだけならPerlもRubyもHaskell(ghci)も使える。 runghcでスクリプトとして動くし、ソースコード見られたく無いから実行ファイルで配布したいならghcでコンパイルすれば良い。 PureScript使えば、ほぼHaskellな文法で書いてコンパイルすればJavaScriptのコードを吐く。 Haskellのキラーアプリはプログラミング言語のPerl。 5か6だったと思うけど、Perl本家より早く最新のPerlの処理系完成させた事で2006年当時は注目された。 >>120 知らんがや月1000円の件は>>87 と>>89 に言えって >>121 インタラクティブシェルで始めるのは否定しないが どうも周りくどい気がする 何故・・・。 大規模開発に向く静的型言語と、手軽な動的型言語(LL)の良いとこ採りなのに・・・。 速度こそコンパイルしてやっとLLと同程度か少し速い程度だが、定数に出来るところは定数にする様な最適化(CやC++で多い)が実装されれば劇的に速くなるはず。 (式に対して効く最適化だから、式と文に別れてる言語より最適化の効果が大きい) Haskellは理論だけが先行していたマルチスレッドと最適化の内、マルチスレッドはほぼ理論に追い付いた。 後は最適化が論理に追い付くのを待つだけ。 >>123 ほんとに良いとこ採りなのか? 単に実用性を後回しにした理論先行の言語設計なだけでないの? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる