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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/08/12(木) 21:30:31.00ID:IpKRzNiB
前スレ

ぶっちゃけ始めるのにいい言語て何 part5
https://mevius.5ch.net/test/read.cgi/tech/1622766330/
2021/08/22(日) 18:34:17.48ID:FmMkwQfs
>>264
いまだに、
サーバーから毎回ページ全部のおくるのが大半だよ
それにまともなブラウザーで動き見りゃ一髪でわかんだろ
馬鹿

from 現場より
2021/08/22(日) 18:36:44.72ID:PExPKGEq
AJAXで次ページを実装すると、URL変わらないから、「戻る」したとき挙動が期待した通りにならなくない?
そういうことではない?
2021/08/22(日) 18:51:34.81ID:M38WAZ3o
そういうのはHistroy APIとサーバー側のルーターで自然な動作に見せる。
273デフォルトの名無しさん
垢版 |
2021/08/22(日) 19:09:19.59ID:l91cVjvi
>>271
Struts とかの仕事のときには、結構ややこしいことになったなぁ。
JavaBeans とかを使うとセッションごとに管理されているので、
そのあたりは気にしなくてよかったように思う。
もっとも、漏れがやってたのは学会系のサイトで
査読者だけがアクセスしてログインするようなサイトだったので、
トラフィックの心配とかしなくてよかったから
そのあたりは JSP で丁寧に作りなおした。
当時その職場では CSS が普及していなかったので、
『CSS Zen Gorden』とか呼んで勉強した記憶がある。
2021/08/22(日) 20:17:16.50ID:ufypfn2W
JSはHTMLを動的に処理しようとして作られたHTML志向言語
Javaを意識したというけれど基本はマークアップを動かす言語
それが刷新せずにダラダラと拡張をつづけ、最後はjavaみたいに動かす方法もありますとなった
やっとJSもまともな言語に見えるようになれた!という段階
275デフォルトの名無しさん
垢版 |
2021/08/22(日) 20:22:41.78ID:l91cVjvi
>>269
> 彼はNim開発以前に様々な言語を触っていたようです。
> が、どの言語も満足せず、自身で作成することにしたようです。
> 当初NimはNimrod(旧約聖書の登場人物)という名前でしたが、
> マーケティング上の理由から
「ニムロッド」って、「神に反逆する者」みたいな意味が
あるんだよね。
よっぽど既存のメジャーなプログラミング言語が
気に入らなかったんだろうな。
そう思うと、ちょっと興味が湧いてくる。
276デフォルトの名無しさん
垢版 |
2021/08/22(日) 20:34:42.13ID:l91cVjvi
>>274
JavaScript もまずまず使える言語になってきたと思うので、
HTML が JavaScript の入出力周りを担っているという
解釈もあるかと思われる。
JS からプログラミングを始めようという入門者は、
マークアップ言語としての HTML → JS
というより、
JS → 入出力環境としての HTML
だと思ってそうに思う。
JSP だって、GUI をちゃんと実装するより、
自分の開発環境に Tomcat 立てて書いたほうが
楽だもんなぁ。
2021/08/22(日) 21:06:29.79ID:nGQODmwk
JS→JC→JK→JD
278デフォルトの名無しさん
垢版 |
2021/08/22(日) 21:17:32.04ID:0Cz6ueFz
>>248

Nimの特徴
直感的でわかりやすいシンタックス
公式サイトの記載からNimの特徴を見てみましょう。

以下は公式サイトに掲載されているNimのコード例です。

Nimの最初の特徴して挙げられているのが、そのシンタックスで、曰く「直感的でわかりやすい」とのことです。
Python(のインデントを含めた多くの特徴)やPascalを参考にしているらしいので似ていると思いますが、シンプルですね。

import strformat
type
Person = object
name*: string # Field is exported using `*`.
age: Natural # Natural type ensures the age is positive.

var people = [
Person(name: "John", age: 45),
Person(name: "Kate", age: 30)
]

for person in people:
# Type-safe string interpolation.
echo(fmt"{person.name} is {person.age} years old")
2021/08/22(日) 21:37:51.39ID:aqCRpfAk
Ruby on Rails では、サーバーでHTML を作って返すのが基本。
他には、API モードで、JSON を返すこともできる

ページ遷移は、Turbolinks という機能で、
Ajax で、HTML 内を部分的に書き換えることで、ページ遷移を起こさない

