「オブジェクト指向」を含む日記 RSS

はてなキーワード: オブジェクト指向とは

2021-04-21

anond:20210421172633

ちょっと理解が違うな

オブジェクト指向はモノ化することだからKKO風俗に行って女性をモノ化したり、女性上昇婚して男性をモノ化することだよ

2021-03-04

anond:20210304211920

私ならオブジェクト指向自分自由データ型を定義して処理を書いていこうという流儀のようなものだと教えるかも。

オブジェクト指向がどうして便利なのかを分からないと意味がないので、ドメイン駆動でいうところのまずはValueObjectの概念を教えていく感じで。

①数値とか文字列みたいな理解やすデータ型について紹介

②それらをもっと便利に扱える配列を紹介(C#ならリストとか)

組み込みの型でも出来ることは多いけど、もっと自分目的にあったデータ型を作りたくない?→それをクラスとして作りましょう!

って言う流れかな…

2021-02-14

からオブジェクト指向オブジェクト指向プログラミングは全くの別物だろって言ってるだろうが

言ってないけど。

Cから派生したCやJavaなどでやってるのはオブジェクト指向プログラミング

メッセージングメソッド呼び出しで近似して、

クラスというものを作って、「カプセル化」、「継承」、「ポリモーフィズム」を三本の矢にして

いかデザパタマウント取るかを競い合う競技のことだ。

これを提唱しているのはオブジェクト指向プログラミング日本語解説しているWikipediaなので間違いない。

現在日本人に対してオブジェクト指向とは何かと問えばこれのことなので、これさえ押さえておけば会話に問題はない。

なまじっか真のオブジェクト指向精通していると、英語版wikipediaオブジェクト指向を学び、smalltalkなんかかじった日には、現代日本におけるオブジェクト指向いかに偽物かわかるだろうが、奇異にみられるのはあなた自身であることを付け加えておく。

2021-01-13

初心者プログラマをなかなか脱却できない

念願叶ってプログラマとして生計を立てるようになって、はや8ヶ月。

アラフォーでの思い切ったキャリアチェンジを後悔したことはないし、毎日楽しいことの連続だけれど、俺はいプログラマとしての伸び悩みを猛烈に実感している。

具体的には、オブジェクト指向とかデザインパターンとか単体・結合テストとか適切なエラーハンドリングとかアルゴリズムとか、納品物としてプログラム一定品質担保するスキルが圧倒的に不足している気がする。

一応日々勉強はしているものの、納期に追われているとどうしても手癖でコードを書くようになってしまうし、社内にコードレビュー文化がまだ根付いていないので添削してもらう機会もなく、なかなかスキルが身に付いていかない。

プログラマのみんなはどこでそういった知識を得て、どうコードに活かすのだろう?

とにかく毎日書きまくって手癖を克服あるいはブラッシュアップして、あとはコードレビューしてもらえるように社内環境を整えるしかないんだろうか。

2021-01-08

プログラミングスクールに通うくらいなら本を読むな

プログラミングの独学なんてネット情報で十分じゃない?

本いる?

まずさあ、〇〇を作りたい!って情熱最初にあればあとはどうとでもなるよね。

俺は最初は体系的な知識なんていちいち勉強しないで

ゲームが作りたかたからYaneScriptでゲーム作って喜んで満足してたよ。

んでYaneScriptはC言語に近かったからそのままスムーズにCも覚えて、

そのあとJava覚えてC++覚えていって、オブジェクト指向とかデザインパターンとか覚えていったよ。

本に頼らないとダメだなんてプログラミング向いてないんじゃない?w




というのは半分冗談で、ある程度覚えてから普通に本で勉強したけどね。

でも最初はなんの言語でもいいからとにかくモノを作って動かして楽しー!ってやればいいんじゃないですかね。

そういうのがない人も別にやめろとは思ってなくて、必要ならスクールに通えばいいんじゃねーの。

元ネタで挙げられている本は独学では読まなくていいけど、スクール卒業とかちょっと実務経験した後には読めよとは思う。

プログラミングスクールに通わずに読みたい本

CODE COMPLETE

リーダブルコードでもいいけどこっちも読んでくれ。

アジャイルソフトウェア開発の奥義

分厚いが読みにくくはない。オブジェクト指向パターン実践に学ぶ本。読めたら読め。

デバッグ理論実践

科学デバッグ手法」が読めればいいかな。

Clean Coder

"Clean Code"ではなくClean Code"r"。(どっちも同じ著者。)

プロプログラマが持つべプロ意識の本。

あなたプロプログラマであるなら、上司顧客に対してウソごまかしを行ってはいけない。

ウソをついて、その尻拭いを上司に任せるのならば、あなたプロ意識を持ったプログラマではない。読め。

ソフトウェア見積もり

もしもあなたが「アレクサンダー大王の生まれた年」や「五大湖の総水量」、「2004年時点の米ドル総通流通量」について、

"90%確か"な見積もりをつくることが出来ないのであれば(つまり、「90%の確かさでこの中に正解があると言える下限と上限を示すこと」ができないのであれば)、

あなた見積もりという行為を誤解している可能性がある。読め。

コンピュータシステム理論実装

pythonで何か書く行為プログラミングではない」と感じる人々がいるらしい。

プログラミング言語を直接変更したり自作したり、メモリを弄ったりしない(できない)のならプログラミングではない。それはただのpythonスクリプトキディだ」みたいな。

ぜひnand2tetrisを実践し、pythonコーディングプログラミングであることに気づいて欲しい。楽しみのために読んで欲しい。

リファクタリング

良くないコードとは何かを学んだ方がいい。

なぜ良くないコード再生産されるのかを学んだ方がいい。

世の中良くないコード(を変更する仕事|が生産される状況)の方が多いんだから。読んだ方がいい。

N予備校プログラミングコース

N予備校はいいぞ。スクールだけど。






アレクサンダー大王の生まれた年」…紀元前356年

五大湖の総水量」…6.8*10^23リットル

2004年時点の米ドル総通流通量」…7,199億ドル

2021-01-06

anond:20210106113845

オブジェクト指向デザインデータ構造アルゴリズムデザイン計算量解析等に対する基礎知識

えらい大雑把やし、知らなくてもプログラマーやってるのもいっぱいおるで。

 

本当に学びたければ、3年次編入とかじゃない?

anond:20210104025314

元増田君のような親戚が欲しかった人生だった。

情報系に自信ニキ達にお伺いしたいのは、

オブジェクト指向デザインデータ構造アルゴリズムデザイン計算量解析等に対する基礎知識



こういうのの基礎って例えば応用情報技術者まで取ったら身につくもの

当方エンジニアとして働くためではなく、将来的にシステム人材マネジメントするとき知識としてある程度抑えておきたいと思っているのだけどそういう目的でならおすすめできるスクールはある?

今の「Excelわからんおじさん」みたいに将来「Pythonわからんおじさん」とか呼ばれたくなくて・・・

N予備校プログラミングコースはなんとなくよさそうだなと思っている。

2021-01-04

弟がプログラミングスクールに通おうとしたのを全力で止めた話

正月実家に帰ると、今年28歳になる9歳下の弟が会社をやめてプログラミングスクールに通うと言い出したので全力で止めた。

エンジニアになりたいのならカリキュラムは全部俺が組むし、わからないことがあったらいつでも相談にのるし、なんなら仕事の紹介だってするから

まずは会社をやめるな、そしてスクールには金を払うな、と伝えた。

その後、転職をするのであれば適切な情報を伝えねばと考え、いろいろな会話をしたので、書いてみたいと思う。

まずIT業界リードしているGAFA求人情報を見せた。

例えばこれ。[ https://www.amazon.jobs/jp/jobs/1353081/software-development-engineer-full-time-class-of-2022 ]

プログラミング言語最低一つに"精通していること"というのがあるが、スクールレベルではそこまではいけないし、かなりの高いレベルであることを伝えた。

オブジェクト指向デザインデータ構造アルゴリズムデザイン計算量解析等に対する基礎知識」も基礎とはいえ、ある程度実務経験がないと身につかないものだとも伝えた。

そして、このポジションAmazonの中ではかなりジュニアレベルポジションであり、もっと上が狙えるはずだということも伝えた。

ただ、弟はといえば、これだけできて、かつ時価総額世界一会社入社して、年収は740万円~というのにもやや驚いていたようだ。

スクール営業には短期間で年収1000万円も夢じゃないというようなことを言われていたようで、期待より低かったらしい。

次に、闇を見せた。

まずIT業界実態説明するために「IT土方」、「新3K」といった単語を紹介して、ぐぐらせた。

そういう環境普通に存在していて、かなりの確率で巻き込まれることになることを伝えた。

さらに、google:エンジニア 平均年収 などと検索させて、日本の平均的なIT業界報酬の肌感覚のようなものを伝えた。

私の15年以上のIT業界での経験から学歴や、コネ、その他の特別な才能があったりして、優良企業に運よく入社できたような場合を除き、普通経験の浅いエンジニアの方々はおおむね200~300万円台の年収になるとも伝えた。

きついうえに、低報酬という職場がにかなりの確率エンカウントするだろう事実は、弟には衝撃的だったようだ。

もちろん、弟に関していえば、俺がその地雷を避けるアドバイス提供できるし、いい会社を紹介することもできる。

だけど、コネ入社のようなことはできないので、しっかりと俺が組んだカリキュラムにそって勉強してくれれば不可能ではないと思う、と伝えた。

だけど、弟はIT業界への転職あきらめた。リスクに見合わないと判断し、今の仕事を続ける決心をしたようだ。

彼はすでに500万円近い年収を受け取っており、同年代にしては優秀な方だと思う。大学時代から付き合っている彼女もいて、結婚も考えているらしい。

今回の話をうけて、私はプログラミングスクールが極めて悪質な存在である確信を持った。

彼らは、欲しいと言われるものを売っているだけのつもりなのだろうが、彼らが奪っているのはお金だけではない。

今回もし俺か弟かどちらかが実家に帰らず、正月に会話をする機会がなかったら、彼は多くのものを失っていた可能性がある。

もしこの読者にプログラミングスクールに通おうとされている方がいるのであれば、9分9厘やめておいた方がいい。

成功する確率は高くないし、それを隠してサービスを売るようなやつに金を落す必要はない。

まずは、知り合いのエンジニア相談してみるといい。知り合いにいなければTwitterでもいい。

そして、もし読者の中にプログラミングスクール運営に携わっている人がいて、もし「年収千万夢じゃない」とかぬかしていたんだとしたら、恥を知れ。

お前のせいで壊れたかもしれない人生があるかもしれないことを忘れるな。

2021-01-01

メーカーSIer勤務の年収600万のプログラマー技術スタック

先に言っておくがたいした技術習得していない。

この程度でも600万は稼げるという夢を持つか、こんなのでもちょっと何かが違うだけで600万稼げるか否かが分かれてしま業界に闇を感じるか、600万程度で何ドヤってるの?と思うかはご自由にどうぞ(外資系ってもっと稼げるの?)。

歳は30台前半。学部卒。BtoB向けのパッケージ製品の開発プロジェクトで、設計コーディングテストあたりを担当している。仕様について発注元との折衝もやっている。

業務で使う技術のうち、自分自身がそれなりに習得しているものだけを書く。プライベートしか習得使用していない技術は別。


以上。

PythongitDockerkubernetesもAnsibleもCIツールAWSGCPRuby on Railsも知らなくてもなんとかなってしまっている。業務でこれらのスキル要求されることは(今のところは)ないから。

楽でいいと思う一方、このままだと将来ヤバいとも思っている。いざ転職となったときに詰みそう。

でもいざとなったらググっていくらでも独学できるだろうとたかをくくっているので焦ってはいない。

というか「その他」のところに書いた能力が高ければ世の中大体はなんとかなるんじゃないの。知らんけど。

ちなみに自分は構築できないというだけで、プロジェクトではJenkinsとかgradleとかbabelだかwebpackだかでビルド環境は整えられている。

あとプライベートで、単純な仕様独自言語コンパイラフロントエンドC++LLVMで作っている(これで金が稼げるとは微塵も思っておらず、完全にただの趣味)。

2020-12-04

anond:20201130214610

1についてだけ。

>分かるけれどこれでどうやって動画音楽エンコードをしたり画像処理をしたりするソフトウェアになるのか

エンコードに関してはプログラムエンコード理論に従って作られているだけ。大事なのは研究者の考えた理論

画像処理定型の処理の塊でこれも代替やり方は決まってる。"python 画像処理"とかでググれば多分出てくる

 

>あるいはWordとかExcelとかがどうやってこんなので作られているのかが分からない

まず基本的な、ウィンドウシステムがどのように実現されているかWin32アプリベースでも

よいので理解するべき。ユーザーマウス操作キーボード操作をどのようにプログラム認識し、

処理するかが理解できる。この仕組みは基本的にすべてのアプリ共通と思われ。

 

プログラミング入門書を読んでも、一般的に知られているソフトウェアの作り方みたいな事が書いてない

多くの人が共通的な作り方に挑み敗れているわけで、プログラム10個あれば10通りの作り方がある。

方法は一つではない、目的を達成する手順は無数にあるから

また、クラスレベル抽象化してソフトウェア構造を整理しようとする、オブジェクト指向(最近

クリーンアーキテクチャ昇華させる流れもあり)もあるけれど、オブジェクト指向に向かない

対象領域があったり、なんでもクラス病にかかる等して、銀の弾丸とは言い難い。

また自説だが、順次処理を基本とする、手続き型言語データと処理が入り乱れることになるため、

全てを設定しきることが極めて困難なため、きれいにすべてを設計するのであれば関数型言語を使う必要

あると感じている。

 

>だからそのフレームワークがどういう風になっているのかって説明からして欲しいって思う。

そのフレームワーク内包するベストプラクティスの量を鑑みれば、中身を意識せずに

インターフェイスをしっかり押さえて使うことをお勧めする。

あなた人生はすべてのコードを描けるほど長くない。

 

>つまり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず

プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。

>これがもう滅茶苦茶イライラする。

天才的な人はコードを書きながら、考えられるけれど、常人はまず詳細設計と言われる

フローチャートを書けるようになったほうがよい。

次に"抽象化"を覚える。"抽象化"を使うことで少なくとも、処理は全体をざっくり設計できる

 

>つまり完成しているプログラムを参考にしようと思っているにも関わらずそれがないのでよく分からない。

githubに山のように転がっている。

ただそれを見て理解できるかは別問題モチベーションを保って継続学習可能な形に

消化できる人間の登場が待たれる

   

2020-12-03

[]2020年11月はてブあとで読むトップ30リスト

はてブホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ

268あとで/1884users 管理職のきみと、いつか管理職になるきみと、管理職が苦手なきみへ | サイボウズ

240あとで/1249users スクラムガイド2020日本語版 | ScrumGuides.org

223あとで/1146users Webページ高速化必須知識ブラウザWebページをどのようにレンダリングしているか、図を用いて解説 | コリス

209あとで/1667users YouTubeへの動画アップロード可能無料で多機能動画編集ソフト「DaVinci Resolve」【レビュー】 - 窓の杜

208あとで/1043users Pythonオブジェクト指向プログラミングを完全理解 - Qiita

195あとで/1236users データベースを遅くするための8つの方法 | koduki | Zenn

188あとで/1862users お役所Excel」の改善案が公開 ~あかんヤツ→ええヤツの例がわかりやすく、一般市民にも結構参考になる - やじうまの杜 - 窓の杜

179あとで/1263users 1000万件オーバーレコードデータカジュアルに扱うための心構え - joker1007’s diary

175あとで/2006users Amazon検索URL末尾に、あるコードを入れると怪しいパチモンとか高額商品とかが排除されるのでとても快適「何この魔法呪文」 - Togetter

172あとで/1063users 僕「PDFとは何か知りたい」 - Qiita

169あとで/1172users NTT Com Remote Work Handbook | NTTコミュニケーションズ

165あとで/1534users 手指の鬼(四季賞2020秋 準入選)/鏡ハルカ 手指の鬼(四季賞2020秋 準入選) - モーニングアフタヌーンイブニング合同Webコミックサイト モアイ

157あとで/811users Web 技術調査方法 | blog.jxck.io

152あとで/1359users 部下から議事録ってなんで作成する必要あるんですか?」と聞かれたので議事録必要性について図解してみた - Togetter

145あとで/861users 【AWS初心者向け】AWS学習方法まとめ【15時間で達成できる】 - Qiita

144あとで/876users プログラミング初心者のための JavaScriptNode.js歴史、それを踏まえた勉強方法 | mizchi | Zenn

143あとで/1224users 逮捕無罪判決、そして厚生労働事務次官へ。彼女が続けた地道な歩み|村木厚子履歴書ぼくらの履歴書トップランナー履歴書から仕事人生」を深掘り!| エン転職

142あとで/912users アーケードゲームを支えるデバッグ術 - SEGA TECH Blog

140あとで/728users WSL2、DockerVSCodeで劇的に改善されるWindows開発環境 | Noriyuki TAKEI | Speaker Deck

139あとで/1240users 書いたな、俺の前で、低温調理の話を! | anond.hatelabo.jp

135あとで/1568users ExcelVBAを使わないでドラクエ3再現する | パパセンセイ365

133あとで/735users ゼロから学ぶ Python | rinatz | Github.io

132あとで/1416users [こかげ] フォント : Nu みちしるべ

132あとで/1481users 3年間低温鶏胸肉を食べ続けた | anond.hatelabo.jp

127あとで/959users Webアプリ負荷試験ガイド - withgod's blog

126あとで/1022users 言語が減ることって問題ですか?への私の答え|下地理則(九州大学人文科学研究准教授)|note

126あとで/1523users 大きな枠組みに目を向けさせないようにする - 紙屋研究所

122あとで/565users 大企業最前線コードを書き続けるためにやってきたこと - Speaker Deck | kazuhiro4949

122あとで/1331users COVID-19 感染予測 (日本版) の公開について | Google Cloud Blog

121あとで/798users 実践英語とあるソフトウェアエンジニア方法論 | Kazuki Sakamoto | Zenn

121あとで/910users 「リモートワークの達人」はコロナ禍において日本の全社会人が読むべき本|吉村 総一郎 (sifue)|note

121あとで/1047users 『桃鉄』の最新シリーズを、崖っぷち銚子電鉄社長とやってみたら思いがけない展開になった - ソレドコ

121あとで/1046users インドネシア人日本語で洋楽カバーしたら人生変わった YouTuberレイニッチ空前絶後の大反響に「見つかっちゃった」 (1/2) - ねとらぼ

増田からは低温調理に関するエントリーが2本ランクイン。

先月に引き続きZennに書かれたエントリーが人気を博す。

漫画が1本ランクイン。ジャンプ系の漫画ブクマを集めているのをしばしば目にするが、数多くあとで読むを集めた今回のこれは講談社アフタヌーン

https://anond.hatelabo.jp/20201130214610

「 ①IFでAかBを選択させてどっちかの設定を実行

 ②Whileで決められた回数分繰り返す

 これでやりたいことは分かる。分かるけれどこれでどうやって動画音楽エンコードをしたり

 画像処理をしたりするソフトウェアになるのかというのがよく分からない。」

プログラミングでやることは、その2つだけじゃなくて、もうひとつある。

関数を呼び出すこと

Javascriptなら、console.log("Hello world")。

これは、テキストを出力するという関数を呼び出していて、関数の内部を理解しなくても使える。

オブジェクト指向も、結局はこれと同じこと。あらかじめ用意されている関数メソッドを呼び出せばいい。

もしもゲームを作りたいなら、ゲームエンジンを使うといい。

これは、大きなゲーム作成専用ライブラリで、ゲームを作るための大量のメソッドを持っている。

JSとかPython なら、比較的小さなゲームエンジンライブラリがあるので、いいと思うよ。

プログラミングの根幹

anond:20201130214610

この増田読んでで違和感あってなんだろって思って考えたことを書く。

プログラミングで主にやる事は下記の2つ。

①IFでAかBを選択させてどっちかの設定を実行

②Whileで決められた回数分繰り返す

この認識そもそも間違ってて

プログラミングで本当に主にやることは下の2つ。

データの入出力」

データの加工」

これ。

条件分岐も繰り返しもデータの入出力をソフトウェア上で都合よく行うための補助具にすぎない。

音楽動画エンコーディング画像処理も全部この2つ。

なんならプログラミングに関わらずIT機器がやってるの全部これ。

いや多分当たり前すぎて何言ってんだ?

ってなる人がいると思うが、ITわからん人は多分この前提がピンときてないんじゃないかって思う。

ITのIはインフォメーションつまり情報で、情報データです。

画像音楽動画3Dモデルフォントアニメーションも全部データ現代コンピューターでは数字の羅列になっている。

このデータ元ネタをどこからか取ってきて、加工して、ユーザーに渡すのががプログラミング

取ってくる元はマウスだったりキーボードだったり、CDだったり、インターネット上のデータだったりほんと色々。

加工するとき変数に突っ込んだり計算する工程必要で、そのときにIfとかwhileとか必要になる。もちろん適切に加工するためにはアルゴリズムとか数学必要になるときもある。

人に渡すときはだいたいモニタスピーカー越しになる。

これらの工程を一部肩代わりしてくれるのがOSフレームワークだったりライブラリだったりする。

特に複雑な加工はだいたいライブラリになってるから初心者はifとかwhileやオブジェクト指向プログラミングだって勘違いしがちかも。

2020-12-02

anond:20201202154128

オブジェクト指向は,ゲームに例えると下のように敵クラス(金型)を作ったなら

>||

class 敵(名前, HP, 攻撃力, 防御力){

auto 名前;

auto HP;

auto 攻撃力;

auto 防御力;

auto alive=True;

}

||<

簡単にそのオブジェクトインスタンス)を複数生成できるんやで

||>

敵A = new 敵("A", 100, 10, 1);

敵B = new 敵("B", 80, 8, 5);

敵C = new 敵("C", 120, 2, 10);

||<

そこから各値にかんたんにアクセスできるから

||>

if 敵A.HP <= 0{

敵A.alive = False

}

||<

この処理で死亡処理を作れる.

IT(?)に立ち向かうための心構えとか考え方

anond:20201130214610

いろいろ面白かったので、適当に回答する。

> 1.具体的な事が分からない

プログラミングで主にやる事は下記の2つ。

①IFでAかBを選択させてどっちかの設定を実行

②Whileで決められた回数分繰り返す

これでやりたいことは分かる。分かるけれどこれでどうやって動画音楽エンコードをしたり

画像処理をしたりするソフトウェアになるのかというのがよく分からない。

とてつもなく複雑で冗長な処理によって実行されている。

複雑すぎて人間直感理解することは不可能だ。

わかりやすいので画像処理でいうと、数十万から数百万の画素(RGBAの24bitで表される数値)を小さなブロックに分解し、数学的に周波数の重なりとして計算して変換、含まれる頻出パターンテーブルにして圧縮伸張を行なう。みたいなことが瞬間的に行われている。

まさかそんな事できるわけないだろ」というレベルの処理が実際に行われており、これまた直感的でない。

適当リンクを挙げる。

からそれをどう書くんだよ。という答えはコレ。有名なjpeg実装だ。


フレームワークだとかよく分からないものを持ってきて使ってくださいってなっている。

libjpeg というライブラリを書くことはできるだろうか?画像圧縮理論から考え始めることはできるか?

正直無理だ。自分プログラマだがそんなに数学が得意ではなく、頑張ったとしても下手するとコレを作るのがライフワークになってしまい、他のことができなくなる。

例えばブラウザを0から作るとして、jpegの処理以外にも画像だけでpngとかgifとかwebpとか、その他もろもろとてつもない作業必要になる。

「とてつもなくて想像もできないので流石に無理だろう?」

いや、でも、実際動いてるのよ。ここ何十年、コツコツと積み重ねて実現している。

「積み重ね」とはライブラリであったりフレームワークであったりOSであったりする。

からそのフレームワークがどういう風になっているのかって説明からして欲しいって思う。

「どういう風になっているのか」

多くの場合、內部の実装に関しては詳しく知る必要はない。

外部に向けたインターフェイスがどうなっているのかは理解する必要がある。「使う」ために必要からだ。

この2つは分けて考えなければならない。

これでどうやってゲームを作ったり、検索エンジンを作ったりするんだとなってくる。

ちなみに、たとえばChromeのコアであるChromiumはのコードはコレだ。


まり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず

プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。

これがもう滅茶苦茶イライラする。

「これで判定と繰り返しという基礎ができます」というのが基本的理論定理的なもの)で、その他に必然的だが唯一無二ではないベストプラクティスというものがある(法則的なもの)。

