はてなキーワード: C言語とは
数学、というかその前の算数の知識が曖昧なまま生きてきてしまったため、困る場面が多々あるなぁと最近感じるようになりました。
具体的には、ソースコード内で少し難しい計算が入っただけで、何の処理をしているのかわからなくなってしまいます。論理立てて考えることも苦手で、会議報告の際には、ことばがまとまらず、しどろもどろな回答をしてしまいます。
とっさの計算、論理立てができないからこのようになってしまっているのでしょう。
入社試験のSPIでは距離速さ時間を求める問題すら、理解できておらず、メチャクチャな回答をした記憶があります。
そこで、算数レベルから学習を進められる書籍を探し、勉強を始めてみようとかんがえています。
.いちからクドイまでに文章で説明を行ってくれる書籍であること。
巷で売られている学び直し系の本は、見た目
が軟派で気に入りません。カラフルで楽しげな 見た目や内容では目がすべってしまい読みにくいです。
理想的な書籍として、「苦しんで覚えるC言語」や「中谷宇吉郎著 科学の方法」を挙げます。これらは挿絵が最低限で、とっつきにくい一方、内容にごまかしがなく、1つづつ内容を説明する構成になっている本です。
その歴史の中で必要となるような技能が義務教育に組み込まれて専門学校や大学なんかで教育されてる
このあたりはそういう職業に就くために最低限必要な知識として教育されているし
それを土台にして専門知識を付けられるような社会設計が出来上がっている
これらの基本的技能を教育する中で「適性のない者は除外される」ような仕組みになっている
そもそもコンピュータの登場・普及から100年も経ってないわけで歴史がもの凄く浅い
それでも「コンピュータを使う側」の教育はそれなりに歴史があるので進んでいるが
「プログラミングする側」の教育は最近10年といって過言では無い
「内燃機関の自動車開発の教育を受けたのに今は電気自動車の開発が全盛期で、更に来年は原子力になるらしいし、その次の核融合も始まってるらしい」
ぐらいの変化が3年スパンぐらいで起きている
(こういう状況なのでだんだんと「コンピュータを使う側」の教育も微妙になってきている)
また現在一線級で活躍しているようなITエンジニアは特にまともな専門教育を受けたわけではなく
そもそもが天才なのに加えて独学し、天才達と切磋琢磨することで育成されてきている
他の分野のように「適性のない者は除外される」のではなく
「適正があって興味のあるものが偶然に採用される」という構造になっている
これは全く教育や育成なんかではない
これではマズイということで高校教育に情報が導入され、GIGAスクールで小学生にタブレットが配られているわけだが
そこで行われている教育が適切なのかどうかはまだ全然評価されていない
このあたりが米国なんかだとそれなりに教育の歴史が積み重ねられたので
そこから統計的なデータなんかを使って有効な教育法が模索されているが
とはいえそういう取り組みも50年も経ってないのでまだ2周目ぐらいで始まったばかりである
日本はどうかというと、そもそもの社会構造や義務教育の違いを無視して米国スタイルを取り入れているか
もしくは一線級の天才に意見を伺って教育法を立案していて、これは
というぐらい無謀である
「ぐーっときたらバッとやるんですよ」
と言われても分かるのは松井ぐらいなのと同じように
今でこそWindowsでも全く問題なく開発できるけど、ちょっと前は「Macのが開発体験が良い」と言われていた。
具体的には2011~2015年あたり。
2013年のころ、俺はWindowsで開発していた。WSL2なんてものは当たり前に存在しない時代だ。
たとえばC言語を使いたい場合、MinGWとMSYSを使ってこんなかんじで必要なものにチェックマークをしてインストールしていた。
まちがえた。俺が使っていたのはCygwinだ。こんなかんじでインストールする。
「パスを通す」とか言われていた時代だ。今ではインストーラがほとんどやってくれる。
Windowsのコマンドプロンプトがアホほど役に立たないので、msysCygwinのコンソールを使うのだ。
Pythonのインストールにもパスを通していた時代だった。当時はまだ2系が主流で、卒論を書く際、大学の教授から「3系は使ってもいいけど、俺は知らないからサポートできない」と言われた。
Scipyはインストールしなければ使えなかったので、「python scipy インストール」で検索して出てきた記事を参考にしてインストールしていた。これがまたエラーの連続だった。
プログラムを開発するエディタも、vim、emacsがまず候補に上がった。どちらも癖のあるエディタなので、そういうのが嫌な人はサクラエディタが推奨されていた。そして少しして登場するAtomに感動したのだ。今ではあたりまえのようにVSCodeがある。
ちなみに俺はPythonの開発ではIDLEというのを使っていた。知ってる?こんなの。
そんなWindowsユーザーを少し煽るような(Winユーザが自虐するような)、「プログラミングするならMac」という風潮があったと記憶している。そこから「どうやらMacはUnix系で、コンソール操作が簡単らしい」「文字がきれい」「Windowsでは定期実行するためのcronすらないが、Macにはある」「xcodeというのがあるからめちゃくちゃプログラミングがラクらしい」みたいなイメージがあった。
今ではWindowsも随分便利になったし、IDEやインストーラがなんでもしてくれるようになった。今では結論、「どっちでも好きなほうを使えばいい」という良い環境になった。
alignmentとは 意味・読み方・使い方
https://ejje.weblio.jp/content/alignment
サイズが64ビットになることはさすがに認識していたような雰囲気でしたので、やはりアラインメントの考慮もれのように思います。— 徳丸 浩 (@ockeghem) December 2, 2023
全銀ネットの障害原因、開発言語はやはりC言語だったそうです(インプレスの質問ナイス)。64ビット化によって(整数の?)サイズが増えるが、計算上メモリ割り当て量を増やさなくても足りると見て再コンパイルのみしたが、そのサイズ計算が間違っていたhttps://t.co/jHk6ecZKli— 徳丸 浩 (@ockeghem) December 2, 2023
プログラマー全員に型を理解させるのって無理なんじゃ無いかと思い始めてる
C言語もJavaも理解できないけれどPythonなら書けます、っていう人はかなりいるんだけど
彼らは「型」について理解はしてるけれど使いこなすことは全くできない
よくよく聞いてみると、プログラミング=手順 だと思っているので
手順を作ることはできるけれど、対象のデータ構造を整理することはできないしやらない
与えられたデータを使って目的に向かって手順を作る、みたいなことはできるし、それこそがプログラミングだと思っている
なのでデータ構造を整理すればすぐに終わるようなことでも手順でどうにかしようとする
なイメージ
n=1の話をするが組み込みにもちゃんと若い人いるよ。新卒一括採用だからWebみたいに派手じゃないけど。
あと組み込みにも色々あるよ
① CPUにC言語で書く。状態制御とかDI/DOする。割り込みつかってある期間内で処理を終わらせるようにする
② CPUにアセンブラで処理書く。古い製品のCPUはそれでしか書けないとかある。
③ FPGAにVerilog/VHDLで処理書く。①で間に合わない速度が必要なとき。あとA/D変換とか
④ PLCにラダー言語で処理書く。リレーwwwなんだが、何十年も出してる装置とかPLCが中心になっていて今更変えられないので今も需要がある。発注元も昔のやつ参考にするのでPLCで制御することみたいな要求事項がそのまま残ってる。
⑤ 組み込みLinuxに対してC++で処理書く。リアルタイムじゃない。CPU1はこれで、CPU2が①とかある。1と2のデータの受け渡しにFPGA使ったりする
⑥ タッチディスプレイのUIとか。タッチディスプレイの機械売ってるメーカが出してるクソ使いにくいソフトで作る。これで作ると牛丼屋の券売機見たいのができる。
私は3年立たずに逃げたのでもっと他にもあると思う