その際、Histroy API のpushState で、
戻るボタンへの対応や、URL を変更する

これを、Ajax + pushState = Pjax と言う
2021/08/22(日) 21:39:53.52ID:PExPKGEq
>>279
へー、いまはそんな機能があるんだ
くっそ面倒くさいな
281279
垢版 |
2021/08/22(日) 22:28:28.48ID:aqCRpfAk
HTML の機能とか、セキュリティー対策とか、学ぶことは無数にある。
だから皆、初心者はRuby on Rails で勉強する

有名なのは、YouTube の雑食系エンジニア・KENTA のサロンだけど、
ほとんどの学校でも、80万円ぐらいのRailsコースがある。
最安値は、東京フリーランスのデイトラで、10万円

その過程で、Linux, Docker, AWS、データベースなど、
システム構築運用に必要な、バックエンド技術も学ぶ
2021/08/22(日) 22:31:07.75ID:1uD9aEBf
>>280
面倒くさいのはブラウザやフレームワーク開発者でTurbolinksももはや古典な部類
その発展がいまでいうSPAで周辺サポートてんこ盛りになってる
仕様化より大手の仮実装が先だけどブラウザ開発よく破綻せんなーおもう
283279
垢版 |
2021/08/22(日) 22:55:14.86ID:aqCRpfAk
例えば、食べチョクみたいな若い女の子が、Heroku などで、1人で起業するなら、
Ruby on Rails, Turbolinks, Bootstrap などで良い。
ただし、食べチョクは、AWS だけど

KENTA のサロンの基本は、
Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース

今までは、Docker Compose までが初心者用コースだったが、
最近は誰でも、Docker出来るから、
AWS Fargate, Terraform, React, Vue.js, TypeScript も追加された。
ただし、これらは個人起業用ではなく、大企業用

他にも、GraphQL もある
2021/08/23(月) 00:42:28.36ID:P11lus6C
>>279
Rubyは不要です
おっしゃる通り、ブラウザがJavaScriptのAjaxでサーバーから(HTMLではなく)JSONデータ等を取ってきてJavaScriptがHTML(のDOM)を組み立てること【※注目1】でページ遷移なく新たなページを表示するわけですが
一番最初にサイトにアクセスした時もこの方式だとゼロからスタートなので表示が非常に遅くなります
そこでサーバー側でもアクセスされる各ページのHTMLを組み立てるこ【※注目2】とでブラウザに渡しすぐ表示出来るようにします

ここで【※注目1】のブラウザ上と【※注目2】のサーバー上ではもちろん同じロジックでHTML(DOM)を組み立てます
ブラウザ上でのこのコードはもちろん必ずJavaScriptになります
同じロジックでHTMLを組み立てるコードをサーバー上で別の言語でプログラミングする意義はあるでしょうか?
ブラウザ上でもサーバー上でもHTML(DOM)を組み立てるコードはほぼおなじですからそのまま同じプログラムを使えばよいのです

つまりサーバー側でもJavaScriptを使うのが自然な流れとして出てきてこれが最新のWebプログラミングの状況です
具体的には例えばReact/Next.jsやVue/Nuxt.jsなど様々なフレームワークがサーバー側でもJavaScriptを用いる方式をとっています
2021/08/23(月) 03:54:59.54ID:3qicjwlg
色んな言語がそうなんだけど、
重ねまくる括弧とラムダ式みたいな特殊な記法が並んでると、
読むのが面倒で意味が飲み込めない。
特にJavaScriptのNode.jsみたいなの。

もう既に固定されたJavaScriptの仕様を無理に拡張させてるって感じでさ。
頑張ってるのは判るんだけど、もう少し判りやすくなんない?って思う。
ああ、こういうスレの主旨として、初心者の直感で書いてるんだけどね。
2021/08/23(月) 06:49:55.42ID:K2w3HmNV
>>285
Node.jsは単なるブラウザ外でのJavaScript実行環境なのでJavaScriptと文法もすべて同じですよ
Pythonにおける実行環境pythonコマンドと同じ関係でJavaScriptはブラウザ内が先だから区別されてるだけで気にしなくて大丈夫

