はてなキーワード: 論理演算とは
ここ最近、ChatGPTのプロンプトをひたすら書きまくってるのだが分かってきたことがある
恐らく近い将来ChatGPTによって大半のプログラマーは職を失うことになるだろうし
残されたプログラマーもソースコードを書くのでは無くてプロンプトを書くことの方が増えるだろう
アセンブリ言語を書いてる人はほぼ死滅しているしCやC++ですら書いてる人は少ない
同様にプロンプトを書く人(プロンプター)が重宝されるようになるのだろう(もちろん例外的分野は存在する)
ただ、残念ながらプログラマーや非プログラマーがプロンプターになれるかというとそうではない
プロンプトを書く時に必要なのは、純粋にプログラマーが必要とされている能力の部分だからだ
その言語を知ってるだとかライブラリを知っているといった知識的な能力ではなくて
要件定義の能力や論理演算や集合論みたいな知識だったりオブジェクト指向や関数的な考え方だけが純粋に必要になる
例えば割とダメダメプログラマーは条件が100個あった時に普通にIF文を100個書く
こういうプログラマーはプロンプトを作ることができないし、仮に書いたとしてもまともに動かない
ちゃんとしたプログラマーは条件100個を整理してまず2つの場合に分けてそれぞれで3つに分け・・・みたいなことをする
場合によっては要件定義を鑑みて必要無い条件を削除する(もちろん確認の上で)
そういった整理整頓が出来る人じゃないとプロンプトを書くことは不可能なので
例えばPythonの書き方を知っているだけのプログラマーとかコピペで生きてきたプログラマーは死滅すると思う
彼らはプロンプトを書けないし、書くために学習しようとしてもベースとなっているものが無いのでそこから覚え直すしかない
なのでプログラマーの上位層はプロンプターとして生き残るが下位層は死滅するし、残念ながらプロンプター教室というのもちょっと想像が付かないしたぶん不可能だと思う
ベン図とか論理演算とか、16進数もいらないな、10進数でいいだろ
intとかcharの最小値、最大値とか、桁溢れたり、桁落ちしたり、金融計算でも問題ないよな
俺は学部1年だか2年で、きたねー国立大学の校舎で午前1番目の授業で、数値計算すげー退屈だったけど、
なんだかんだ役に立ってる気がする
どっちかってーと、機械とか建築とか、そっちの学部だったんだけどな
流体力学だの材料力学だのせん断力だのテンソルだの、まあ、でも金には関係ないけど役立ってる気がする
よーわからんけど、ちょっと深いところを知っておくと勘が働くようになる気がする
知識が浅すぎると勘が働かない
余裕がないから
知ってることだけで精一杯泳ごうとするみたいな感じ
泳ぎの経験や知識が浅いとバテる、下手すると溺れる確率が増える
だから、馬鹿馬鹿しいと思いつつも、詰め込みの勉強は重要だと思う
何の役に立つの?とか、そういう疑問を軍曹に投げたらぶっ飛ばされる
プログラミングの基本的手法の1つに、論理演算というものがある。
これは真偽値(真=true、偽=false)同士の組み合わせを評価し、結果をtrue/falseで返すというものだ。
この演算のための演算子の代表的なものがANDとORで、それぞれ論理積と論理和という。
式aとbにtrue/falseのいずれかが定義されているとして、
a AND bだったらaとb両方がtrueのときのみ、演算結果がtrueになり、
a OR bだったらaとbいずれかがtrueであれば、演算結果がtrueになる。
ということは、
ANDの場合は左辺の式がfalseの時点で、右辺を評価するまでもなく演算結果はfalseとなり、
ORの場合は左辺の式がtrueの時点で、右辺を評価するまでもなく演算結果はtrueとなる。
これを短絡評価といい、今どきのプログラミング言語では必ずこの仕掛けが実装されていると。
これは排他的論理和といい、演算子の右辺と左辺の結果が違う組み合わせの場合のみtrueとなる。
つまりa=trueかつb=falseの場合か、a=falseかつb=trueの場合のみ、演算結果(a XOR b)がtrueとなる。
問題は、どういうわけかこのXORには短絡評価が存在しないのだ。
どのプログラミング言語を調べても短絡評価がないので、かなり驚いている。
一体どういうこと?
(追記)
GNOME(Window Manager)を知ればXについて知る、Xについて知れば今度はDisplay Managerについて知る、
みたいにどんどん降りていって、最後にCPUの中のANDだの論理演算の部品まで分解できて納得できればいいのだろうけど、
それやったらそれだけで人生を終わりそうなので、どっかで打ち切るしかない。
機械の中の幽霊、Ghost in the Machineという本があって、これは攻殻機動隊のGhost in the Shellの元ネタの一つでもあるのだけど、
コンピュータを知らない遅れた文明の人達はコンピュータを理解できないのではないか、という話なんだけど、
機械の文明までしか知らない人にコンピュータを渡しても、分解しても分解してもなぜ動作するのか理解できない、
何が言いたいかというと、コンピュータを分解してネジや歯車が出てきたとしても、ソフトウェアは出てこない。
この話は自分にはツッコミ所があるように思えるのだけど、言いたいことは分からんでもない
元増田もそういう人だと考えると分かりやすいというか、コンピュータが苦手な人の理由の一つはそういうことではないだろうか
つまり、そういう理由でコンピュータが苦手な人は、ネジや歯車で動作するものは理解できるのだ
しかし、箱の中でよく分からんもの、ソフトウェアが動いてよしなにやってくれるというのは、たしかに幽霊みたいなものだろう
もちろん、そんなはずはなく、ソフトウェアは物理のディスクに刻まれていたり、メモリに記憶されているものだし、
その仕組みは当たり前だが物理学として矛盾するわけでもない、未知のテクノロジーでもない、
しかし、分解して分かるわけでもない、触れない、文字の集まりを見ても分からない、ソフトウェアって幽霊みたい、
そう思う人がいてもおかしくない気がする
まず、プログラミングとは以下の2つの要素から成り立っていることが理解されていない。
ただ、これは勉強すれば得られる。得られないなら諦めるしか無い。
そして最悪得られなくてもプログラミングはできる。
プログラミングの大半はこっちだということが理解されていない。
数学的要素が生かされるのはプログラムの1割程度だが、残り9割は整理学的要素だ。
みたいなことをしっかり考えて実行できるかどうかという能力が求められる。
加えて
というようなことまで考えが及ぶかどうか、といったことが最終的にはプログラミングで求められる
プログラミングの文法やfor文、if文なんて教えてもしょうがない。
物事の繰り返し構造や条件分岐のタイミングを教えなければツールはあっても使うことはできない。
プログラミングスクールで教えることはものづくりの楽しさだったりするのだが
そういったモノは動機や動機付けにはなっても実際の能力を向上させることはない。
https://anond.hatelabo.jp/20170911110731
昨年、はてブでバズりまくったエントリにまんまと乗せられた実務経験なしのプログラミング初心者が
N予備校プログラミングコースのプログラミング入門 Webアプリコース(有料のプログラミングコースで一番最初にやるコース)を修了したので知見をまとめておきます。
そんな感じです。以下、理由。
入門コースの実践編となる3章からは各講義の最後に課題が出されて、
N予備校のGitHubリポジトリにプルリクエストを出すことで課題の提出に変えて、
学習を進めていくのですが、
https://github.com/progedu/intro-curriculum-3001
https://github.com/progedu/intro-curriculum-4023
ちゃんと内容を理解できている人の割合はさらに低いと思われます。
なぜそんなに脱落していくかというと、まあ難易度だったり色々あるとは思うのですが
~をするにはこういうプログラムを書けばいい!ということは教えてくれるのですが、
なぜ、こういうプログラムを書けば~ができるのかということについての説明が少ないです。
感覚としては、途中の式と解答だけが書いてある数学の参考書を読み進めているような感じで、学習者には途中の式の意味を自力で読み解く能力が求められます。
その過程でドキュメントをあたったり、自ら調べて解決する能力が必要です。
またアロー関数式だったり、三項演算子や論理演算子を用いた代入などの省略記法を多用する割にソースコード中にほとんどコメントを書かないことも初学者には難しいかなと感じました。
体系的な学習にも不向きです。
あとオブジェクト指向の説明をせずに、JavaScriptのオブジェクトを扱っていたり、
データベースの学習をする前に、MVCパターンを扱っていたり、ちぐはぐさを感じるところも多かったです。
ということで(他にもいろいろあるのですが)、未経験者が独学で進めていくのは厳しいんじゃないかな~というのが入門コースを終えての結論です。
たとえば保護者の方が専門のエンジニアで分からないことがすぐに聞けるような環境にあればよい教材になるかもしれません。
ただ中級者へのステップアップを目指している初心者がきっかけをつかむには良い教材になりえるとも感じました。
私自身、GitHub、Linux(Ubuntu)、Node.js、Expressフレームワークなど、自主的にはなかなか食指が動かなかった分野の知識を得ることができたと思います。
難易度は高いですが、中級者向けのまとまった教材というのはネット上にもあまりないと思いますので、ある程度経験のあるプログラマが知識を深めるために利用するのはありだと思います。
ただ社会人が学習を進めるにはまとまった時間の確保というのがネックになるとは思います。
N予備校の入門コースの想定学習時間は180時間だったと思いますが、私はこのコースを修了するのに400時間前後かかったと思います。
(今年の1月初頭からほぼ毎日午後を勉強時間に充てて、ようやく昨日入門コースを修了しました)
コースを終わらせることだけを目標にするならもっと短くできるとは思いますが、ある程度知識をつけて今後にいかすことを目標にするとなると、想定学習時間内でコースを終わらせるのは難しい気がします。
色々書きましたが、それでも月1,000円というのは破格の価格設定だと思いますので、気になっている方は挑戦してみてもよいのではないでしょうか。
などがおすすめです。 「「分かりそう」で~」のサイトには本当にお世話になりました。m(_ _)m
ただ特にプログラミング経験の浅い方に伝えたいのですが、N予備校の入門コースが理解できなかった、挫折したからといって、プログラミングができないということはまったくないです。
私自身、SEやプログラマとしての実務経験はありませんが、趣味でも仕事でもガンガンプログラムを活用しています。
ぜひ挫けずにプログラミングの学習を続けていただきたいなと思っています。
あとネット上にはN予備校のプログラミングコースのレビューも散見されますが、無料コースしかやってないんじゃないかなーというものが多いのでお気をつけください。
基本的に無料コースと有料コースは別物と考えたほうがよいと思います。
参考になれば幸いです。
ところで、N予備校のニコニコ動画再現コースが2017年度中公開予定になってるんですけど、本当に公開されるんですよね・・・?(※)