後者をうまく説明する入門書出会っていないんだろうな。という印象。イライラはやめよう。つかれる。

ベストプラクティスはいろいろあるのだが「層の構造にする・レイヤーに分ける」というのは重要アイデアだ。

libjpegというのはjpegの処理を行う「ライブラリ」だ。他のアプリケーション...たとえばブラウザはこのライブラリを「使う」。

ブラウザではjpeg画像圧縮展開というとてつもなく難しい処理を「libjpegの使い方」の理解までで済ませ、過去の蓄積であるlibjpegコードを利用することで真の意味で0から実装しないようにしている。

この場合、libjpegが「低レベル・低レイヤー」の存在であり、中身については「使い方」つまり仕様」の理解までしか行わないことで、実際に作りたいものを作れるようにしているわけだ。

巨人肩に乗る」とよく言われる。

まり完成しているプログラムを参考にしようと思っているにも関わらずそれがないのでよく分からない。

完成しているプログラムは二例ほど挙げたがどうですかね?

複雑なことをする、特にレイヤーコードはとてつもなく難しい。

でも、とりあえずこんな感じのコードなら解るよね?

こういうレベルから理解して、ちょっとずつ難しい処理を学んでいくしかない。

から木材を渡されてこれで家を作れと言われるくらいハードルが高い。