JavaScriptのラムダ式の書式はわかりやすいですね
関数: function xxx(a, b) { return a + b; }
ラムダ式: (a, b) => { return a + b; }
リターンするだけの時は中括弧とreturnを省略可能
ラムダ式: (a, b) => a + b
何がわかりにくいですか?
2021/08/23(月) 07:37:16.19ID:5zH9bxnu
>>286
うん。君が正しいね。その通りだと思う
288デフォルトの名無しさん
垢版 |
2021/08/23(月) 10:15:43.19ID:h9qCfh+2
>>285
科学技術系(数値計算系)の経験でいうと、
「簡単に書ける、初心者向けの言語」って、
ライブラリみたいな「隠蔽されている部分」の
中身を書くときには、精度とか安全性とかを保証しようと思ったときに
「ちょっと心配だなぁ ……」と思う。
足回りのライブラリは Java かなんかで書いて
上の言語からそれを呼び出すとかいうのが
便利かもしれないと思う。
(ただ、これをやるとバージョン管理が面倒臭くなるが。
C とか C++ とかで make ファイルの記述に漏れがあって
プロジェクトが悲惨なことになっている例は
何度も見た)
289デフォルトの名無しさん
垢版 |
2021/08/23(月) 10:18:01.88ID:h9qCfh+2
>>285
> 重ねまくる括弧とラムダ式みたいな特殊な記法が並んでると、
> 読むのが面倒で意味が飲み込めない。
LISP とかな(笑)
2021/08/23(月) 10:52:16.14ID:OQWffhF4
慣れもあるけど可読性を重視するのも大切だね
ラムダ哲学は色んな言語で実装されてるけど
例えば、function func(){
2021/08/23(月) 10:58:48.76ID:OQWffhF4

()=>{}
と同じように思えるけど
オブジェクトの中身を見ると違ったする

function fun(){}とclass c{constructor{}}も
オブジェクトの中身は異なるけれど
同じように機能する

({})
Object()
new Object.create()
Function()
()=>{}
(function(){})()
({}=>)()

確かに簡単に書ける
初心者にはやりやすいかも


class
2021/08/23(月) 11:00:00.40ID:U6ZTgHSo
>>285
なぜ、あなたはそんな嘘をついてまでJavaScriptを叩いているのですか?

>重ねまくる括弧とラムダ式みたいな特殊な記法が並んでると、
>読むのが面倒で意味が飲み込めない。
>もう既に固定されたJavaScriptの仕様を無理に拡張させてるって感じでさ。

JavaScriptの関数式(=ラムダ式)は20年以上前の20世紀から存在しています。
そしてウェブブラウザ内で使われてきました。
そしてラムダ式の記法は各プログラミング言語で多少の差異はあれど当然ほとんど似たような形になっています。
2021/08/23(月) 11:10:43.95ID:OQWffhF4
>>292
彼は初心者の視点として
ラムダ式が読みづらいと主張してるんでしょ
その一例としてJSのNodeを例にしてるだけ

JSは無理に仕様を変更して拡張しなくても
(ライブラリやTypeScriptなどにまかせて)拡張していけばいいのでは?
と、初心者側の意見を提示してるだけに読めるけれど

どこもJSを叩いているとは読み取れない
2021/08/23(月) 11:15:40.03ID:Z/2Y5aLI
ラムダ多用したほうが局所化されてヒトにもコンピュータにも優しいはずなので
完全に見た目≒コーディングセンスの問題
クソコード自覚してほしい
295デフォルトの名無しさん
垢版 |
2021/08/23(月) 11:20:45.88ID:PbwMaige
>>292
その重ねまくる括弧とラムダ式みたいな特殊な記法が並んでる例を
メジャーなスクリプト言語3つで比較してみました
よくある「数字のリストをソートして逆順にして文字列にしてハイフンで繋ぐ」プログラム

【Ruby】
a.sort().reverse().map{|x| x.to_s}.join('-')

【JavaScript】
a.sort().reverse().map(x => x.toString()).join('-')

【Python】
'-'.join(map(lambda x: str(x), reversed(sorted(a))))

結果はPythonだけ最後が4重括弧となってしまいました
RubyとJavaScriptは手順通りに並んで読みやすいですがPythonだけ読みにくいですね
2021/08/23(月) 11:21:45.90ID:gb7LRZA7
ぶっちゃけ始めるなら、ぶっちゃけ系の言語が良い
おとなしい言語は駄目だな
2021/08/23(月) 11:27:20.26ID:n1hZLw7w
>>293
JavaScriptは拡張ではなく昔からラムダ式すなわち無名関数式がありますよ
むしろ拡張でいえばアロー形式導入で見やすく括弧の数も減っています
貴方が誤解しているのではないでしょうか?
>>295に見られるようにJavaScriptはわかりやすい言語の一つです
2021/08/23(月) 11:51:41.29ID:/ZulnilQ
カッコが多いと読みににくいんですか?
どうせ最後の ))))))) とかは終わりという意味ぐらいしかなく
近頃のエディタはカッコの数が違うと教えてくれるので
いやなら見なければいいだけなのでは? } だって
}}}}}}}}} とかなると分かりにくくなりますよね?
299デフォルトの名無しさん
垢版 |
2021/08/23(月) 12:04:11.75ID:JYwdk8yB
emacs だと lisp のカッコは読みにくくならないから不思議ωωω
2021/08/23(月) 12:24:04.86ID:OQWffhF4
激しい文盲がいるな
ラムダと拡張の話は別の主張ともとれるって話をしてるんだけどな
あんた何時も文脈を読み違えるけど
それでコードかけてんの?基本的に会話の理解能力が欠如してるんじゃないの?
2021/08/23(月) 12:40:36.40ID:ueeBrG1Y
>>295
Pythonはカッコが多くなって読みにくいな。
2021/08/23(月) 13:07:59.31ID:OQWffhF4
大容量、超高速の現在
基本は保守や拡張しやすいコードだと思う
エレガントとかじゃなく
2021/08/23(月) 13:48:55.44ID:WMEJY++t
>>295を見るとPythonは可読性が低く保守もしにくそうですね
304Mb
垢版 |
2021/08/23(月) 13:53:54.95ID:h9qCfh+2
>>300
> あんた何時も文脈を読み違えるけど
いや、これを言っちゃ野暮だとは重々承知しているのだが、
キミは揶揄(からか)われているのだよ。
打ち返し芸を鍛錬して、ツッコミ芸を磨いたら
受けると思う。
「デフォルトの名無しさん」だと、
どこに突っこんだらいいのか判断に困ると思うので、
とりあえず固定ハンドル(コテハン)を使おうと思う。
あ、なりすましは一応歓迎するから。

