ぶっちゃけ始めるのにいい言語て何 part5
レス数が950を超えています。1000を超えると書き込みができなくなります。
つーか、C では int の -1 と true が同じ意味なので、
「=」と「==」のミスで苦労したプログラマも
多かったと思う。
「let」というのも いかにも古いし、
変数宣言のときに型はきっちり定義して、
代入は「:=」を使って、
比較は「=」を使うとか、なんかしら工夫は
あったほうがよかった気がする。 >>850
だれがプログラムを書いているのかわからんが、
派遣社員が Rust コーダーとして使い潰されて
秋葉原で無差別大量殺人とか起こされたたくもないなぁ。
トヨタは生産拠点を日本・北米・欧州のそれぞれに
持っていて、オンラインで連携をして二十四時間体制で
生産しているらしいが、下手なコードでシステムを作られて
保守がままならんとかいうのは勘弁してほしい。 >>849
それは貴方が勉強不足
・Rustは静的な強い型付け言語
・Rustでは暗黙に型変換が自動的に行われることはない
・Rustのlet文では型を宣言できる(型推論できる時のみ省略可能)
>>851
・RustではCと異なりif等の条件にはbool型のみ可
・つまり混乱が起きることはない >>853
そんなていねいに指摘せんでもスルーするのも優しさ
前世紀から完全に時間が止まってるもん
後発言語がそんな設計なわけないやん トヨタはFlutterも使ってるらしいな
実に適切な選択をしていると思う >>853
>Rustでは暗黙に型変換が自動的に行われることはない
あるよw >>853
ふーん
ビット演算とか使うとき融通効かなそう >>856
便宜上、参照/外しを自動適用することはあっても、プリミティブな型の変換が暗黙に自動適用されることはないよね。
>>857
なぜ?
Cだって0がfalseになるだけだから、
bool型を持つ言語では例えば==0か!=0などと明示的にbool型にするだけ。 >つーか、C では int の -1 と true が同じ意味なので、
doubt >>854
確かにRustなどを批判してる人はなぜか知識が昔のまま止まっている人が多いね >>860
> 確かにRustなどを批判してる人はなぜか知識が昔のまま止まっている人が多いね
FORTRAN や LISP や C のような古い言語から乗り換え乗り換えして Java とかに
落ちついた人は、「知識が昔のまま止まっている」わけではないが、
開発歴が長いだけあって「始めるのにいい言語」の評価として
「業務で使えて、かつ安全で、大規模化に対してロバスト」とかいった
基準にも目配りしたくなる。
単純に批判がいけないわけでもなかろう。
「LISP は括弧が多すぎて読みにくい」対
「FORTH は括弧がないから読みにくい」みたいな議論は、
洒落や冗談以外では意味が乏しくはあるが、
それをいうとブロック化の方法については
不毛な議論になりそうにも思う。 いま初スレから読み返しているんだが、
「始める」っつっても「一から始める」とは
限らんのだよな。
本を読んで、他人のコードを読みながら一から
勉強するんなら、RATFOR みたいなのも
アリかもしれない。
業務用の入門用ということであれば、
可読性が高くて再利用しやすいという点で
Java なんかもそれほど悪くない(少なくとも
C 言語よりはマシ)とも思う。
COBOL とか PL/I も、そう思うと腹が立たない。 >>861
「Javaとかに落ちついた人」でそれ以降の技術を知らないのなら
それは「知識が昔のまま止まっている」ことになるぞ COBOLは日本語のドキュメントが充実してるから全然あり
ろくに日本語ドキュメントがない、なんなら英語のも充実してない言語はおすすめしない スクリプト言語から入るのは、車の運転で言うとAT車から入るようなものじゃ トランスミッションの仕組みを知る必要はない動けば良い >>685
> スクリプト言語から入るのは、車の運転で言うとAT車から入るようなものじゃ
それはそれでいいと思う。
メモリの GC を自動でやってくれる言語だと、ポインタが使えなくて
すべてハンドル(ポインタへのポインタだな。Java の「参照」は
これに近い)経由で行なっているので、ハンドルそのものを操作するのは
システム側にしか許されていない。
C 言語だと、うっかりすると結果的にシステムの最奥部にアクセスできちゃう
(出自がシステム開発用の言語だから当然だ)ので、
「初心者ドライバーが暴走しないように配慮されている言語」は、
街乗りの AT 車的な用途にはいいと思う。
Web のサーバーアプリケーションなのかスマホのアプリなのか
デスクトップ・アプリケーションなのかパソコン用のツールなのか、
それぞれあっていいと思う。
公道車輛だけが車輛じゃない、ということなんじゃないだろうか。 >>866
そうだな。飛行機にクラッチはない。
芝刈り機や耕運機みたいなプログラミング言語も
あるし(awk なんかはそれに近い)。 COBOLなんかやるくらいだったらSQLとデータベース設計でも勉強したほうがまし
データベース論理設計が分からないってのが一定数いるらしい(笑) 「データベース」という言葉は、「情報基地」という意味で、
「作戦指令室」みたいな意味だったんだわ。
昨今は死語だろうが、「デバッグルーム」とうちらは呼んでいた。
いわゆる「DB」は、「RDBS」といって、
「リレーショナル・データベース・システム」の
略なんだわ。
で、その基礎に Codd の「リレーショナル・データベース理論」
というのがあって、その根底に表(テーブル)という
コンセプトがあるわけだ。
そこから勉強すると、SQL はいい言語ではあるし、
いわゆるデータベース設計は、システム屋にとっては、
けっこう上級者の仕事だと思う。
そういう意味では、初心者向けではない。
とはいえ、いわゆる「プログラマ」が学びなおすのに
SQL は適した言語ではある。 まともなカリキュラムなたたいてい一番最初にDBとDBMSの区別を教えられると思うが。 >>871
すまん。m(_ _)m
こちとら「まともなカリキュラム」を経験していない
独学の野良プログラマなので、そのあたりの知識が
かなり怪しいのだ。
指摘されて思い出したが、正確には
「リレーショナル・データベース・マネージメント・システム」
なんで、「RDBMS」が正しいんだよな。
「コンピュータ」も、いま普及しているのは
「エレクトロニック・データ・プロセシング・システム」なので、
「EDPS」が正しい、みたいな話もあった。
そういう意味では「ぶっちゃけ始めるのにいい言語」
(というか、「ちゃんと学びなおしたほうがいい言語」)
となると、「日本語と英語」という話になると
思われる。 そういう意味では、「データ」っつーのは「入力(input)」された
「符号化された情報」であって、JIS でいう「情報処理」は
「データ処理」(ちなみに data は複数形で、単数形は datum)
だとか、「インデックス」というのは、「鍵(key)データと
『それがターゲットであるかどうか確認するためのデータ』という
識別子(アイデンティファイア)と、必要なデータを指し示す
データポインタ(いや、そこにあっても問題はないし、必ずしも
電算用語でいう「ポインタ」ではなくていいわけだから「参照値」)の
三つ組のデータだ」とかいう話は、共立出版の『bit』で学んだ。
まず「教えられるべき内容」があって、「まともなカリキュラム」が
あって、その後に「教育用の言語」としての「始めるのにいい言語」が
あってしかるべきだと思うがどうか。 長年初心者に付き合っているんだが
SQLでつまづく人は少ないな
エクセルに似ているということで
理解しやすいのかな COBOL懐かしいな。
ピリオドが行からはみ出てバグるとか、ずいぶん悩まされたもんだ。
でも、久々にバッチ処理とか回したくなってくるな。
ファイルからファイルに出力するだけのプログラム何本も組んでさ。 >>875
> ファイルからファイルに出力するだけのプログラム何本も組んでさ。
いや、それは基本だろ? なんら恥ずべきことではないし、
unix ツールのフィルタの基本はそれだ。 >>874
> 長年初心者に付き合っているんだが
> SQLでつまづく人は少ないな
表(テーブル)というものの直交性が分かりやすいんだと思う。
もっとも、その発想は Codd のリレーショナル・データベースの
概念に負うわけだから、おれが偉そうに言う筋合のものではないのだが。
ただ、そのテーブルの設計とか、「データベース ID」とかいった概念は、
掘りさげてゆくと深いものがある。
ただ、SQL は「使えるようになったらステップアップできる言語」
ではあるものの、「(最初に一から)始めるのにはいい言語」かどうかは
判らない。 >>874
Linqならともかく、エクセルなんてどこが似てんのかな。 UNION・INNER/OUTER JOINで20個くらいテーブル連結したら、思ったようなSELECT結果にならないとか、
そういうのは慣れても見かける。 大規模なインターネットサービスではSQL/RDBMSが使われないのを見てもわかるように、とにかく遅くて無駄で効率が悪い。
だから何事をするにしてもまずは、「それをするのにSQL/RDBMSが本当に適しているの?」からスタートすることが大切。 データは複数形だからデータムと言うように、あわしろ氏が推奨してたな。 テーブル定義でがっちりビジネスロジック組むのは
ドキュメンテーション的にも正しいと思うが
そこで仕事終えてて使い勝手まで考慮してないケースが泣ける
VIEWやキャッシュまで含めて設計せーやと >>874
DBならストアドプロシージャだけどあれもスクリプトみたいなもんやしそれ以前にテーブルとビューの設計のが難度高い予感 >>877-878
例えばExcelでマスタ表作ってvlookupとか普段やってる人なら
DBの基本も理解できるだろう >>878
似てるもなにも
シートにSQL投げられるしな >>880
DBの専門家と言われる人々の多くがRDBしか頭の中になくて不適切な場合でもRDBを選んでしまってるケースが多いね
>>882
インターネット上のほとんどのサービスは9割以上の部分でガチガチ厳格なDB操作が必須なものではなくて
さらにはDBアクセスすら毎回は不要でキャッシュ設計が重要なのはその通りなのですが
自称DB専門家たちはその視点が抜け落ちていてDB自体の設計とチューンアップだけやっている愚か者が多いですね >>882
それは別分野です
バッチなのかhttpなのかにもよるから >>886
キャッシュ設計はDB屋の仕事じゃない
全体のアーキテクチャ設計者かアプリの設計者の仕事
自称DB専門家にキャッシュ設計を期待するような愚か者は聞いたことがないですね そもそも>>886の言う「DBの専門家」って、DBしか知らない専門バカみたいなイメージなんだろう。
いわゆるDBの専門家のうち実際何割くらいいるのかは知らんが。 Redis使うようなケースだけじゃなくreadレプリカや結果整合性の分散DBもある意味キャッシュを使ってるのと同じことになるが
そういうアーキテクチャ設計はDB専門家には頼まないわな これからのプログラミングは手順を記述するのではなく、数式を記述するべきです。
手順には時間軸があります。
数式にそれがないので数学的な最適化が可能となるのです。
プログラミングの数学的アプローチです。 >>889
そこを分離して考えてる古い人たちには、Internetでの様々な大規模サービスは実現出来なかったでしょうね。
非効率にRDBMSだけを使って無駄に遅いシステムが現実にたくさんあるのは事実ですが、なぜ彼らはRDBMSだけにこだわるのでしょう? RDBが優れすぎているからだな
結局世の中のほとんどのシステムはRDBだけで十分なパフォーマンスで動いている >>893
RDBには用途によっては非効率面もあるが逆に効率の良い面もあるからな
一面だけ見てトレードオフを理解しないうちは君も彼らと同じ愚か者だぞ 今のRDBはnoSQLの機能を組み込んできてますよ >>896
ゆるふわJSONとの相性がいいからドキュメントDB使いたいとか抜かしてる頭の悪いスクリプト坊やを軽く一蹴できる程度にはなったね
RDBの列に生のJSON突っ込んでJSONPath関数が使えてとインデックスが張れたら済むだけの話だったっていう おおかた自称DB専門家とやらにバカにされて悔しい思いでもしたんだろうが
掲示板でそいつをバカにしたところでお前が偉くなるわけじゃないぞ
つまらんルサンチマンは捨てて自分を高めることに力を注げ >>894
GoogleやAmazonなど大手IT企業はRDBではサービスできないのが判明したため新たなDBを作って運用していますね
>>896
RDBでないものをNoSQLと呼ぶのですよ
RDBには組み込めません Codd の RDBMS 理論というのは、
理論としては扱いやすいんだけども
「業務」という場面においては
「現場の人間」には理解しきれていないように思う。
たとえば「部分文字列の全件検索」とかは
DB サーバー側で完結してくれたら効率的なんだが、
クライアント側でそのあたりを処理しようとおもうと、
サーバーとクライアントのトラフィックで効率が落ちる。
「それぞれのクライアントがどうやって DB サーバーの
リソースをうまく共有・利用するか」みたいな話は
業務系の SE としての経験を七年とか八年とか積まないと、
なかなか実感としては湧かないと思う。 >>897
非定形ドキュメント型のアプリ構築する時
最初 Elasticsearch が最有力だったんですが、
SQL-Serverに該当機能があるのわかってよかったです
Elasticsearch で構築してたら
リレーショナルの機能を全部実装しなきゃならなかったはずで、
そしたら地獄だったでしょうね ElasticsearchはRDBからコピーしてきてキャッシュ的に使うもんだよ
ドキュメントDBとして使えてしまうのは事実だが、機能性や信頼性はゴミだ >>899
GoogleもAmazonもRDBめちゃくちゃ使ってるよ
Google Ads(昔のAdWords)はずっとRDB
長い間MySQLやOracleを使ってたが大規模な分散環境でも使えるRDBを自分たちで開発してそれがSpannerになってる >>902
ログ解析するときゃそのパターンかもしれませんが、
最初から Elasticsearch に突っ込んでもいいと思いますが... >>886
RDBしか扱えない自称DB専門家は確かに多い
本来は適材適所に使い分けるべきなのにRDBしか知らないためそれが出来ない
RDBが万能だと思い込んでいるようだ (自称)DB専門家にもその適材適所の判断ができる人とできない人がいるというだけだろう。
RDBも知らない人ならもっとできないだろうし。 判別は簡単
何でもかんでもRDBしか使っていないならばモグリ確定 >RDBしか扱えない自称DB専門家は確かに多い
多いと言えば、RDB専門バカより「RDBをわかったつもりになっている人」の方がはるかに多く見かけるな。 amazonもgoogleもユーザーからの入力を受けて
リアルタイムでDBを動かしているわけではないよね?
部分的にはそうだけど、大半の検索は事前にやっているよね? >>905
> RDBしか扱えない自称DB専門家は確かに多い
逆だろ。「自称DB専門家」が ISAM くらいしか理解できなくて、
RDB のテーブル構造に落としこめる技量がないから
威張っているだけだ。
そんなもん、ER すまん、ミスタッチだ。
そんなもんb ER 図(エンティティ=リレーション図)とか見れば
一発でわかるんだが、テーブル設計というのは
「プロジェクト全体で共有する」という志向があるので、
阿呆なプロジェクトリーダーがいると現場の人間が
迷惑するのだよ。
そういう意味では、SQL はそれほど悪い言語ではないし、
将来性のある言語ではないかと思う。 おじいちゃん、今はもう90年代じゃあないんですよ。 >>911
あなたが何も理解できていないことが露呈 >>909
amazon はどうか知らないが、
Google はあらかじめ「ダブル配列法」というのを
使っていて、それでインデクスを構成していて
高速化している。
ただ、ダブル配列法は英語のようなスペースで
区切られていう言語だと効率はいいんだが、
日本語のような「膠着語」でありマルチバイト文字を
使っている言語だと、辞書を再構成するのに
けっこう手間がかかるんだよ(つーても、語彙数はせいぜい
数百万語なので、現代のコンピュータで処理するのは
たいした手間じゃないんだが)。
「トリプル配列法」というのがあるので、
気が向いたら実装してみてくれ。 マイクロソフトアクセスから大体その辺は教えてもらった >>914
ダブル配列ってのはtrie木の実装方法 ダブル配列はもう古い。
これからはシンメトリック配列。 ダブル配列って理解するのも実装するのも面倒だけど、自分で組む必要があるの?
ライブラリの中身の話っぽいからさ。 Rustって、ルストって呼ぶの?
英語の発音聞くとラストっぽいけど。 「ラスト」っていうのは、たぶん「錆びた」という意味だと思う。
「ラスティ・ネイル(錆びた釘)」というカクテルがある。
「螺子(ねじ)回し(スクリュー・ドライバー)」という
カクテルは有名だ。 ダブル配列は初心者の頃に一度は実装してみるもんだろ。 >>976
> ダブル配列は初心者の頃に一度は実装してみるもんだろ。
「ダブル配列法」は、「偏りのないバイトデータ」を前提としているので
多バイト系の文字コードに関していうと、かえって効率が悪いんだわ。
だったら素朴なトリプル配列法のほうが、いまどきはコンセプトとして
使いやすいと思われる。 もうc#で結論出てると思ってたけどまだrustがどうとかやってんの? C#なんて話題あったの?
今(初心者以外が)始めるならRustが一番熱いよね Visual StudioでサポートされてるからC#で遊んでるけど、
Rustも同じ様になるなら、乗り換えようかな。
それともC++との代替わりかな。 導入が楽ということでJavaScript+Web APIとPHPを(無限ループ) >>932
早くVSでサポートして欲しいよなぁ
そうなったらC++から乗り換える IT土方の動向を探るにはIT土方も入れたアンケートではないと実態を把握できないからね webやるならjsでフロントバック両方やる方が初心者が覚える事少ないんじゃね?
どうせjsからは逃げられないんだし jsはES2015までクラスもないのにフロントの必須スキルとか言われてたんだろ? 「js」がなにを指しているのかわからん。
「JavaScriput」なのか「JSP」なのか?
JavaBeans なんかは小規模のの Web サイトでは使いやすい。
Java applet でしくじった過去はあるわけだが、
コンセプト自体は悪くないと思う。 そういえば、このスレはなんで5まで伸びているんだろう。
つまりは年寄りの雑談スレだということか。
だったら、次のスレタイは「ぶっちゃけ始めるのにいい言語て何」とかいった
生温かいタイトルを踏襲するよりま、「自分はこういう言語から入った。
おまいらも一度は経験しとけ!」みたいなテイストもありかと思ふ。 何を始めるのにいい言語かという主語がないため
この議論は永遠に終わらないと思う
もし言語が1つに統一されて選択肢がないという状況にならない限り >>940
JavaScriptをjsと略すのはよくあるが
JSPをjsと略すのは見たことがない JavaScripu は変数スコープがいいかげんなので、
初心者向けではないと思う。
C 言語はハードウェアべったりの言語なので、
それなりの仮想機械を間にかませて、
教育用の原語として再定義するのは
悪くないアイディアだと思う
(C の兄貴分である BCPL はそんな感じだった)。
「右の値と左の値」とか、「&でアドレスが取れて、
*で内容が取れる」とか、「sp++だと評価が先で
--spだと評価は後」とか、「void がないので値を
返さない関数はアキュムレータの値がデフォ」とか、
「ハードウェアを学ぶための教育用のアセンブラ」
としては、けっこう面白い言語だと思う。
Turbo C とか Turbo Pascal とか、IDE とセットで
教育用として復活せんかな、とも思う。
仮想環境だと数十年前より千倍は遅いだろうが、
今のマシンだったら数十年前より十億倍は速いので、
ストレスにはならんと思うのだが。 >>942
> 何を始めるのにいい言語かという主語がないため
> この議論は永遠に終わらないと思う
「主語」は「誰が」であって、「何を」は目的語では
ないかと思われる。
ここに書きこんでいるのはたぶん歴戦のプログラマなので、
「誰に、何を」というイメージはあろうが、
「新人に」「学生に」はあるだろうが、いい歳をした
子持ちもいるだろう。
「自分の子供に学ばせたい言語」という観点だとどうだろう。
「LOGO」という人もいるだろうし。 >>944
嘘つき
JavaScriptの変数にブロックスコープが無かったのは昔の話
現在のJavaScriptは様々な点で改善されて非常に優秀な良い言語の1つとなっている 「○○はJavascript級の糞言語」みたいな形容があるくらいだから、本格派の糞言語なんじゃないの。 >>947
> JavaScriptの変数にブロックスコープが無かったのは昔の話
あるから使うわけなので、だったら名前を変えたほうがいい。
FORTRAN(60 だと思う。Fortran 77 だったらまだマシだった)
のコードをツール使って C に変換したコードが goto の嵐で、
それを Java(もちろん GOTO 文はない)に移植したときは
本当に眩暈(めまい)がした。
けっきょく製造プラントの中のワーク(加工材)に流れを
ペトリネットを実装したかったというのがわかって結着した。
OGI島のJ〇Eで経験した実話である。 そういえば、N88 BASIC には「ラベル(名札)」という概念があって、
GOTO の飛び先と GOSUB の飛び先のどっちもラベルで指定できた。
これをごちゃまぜにして「八人の女王」を書いたら、
自称 SE た二人がかりで解析しようとして、
三日経たずにギブアップした。
別の後輩の H くんは、マクロアセンブラ使いだったので、
CALL 〜 RETURN と JUMP が混在しててもどうってことないし、
スタックポインタをどういじくるかが頭に入っているので
「こんなの、局所変数をスタックに積むか積まないかだけの
話じゃないっすか?」と五分で見破った。
このさい、仮想マシンのニモニックから勉強するのもいいんじゃねぇか?と
思う。 ウィキペディアによると、ブレンダン・アイクは、世界一の糞言語を作ってやると友人たちに宣言すると、たった二週間で糞言語を完成させてしまったという。
これはLivescriptと命名され、不幸にもネットスケープ・ナビゲーターに搭載された。
Javascriptの誕生である。 レス数が950を超えています。1000を超えると書き込みができなくなります。