ハードルは高いんですよ。実際。

なので、木材からだと難しいかプレハブのキット的なものを探すとか、ログハウスカタログを読むとか、あるいは100人乗れる物置を買うのがいいかもしれない。そういうところから始める。

それらがフレームワークであったりライブラリであったりする。目的に合うものを探して、自分がやりたいことをどう実現するかとにかく考える。

「テキシコーhttps://www.nhk.or.jp/school/sougou/texico/ で言われる通り、「小さく分けて考える」「手順の組み合わせを考える」「パターンを見つける」「大事ものだけ抜き出して考える」「頭の中で手順をたどる」をひたすら実行する。

ゲーム作りにはそういうアプリを使えば楽だからそれを使えという人もいる。Unity?だっけ。

でもそれはそれ。そうじゃなくてプログラミングでどうやってそれが作られているのかが分からない。

unityコードが公開されているので、本当に読みたいなら。。


なぜそこでオブジェクト指向になるのかが分からない。

オブジェクト指向は内部構造を知らなくても直感的に利用できる素晴らしいものだとは思う。

オブジェクト指向は一旦忘れよう。

オブジェクト指向の「隠蔽」というのは層の構造が持っている重要な要素ではあるけど、「低いレイヤーについて考えない」のが基本的作戦だという理解の方が重要だ。