>>302
漏れが泥酔中に書いたのかと思って、
ちょっとビビった。ID 見て安心した。
乏しい環境を体験している世代としては、
激しく同意。
305Mb
垢版 |
2021/08/23(月) 13:59:55.46ID:h9qCfh+2
>>298
そのためにインデントというものがあるんじゃないか。
インデントに関しては議論がある。
米国のとある学会は、
「今後、インデントに関する論文は受けつけない」と
宣言したと聞いた。
出典は共立出版の「プログラミング・セミナー」の中の
『凸凹プログラム』だったと記憶している。
306デフォルトの名無しさん
垢版 |
2021/08/23(月) 14:12:27.29ID:h9qCfh+2
>>302
> エレガントとかじゃなく
「プログラム書法」では「可読性を重視しろ」というのが
重視されているが、プログラムが書けるといえども
「実装畑」ではなくてそれ以外の分野の人もいるので、
エレガンスはあってもいいとは思う。
入山徳夫さんの「入山のアルゴリズム」はエレガントだが、
可読性も高いし移植性も高い(つーても、それが正しく動くことを
理解するのはなかなかに困難だったが)ので、それはそれで
(計算数学的には)いい。
とりあえず、パッケージ・ライブラリの中でおとなしくしていて
祟りをなしたりしないのなら、敬して遠ざけたほうがいい
(つまりは棲み分けだ)と思う。
2021/08/23(月) 14:18:03.18ID:7w/ICjxb
>>300
ラムダ式が入って来ると読みづらいとは、旧世代の人と同じだな。
むしろ読みやすく理解しやすくするためにラムダ式は使われる。
そのために後からラムダ式が導入された言語もあれば、既存だがラムダ式を活用する関数やメソッドを導入した言語もあり、ほとんどのメジャーな言語では全てラムダ式とその活用ができるように進化した。
2021/08/23(月) 14:23:37.15ID:/6K8Gxc1
>>295

なお、ことりん

【Kotlin】
s.reversed().map { it.toString() + "-" }.joinToString()
2021/08/23(月) 14:41:58.79ID:/6K8Gxc1
んーRustはめんどっちいなあ