が、プログラミングでは、その内部構造を作らなきゃいけないのだからそれを知る必要がある。

前述の通り「できる限り作らない」んですよ。「使う」だけ。知るべきことを最小化する。

巨人肩に乗り、車輪の再発明基本的に避ける。

そして本当に作るべきものに関しては、利用する下のレイヤーライブラリなりを探して・仕様理解して、どう組み合わせてfor, if, あるいは計算させれば実現できるのかをひたすら考える。

じゃあ具体的に何を作りたいのかというと、英語フリーソフト言語表示を日本語翻訳するソフト

単に翻訳がしたいのか?表示に割り込む方法を知りたい?日本語翻訳するのは実行時なのか開発時なのか?

要求される表示エリア言語によって異なるために、デザイン調整が必要になる問題をどうするか?

解決したい問題もっと分解したほうがいい。

分解が甘いので何をしたらいいか調べることができないんだと思う。

たまに便利なフリーソフト海外版の時があるんだけれど、日本語化が出来ない事があるので、自分自由

日本語化できるようにできれば凄くストレスが減る。だからやりたいのだけれどそういうのがよく分からない。

ちなみに、アプリ内の文言というのはアプリの外部から変更できないように実装されている事が多いので、利用者が上書きする仕組みはかなり難しい。

AndroidなりiOS仕様にもそのへんに割り込める機能はないはずなので、OSの開発に入っていく必要がある。結構大変だとおもう。

アプリ開発者が、そういう機能を備えた多言語化のためのライブラリを使うようになれば実現可能ではあるので、そっちの方向で頑張るのがおすすめだが、英語圏の開発者には多言語化のモチベーションが低いという基本的問題はあるのよね。

この辺の「できる・できない・むずかしい」の判断は、いろいろな勉強をすると常識としてある程度みえてくる...気がする。

ついでに。ウェブサイトウェブサービス翻訳だとこういうサービスがあったりする。

ブラウザはページの描画処理のなかに割り込む余地が大きく取ってあるので、ブラウザのExtensionとかならできることがいくらかあるかもしれない。

> 2.説明が出来ても説明が出来ない

個人的に気に入らない話はOSアップデートは使いやすくなるからとてもいい事だからすぐにやった方がいいと宣伝されている事。

セキュリティが高まりますというのが宣伝文句だけれど、これで大体老人たちやIT知識に疎い人は躓く。

まあ、半分は嘘だよね。古いものが残っていると先に進めないんだよ...。

現在クライアントOSは、巨大なプラットフォームのパーツの一部として理解したほうが正しくて、古いパーツが残っているとツライんですよ。

そして「サービスを受けるための道具であって、あなたが何でも好きにできる機械ではないです」みたいな世界になりつつあって、ちょっと問題と言われてもいる。