【Rust】
s.iter().sorted_by_key(|&&it| it * -1).map(|it| it.to_string() + &"-".to_string()).collect();
2021/08/23(月) 14:58:36.63ID:CwptGCUZ
モンタニエ氏はBCGとイベルメクチンを勧めてる
2021/08/23(月) 15:00:38.27ID:CwptGCUZ
モンタニエ氏はMS系ワクチンはやめておけと言ってる
2021/08/23(月) 15:52:18.84ID:OQWffhF4
>>307
いや、俺は285さんを擁護しただけ
2021/08/23(月) 16:06:06.11ID:tscEWmeQ
>>308 >>309
それだと尻尾に余分な"-"が付くよね?
あとリバースされてないね
実際に動かしていないでしょw
2021/08/23(月) 16:19:59.91ID:h9qCfh+2
>>307
いわゆる「ラムダ式」という概念は
Common Lisp の時代からあって、
> ラムダ式が入って来ると読みづらいとは、旧世代の人と同じだな。
とか言ってるのは、何かしら恥ずかしいと思う。
「いまどきニュートン力学とか言ってる奴は。
一般相対性理論を理解していない馬鹿だな。
テンソル解析とか理解できないんだろう wwwwww」
みたいな話がしたいんなら、「ぶっちゃけ始めるのにいい言語って何」
スレじゃなくて。どっか他の板の他のスレで議論してほしいと
思う。
2021/08/23(月) 16:21:39.75ID:/6K8Gxc1
>>313
あ、真ん中に入れるの?w
リバースはされてるよ
kotlinはreversedでし、ruatは-1かけて降順
316Mb
垢版 |
2021/08/23(月) 16:23:47.53ID:h9qCfh+2
>>211
>>212
ロバート・ギャロとリュック・モンタニエに関しては、
とりあえずリンクを貼っておくのが親切だと思うがどうか。
317デフォルトの名無しさん
垢版 |
2021/08/23(月) 16:23:53.39ID:PbwMaige
>>309
Rustは同様にitertoolsを使って正しくはこうだね

【Rust】
a.iter().sorted().rev().map(|n| n.to_string()).join("-")

【JavaScript】
a.sort().reverse().map(x => x.toString()).join('-')

例えばこうしてJavaScript版と並べてみるとほぼ同じ
差異はイテレータにするiter()が余分に入るだけ
RustもJavaScriptも簡潔でわかりやすく言語だといえる
2021/08/23(月) 16:28:11.39ID:h9qCfh+2
>>316
ごめん。
>>311

>>312
だった。
2021/08/23(月) 16:35:30.03ID:OQWffhF4
ラムダの話をすると哲学になるからやめておこう
秋の夜長の酒飲み話になるまでまとう
2021/08/23(月) 16:46:55.97ID:TxHR3yQm
ノーベル賞ウイルス学者モンタニエ重要提言
・スプレッドを止めない現行ワクはウイルス変異流行の選択圧を高め、ウイルスとの軍拡競争に陥る戦略ミス
・副反応知っている医療従事者への強制接種は止めろ
・T細胞免疫を高めるBCGワクチンを代わりに採用せよ
・イベルメクチン等による早期治療を導入せよ
https://mobile.twitter.com/j_sato/status/1424549554418970625

MS mRNAワクチンは害悪
https://twitter.com/5chan_nel (5ch newer account)
2021/08/23(月) 16:49:02.94ID:OQWffhF4
ラムダの話なんかしてっからワクチン厨まで寄ってくる・・・
322Mb
垢版 |
2021/08/23(月) 16:59:59.61ID:h9qCfh+2
>>321
> ラムダの話なんかしてっからワクチン厨まで寄ってくる…
それは違うな。プログラミング厨の中に一定量の感染症厨が
いたというだけだ。
それを否定するなな、統計を取ってカイ自乗検定とかを行なって、
帰無仮説を排除するのがシステム屋だろう?
2021/08/23(月) 17:01:17.35ID:/6K8Gxc1
>>317
itertoolsは無敵すぎる
しかもrustはネイティブコンパイルで実行速度も速いし最高
2021/08/23(月) 17:09:14.40ID:8PVTVy0+
モンタニエ氏はBCGとイベルメクチンを勧めてる
2021/08/23(月) 17:10:09.60ID:8PVTVy0+
リー・メリット博士によれば
mRNAテクノロジーは二進法の毒であり、完璧なバイオ兵器とのこと
2021/08/23(月) 17:34:16.87ID:OQWffhF4
どんなシステム屋だよw無駄すぎるw
2021/08/23(月) 17:55:38.21ID:mUiDivSN
>>317
itertools使えばiteratorから直接joinできるよ
ItemのDisplayで文字列に変換される