これはかなり困った傾向なんだけど、全体としての流れはあんまり変わりそうにない。

たここでオブジェクト指向が出てくる。

オブジェクト指向好きですな...。ここではオブジェクト指向特に気にしなくていいですよ。

からパソコンはたまに不具合を引き起こすんですという説明が着地点になる。

とてつもなく複雑なことをやっているために、すべてのバグを潰すことはコストが高すぎてできないんですよね。

それよりバグ未来を先取りするコストと考えて、本質的価値のある機能を増やしていくというのが基本的な方向になっている。

からパソコンはたまに不具合を引き起こすんです。しゃーない。

しか中途半端理解している老人などは、そんなことじゃ分からん自分に分かるように説明しろと言い出す。

説明は出来る。しか相手イライラするし理解されない。よって説明をしてはいけないという状況に追い込まれる。

ここでどうすればいいのだと理解不能に陥る。

まあ、説明って得てして難しいよ。しゃーない。

何故なら自分OSアップデート不具合の原因というのが分からいから。

Microsoftが、Appleが、Googleがそうしているんですとしか言えない。

そのとおりです。

プログラムソースコードのどこかにエラーがあるのだろうけれど、どこにあるのかなんて当然知らない。

そもそもソースコードを調べるのは違法なのでやれないし。