sorted(&a).rev().join("-")
2021/08/23(月) 18:01:34.93ID:mUiDivSN
stdだけだとiteratorをcollectする必要があって
それがJavaScriptやRubyとは違うところ

a.iter().rev().map(|x| x.to_string()).collect::<Vec<_>>().join("-")
2021/08/23(月) 18:35:17.45ID:LGNn5NAE
そんな糞難しいLinqやラムダ式を考えなくても良いのがVBAの良いところだよね。
まぁ欲しくなったらC#でアドインでも作っといて入れ込めばいいし、
その気になればVBAの中にJavaScript入れ込めるし。
330デフォルトの名無しさん
垢版 |
2021/08/23(月) 19:30:39.38ID:/MMjlpx1
>>325
バイナリーウェポンな。
2021/08/23(月) 19:31:38.06ID:I2MyFKUs
>>329
君はラムダ式が何かを理解していないと思われる

例えば>>317においてラムダ式は
【Rust】
|n| n.to_string()
【JavaScript】
x => x.toString()
これだけ

君はこれを糞難しいと言ってる
本気かね?
2021/08/23(月) 20:05:49.57ID:5zH9bxnu
>>331
先生、どうしてJSは
function func(x){return x.toString()}

x=>x.toString()
と、違う内部構造の設計にしたんですか?
2021/08/23(月) 20:18:34.31ID:NMruVyV2
>>332
ほとんどの言語は関数宣言とラムダ式で書式が違う
ラムダ式は短く書けるようになっている
もちろん書式が異なるだけ
あなたの主張する「違う内部後続の設計」は意味不明
2021/08/23(月) 20:20:05.76ID:/6K8Gxc1
>>317
>>327
先生!itertoolsでこれで行けました!

s.iter().rev().format("-");
2021/08/23(月) 20:22:54.88ID:gb7LRZA7
>>298
>カッコが多いと読みににくいんですか?

カッコが多いと格好いいよな
思考順序でメソッドが並んでいると書きやすいが
336デフォルトの名無しさん
垢版 |
2021/08/23(月) 20:26:48.96ID:PbwMaige
>>332
ラムダ式は通常は無名関数式を指すので「func」という関数名が付いているのはラムダ式ではないね
なのでラムダ式は下記の(1)
 (1) function (x) { return x.toString() }
さらに他の言語と同様にfunction等のキーワード無しで短く書ける(2)のアロー形式も採用した
 (2) (x) => { return x.toString() }
さらに他の言語と同様にreturnで値を返すだけの時は(3)のように値だけ書けばOKとしている
 (3) (x) => x.toString()
さらに引数が1つだけの時は括弧を省略できるようにしている
 (4) x => x.toString()
順に追えば特に違和感はないと思います
他の言語でもラムダ式と関数宣言は形式が異なるものが多いのでJavaScriptだけ何か特別な状況ではないね
337Mb
垢版 |
2021/08/23(月) 20:49:03.70ID:h9qCfh+2
>>325
> カッコが多いと格好いいよな
誰がうまいことを言えと(笑)
「山田くん、座布団全部持ってって」。
つーても山田君のときに司会をやっていたかは定かではない。
師匠の「中村仲蔵」は、六代目圓生師匠と甲乙つけがたい。
338デフォルトの名無しさん
垢版 |
2021/08/23(月) 20:57:12.28ID:h9qCfh+2
>>336
慣れるとそれなりに使い勝手はいいんだが、
「別のファイルで似たようなことをやってるんじゃないか?」と
思うと、共通化したくなるのがシステム屋の常。
アジャイル開発では便利だし、ファイルが無暗に増えなくてもいいという
利点はあるものの、個人的には心理的に落ち着かない。
2021/08/23(月) 21:02:20.31ID:qV//YiJv
元々の話(>>285)はラムダに視点を置いてるが
実際ラムダがどうこうって言うより非同期処理でコールバックの括弧多すぎって話じゃね
非同期の話もお腹一杯なんでしたくないけど
2021/08/23(月) 21:08:44.65ID:dS401MqO
>>295
Ruby
>a.sort().reverse().map{|x| x.to_s}.join('-')