オープンソースプロダクトなら原理的には調べられるけどね。Androidとかはオープンになってる。


だけどみんなそんなものを使っているし自分も使っている。正直こんなんでいいのか人類と思う事がある。

それを許容することで先に進んできているという事実は受け入れたほうがいいと思う。

「把握・理解可能範囲」に留めていたら、数十年前のコンピュータ世界から抜け出せなかった。

deep learning世界ではそれがより一層進むかも。この辺は詳しくないけど。

当然仕組みを理解している人はいるし、そんな人にとってみれば当然のことであっても、全ての中身を知っているわけではない。

どれだけ知っていても知らない事があるのがIT理解しがたい。理解が出来ない。

ここでの「理解」についてはそのとおり。これはもう諦めるしかない。

> 3.自分頭が悪い

これが常にある。IT関連は常に新しい情報が出てくるのでそれに送れると無知になってしまう。

なんでこんなことも分からないんだとか言われ放題で、IT系の企業に努めている人は常に新しい知識を入れられる

面倒くさがらない人が向いている。

「面倒くさがり」の方が問題に気づいて「頑張って面倒じゃなくする」ことができるので、プログラマにとっては美徳なんて言われますけどね。

同時にくじけないとか諦めない、しつこいみたいな素養必要かも。

表計算ならいけるんじゃないかと思ったときがあるのだけれど「射影」とかいきなり意味不明な言葉が出てきて、

勉強しろ

それから受験していない。だから持っているのはITパスポートだけ。情けない。

応用まではとろうな。がんばれ。

> 4.最後

USB-TypeCをTypeAに変換してはいけないとか最近まで知らなかった。

このへん自分も知らんですよ。べつに全部知っている必要はない。

面白いからたまに調べたりもするけど。

追記: はてな記法引用すらもさっきまで知らなかったしな!そんなもん)

更にレガシー、すなわち過去遺産なるものについても理解ができない。古い物がずっと使われ続けているIT環境

もう誰もメンテナンスが出来ないものが延々と使われているという事実

層の構造をとっているということと関係があるんですが、仕様が変わると、その上に乗っているものを全部なおさないといけないんですよね。