map{|x| x.to_s} を、map( &:to_s ) と書ける

Symbol#to_proc で、self に対応する、Proc オブジェクトを返します。
生成されるProcオブジェクトは、lambda です
2021/08/23(月) 21:15:47.60ID:mT5p8ZPd
>>339
コールバックでカッコ多すぎは大昔の話だな
少なくとも7年前にはChromeもFirefoxもJavaScript Promiseをサポート
その時点でカッコ多すぎは無くなった
>>285氏は7年以上時間が止まっているのかね?
2021/08/23(月) 21:25:28.11ID:dS401MqO
Elixir なら、

[ 2, -1, 3 ]
|> Enum.sort( )
|> Enum.reverse( )
|> Enum.join( "-" )
|> IO.puts

出力
3-2--1
2021/08/23(月) 21:29:48.49ID:6ZBOTLRO
モンタニエ氏はBCGとイベルメクチンを勧めてる
MS系のワクチンはやめろと言ってる
2021/08/23(月) 21:37:27.91ID:l/IbaTmN
>>342
やっぱり第一引数を省略した()が気持ち悪い。
2021/08/23(月) 22:09:06.72ID:h9qCfh+2
「始めるのにいい言語」というスレで
あんまりややこしい話はしたくないんだが、
引数を渡す場合には
番地呼び/参照呼び(call by adress, call by referrence。番地渡し)と
値呼び(call by value。値渡し)の他に
名前呼び(call by name)というのがあって、
ラムダ関数とかだと、けっこうややこしい話があるんだわ。
Prologを PDP から DEC に移植した中島秀之さんは、そのあたりで
修羅場を見たという話がある。
2021/08/23(月) 22:15:20.58ID:x2dcVOdp
>>295 ocaml
https://ideone.com/3ys87s
let f1 x = String.concat "-" (List.map string_of_int (List.rev (List.sort compare x)))

(* @@ Application operator *)
let f2 x = String.concat "-" @@ List.map string_of_int @@ List.rev @@ List.sort compare x

(* |> Reverse-application operator *)
let f3 x = List.sort compare x |> List.rev |> List.map string_of_int |> String.concat "-"

let (<<) f g x = f (g x)
let f4 = String.concat "-" << List.map string_of_int << List.rev << List.sort compare

let (>>) f g x = g (f x)
let f5 = List.sort compare >> List.rev >> List.map string_of_int >> String.concat "-"

let () = List.iter (fun f -> print_endline @@ f [1;1;9;2]) [f1;f2;f3;f4;f5]

9-2-1-1
9-2-1-1
9-2-1-1
9-2-1-1
9-2-1-1
2021/08/23(月) 22:22:40.81ID:5zH9bxnu
関数の構造が違うっていうのが分らんのだよね
意図的に違う説明してるのか
分かってないのか
からかわれてるのか
どうなの?
2021/08/23(月) 22:24:12.84ID:5zH9bxnu
>>333
JSの関数とラムダは構造が違うのは公式リファレンスで言ってるだろ
リファレンス嫁
2021/08/23(月) 22:25:58.95ID:ZlIia11a
>>344
> やっぱり第一引数を省略した()が気持ち悪い。