なので「互換性」というのが非常に重要なのです。

でも革新のために互換性を捨てなければいけないケースも多い。このへんはハードでもソフトでも同じ。

そして、メンテコストが上がっても使い続けたほうがトータルで安上がりという場合は、古いものが残ってしまう。

あるいは「(多少の問題はあっても)動いているものは変えるな」という経験則から意図的に残す場合もある。

西暦2020年にもなって、プログラミング簡単には出来ないし、ハードウェアの規格も完全に統一はされていない。

というかプログラミング言語自体多すぎる。ソフトウェアデファクトスタンダードのモノ程度は知っているが、

いまは原始時代にいると思ってもらって構わないと思いますよ。

ぜんぜん完成していない荒っぽいものを目にしているのだと理解したほうが的確。

それなのに毎日理解のできないパソコンスマートフォンを使っている。

オブジェクト指向のおかげ様だがオブジェクト指向に対して無性に腹が立つ。

自分の全く知らない場所いけしゃあしゃあ演算を行い、そして結果を出す。それも大半が正しい結果で

利便性が抜群だ。些細なミス(バグなど)はあるが圧倒的に利便性が勝っている。

そんな道具に踊らされている自分が滑稽だ。理解できない愚かな自分は正に機械奴隷のようだ。

本当に理解できない。辛い。

勘違いしてはいけないのは、それらはすべて先人の努力の蓄積によって成り立っているということ。

「よくわからないけど存在している道具」ではなくて、信じられないほど複雑だけど、多くの人々の行動によってなんとかかんとか実現した道具なんですよ。

オブジェクト指向のおかげ様」じゃないんです。(もちろんオブジェクト指向というのも大きな発明の一つですが)

そしてブラックボックスとして使うのは多くの場合正しいです。そこは諦めましょう。

でもエンジニアとしての立場からは、その裏に隠れているとてつもない技術思考の蓄積に感動してほしいなと思う。

なので、ちょっとずつがんばって勉強してください。

人類がこんなもん作れたのって、かなりすごいよ?

2020-12-01

anond:20201130214610

1a. 簡単ライブラリとかAPIとかのオープンソースのやつを全部読めばよくね?例えばprintf()の中身とか。

あるいは自分で作ってみればよくね?

例えば、初歩的な動的メモリ管理をするアルゴリズムとか。

 1. 64byteの領域があります

 2. alloc()すると空きがあれば8byte確保してそのアドレスを返します。空きが無ければNULLを返します。

 3. free()すると確保したメモリ解放します。

 これくらいは自分で考えて作れるでしょ?

 そういう事の積み重ねで高度なことをやってる。

1b. オブジェクト指向を知っているならカプセル化も知ってるでしょ?中身を知らなくても外のインタフェースだけ知っていれば使える。てか全ての中身を理解しようとしてたら何もアプリケーションなんて作れないです。

例えば俺ははてな匿名ダイアリーが裏でどのように動いているのかわからないけど、毎日記事を書いてる。これがカプセル化

2a. 一般人説明するには比喩を使うしかないでしょう。あと、その話題領域オブジェクト指向関係なくね?

2b. それと、べつに「知らないことがあるけど使っている」のはITだけじゃないです。たとえば全身麻酔原理とか最近までよくわかっていませんでした。航空力学あんまりわかってないんじゃなかったっけ?なぜ飛行機が飛ぶのか。船も、何故かよくわからないけど速くなる装置があるんですよね。流体力学はよくわからかないです。こんぺいとうがトゲトゲになるメカニズムも解明されていない。べつにブラックボックスはITだけじゃないです。

4. 例えば、長い時間をかけて改善を重ねて2015年の時点で最高の出来のWindows10が発売されたわけです。それを「今更出すな。1995年の時点でWindows10を出せ」とか言われても無理です。強くてニューゲームかよ。

anond:20201130214610

オブジェクト指向なんてまるで関係ないとこでオブジェクト指向が出てくるあたりプログラミングIT業界も向いてないから業種変えた方がいいよ

そもそもエンジニアってのは技能工なんだから勉強する気がない人がなっちゃダメ

2020-11-20

anond:20201120120025

50代のおっさんだけど、自分最初構造化もされてないBASICやFOTRANで、それからアセンブラをやって、これから構造プログラミングだ!ってことでCやPASCALをやって、それからオブジェクト指向C++Javaをやった。

最近はいきなりCとかJavaとかだもんな。

大変だよな。

2020-11-07

優れたプログラマが「オブジェクト指向」という言葉を使わない理由

anond:20201107114556

で、出たwwwww

オブジェクト指向理解してる系プログラマwwwwwwwwwwwww

2020-10-23

プログラミング勉強してたら

相当前からプログラミングやってる人はオブジェクト指向理解出来ない、したがらない人が多いって言ってる人がいたんだけど本当?

ログイン ユーザー登録
ようこそ ゲスト さん