現代のメジャーな言語の多くは、
『ターゲット.メソッド名()』
と呼び出す、もしくは、呼び出せるようにしました。さらに、
『ターゲット.メソッド名1().メソッド名2().メソッド名3()』
とメソッドチェーンで書けるようにもしています。
見やすくわかりやすくプログラミングしやすいからです。
2021/08/23(月) 22:32:20.12ID:qV//YiJv
>>348
公式リファレンスにラムダなんて無いぞ
2021/08/23(月) 22:33:46.35ID:qV//YiJv
てか公式リファレンスってなんだっけ
2021/08/23(月) 22:51:32.10ID:l/IbaTmN
>>349
rubyだとレシーバだが、elixirはそれとも違う。UFCSをサポートしているわけでもなし。
2021/08/23(月) 23:25:40.54ID:uQ28Ugwc
>>348
ラムダ式は無名関数式です
関数宣言と関数式は全く同じです
ただ唯一、関数宣言は事後に宣言があっても関数名がその宣言前にも有効なくらいの違いです
354342
垢版 |
2021/08/23(月) 23:30:37.47ID:dS401MqO
Elixir は関数の第1引数を、パイプ渡しできる
2021/08/23(月) 23:42:42.47ID:/6K8Gxc1
やめて、コロナと違ってラムダ君には何の悪気もないのよ
ラムダ式は普通の関数の糖衣構文(シンタックスシュガー)なのよ!!
2021/08/23(月) 23:48:50.73ID:l1bWxSKK
クロージャはラムダじゃないがラムダに見える
2021/08/23(月) 23:50:37.25ID:l1bWxSKK
ちがった
358デフォルトの名無しさん
垢版 |
2021/08/23(月) 23:53:56.44ID:zs343Efl
ラムダ株は脅威だとあわしろ氏は言ってる。
2021/08/24(火) 00:17:24.45ID:hTcLrhRV
モンタニエ氏はMS系ワクチンはやめろと言ってる
2021/08/24(火) 00:58:21.12ID:rNMYd1ik
昨日も老害大暴れ んでそれに付き合うアホ
2021/08/24(火) 01:11:46.83ID:nCkaOe0t
上のRubyの
map{|x| x.to_s} が冗長だとしてmap( &:to_s ) は短いけどなんかダサい

&: になにか必然性でもあるの?
2021/08/24(火) 03:10:06.62ID:U9EepWKx
>>361
短くして可読性を下げても呪文になってくだけだよね
むしろ逆にmap{|x| x.toString()}でも良いくらい
2021/08/24(火) 03:42:16.39ID:BNRQhvw2
記述の判りやすい言語から始めるべきなの?
むしろ難しいのを経験した方が良いかも。
364340
垢版 |
2021/08/24(火) 06:00:42.93ID:SMXHl8SK
map( &:to_s ) は、Symbol#to_proc だろ

map に、&:to_i, &:itself, &:to_csv
&:lstrip, &:split,
&:downcase, &:capitalize

とか書くのは定番
2021/08/24(火) 07:00:43.69ID:EYpqq2mn
>>363
プログラミングを学びたいのなら
作りのしっかりした堅い言語がいい
javaは良書も多くネット情報も質の高いのが多い
資格制度も整っているので学習言語としておすすめ
366デフォルトの名無しさん
垢版 |
2021/08/24(火) 07:27:48.15ID:GKX34T4/
問題は、今JavaをやってもブラックなSES系企業にしか就職できないということ
2021/08/24(火) 08:38:12.33ID:6AE2aGAT
Javaは今後少しずつ消えていくでしょう
例えばFacebook社はJavaを捨ててRustを採用だそうです
多くの点でJavaは古く劣っていますから


Facebook、開発言語に「Rust」採用 次期ビルドシステムの開発で
https://www.itmedia.co.jp/news/articles/2107/28/news152.html

Rustを用いることで、どのような利点があるのか。Facebookは記事の中で次の4つの項目を挙げています。

@Rustのasync/awaitシンタックスは、非同期のコードをとてもスムーズに記述できますし、Rustは複雑な並行処理の詳細を正しく理解するのに役立ちます。
BuckのJavaの計算を一つ一つ並行処理に移行するのは数カ月に及ぶ困難な作業でしたし、シングルスレッドの大きなボトルネックがまだ存在しています。

ARustには、開発をより簡単で楽しいものにしてくれる多くの高レベルな言語機能があります。
それらはenum、パターンマッチング、trait、手続き型マクロなどで、Rustの開発者の多くに愛されています。

BRust はメモリの割り当てをより細かく制御することができます。
ガベージコレクションのある言語では、たとえジェネレーショナルコレクションであっても、Buckが行うようなインクリメンタルな演算に対応するのは困難です。

CRustは高性能です。
Rustに移植することで劇的な性能向上を私たちは見てきました。
2021/08/24(火) 08:48:35.17ID:klPKE9MS
うちLumbdaっちゃ
2021/08/24(火) 09:34:21.50ID:BkROVOcT
プログラムを学ぶのなら、な
C#でもいいけど
新しい言語は日本語訳の良書が少ない
成熟された良書が多く
言語以外のマナーな作法、デザインパターン
その他を同一言語で学ぶのなら
javaやC#などの言語がおすすめ

JSやRubyとかの言語は
プログラムを学ぶにはお勧めしない

四則や正規表現、関数、クラスなど
基礎に触れるだけならなんでもいいけどね

ってことを言ってるだけです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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