SHIMS@shims_ag·2023年12月31日返信先: @Pythonist19さんおばあちゃんにマジレス失礼します。 配列やオブジェクトを表す変数には、メモリアドレスや、メモリアドレスの識別子である「参照」が代入されます。 配列やオブジェクトの変数が、constを付けて宣言された場合は、メモリアドレスや参照の変更が不可能になります。…さらに表示25241.1万
SHIMS@shims_ag·1月11日リスコフの置換原則は、置換可能になるように継承しましょう、という原則、言い換えると、指針を提供してくれています。 置換可能でないような継承をすると設計が壊れますよ、だから、置換可能にするという原則を守りましょう、という意味です。引用シキムおじ@sikimuOji·1月11日継承ってリスコフの置換原則に反してない(´・ω・`)?※要検討213333
SHIMS@shims_ag·1月9日変数はメモリ上に確保して記憶領域の名前です。 その記憶領域に記憶されているデータ(ビット列)の「種類」を表す情報が「型」です。 数値、文字列などプログラミング言語に予め用意されている「型」がありますが、プログラマーが独自に新しい「型」を定義する方法も言語側に用意されています。…さらに表示110246
SHIMS@shims_ag·1月15日プログラマーは、プログラミングという作業を行うスキルを有しているエンジニアです。 プログラミングには、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミングなど、プログラミングスタイルがあります。…さらに表示引用山本美咲/Remogu(リモグ)アシスタント@misaki_remogu·1月15日「エンジニア」と「プログラマー」 お恥ずかしながら、違いがあまりはっきりとわかっていません。 どなたか教えてくれませんか、、、。18638
SHIMS@shims_ag·1月25日ソフトウェアを起動すると、メモリ上には、たくさんのデータを読み込まれます。各データには、データの種類を表す「型」が割り当てられています。 例えば、ゲームならばCartという大分類の「型」を用意し、その要素としてMarioCart, LuigiCartという「型」を用意します。…さらに表示1591.2万
SHIMS@shims_ag·1月24日メモリ上のデータの種類を表す情報が「型」(type)です。 プログラミング言語側に組み込まれている「型」だけでなく、プログラマーが独自に「型」を定義する方法も用意されています。 struct、class、interface、type, enumなどを使って独自の「型」を定義します。…さらに表示182,395
SHIMS@shims_ag·1月23日2022年から高校の「情報I」は必須になりました。情報Iは、コンピュータサイエンスの基礎部分を含んでいます。この教育を受けた学生が社会に出てきたら、コンピュータサイエンスを知らないエンジニアは、置いてけぼりになる可能性が大です。引用けい©︎:プログラマーアイドル@k1_c_·1月23日「コンピュータサイエンスを学んでいないのであればエンジニアじゃない論」、相応に解像度が低く、情報がないんだよな どんな示唆があるのかというのもよくわからないので、マウンティングしたいだけな言説にしか思えておらず1185,566
SHIMS@shims_ag·1月11日コンピュータの基本構成は長年変わっていません。 入力装置、中央処理装置(CPU)、記憶装置(メモリ)、出力装置で構成されています。 このコンピュータに自動処理させるための命令を設計する行為がプログラミングです。 命令を抽象化すると、以下の2種類に分類できます。…さらに表示5203
SHIMS@shims_ag·1月26日メモリ上のデータを分類する情報が「型」です。「クラス」は「型」を定義するための構文です。 Javaはjava.lang.Objectクラス、C#ではSystem.Objectクラスという大分類(型)が存在します。 全てのメモリ上のオブジェクトはこの大分類(型)に属します。 Java,…さらに表示6355
SHIMS@shims_ag·1月18日struct (C言語, C++, Rust, Go) class (Java, C#, Python, Ruby, JavaScript, TypeScript, PHP) data (Haskell) というコードを見たら、メモリ上にデータを記憶する時に利用する「データ構造」を定義しているのだな、と理解してください。 struct, class,…さらに表示16604
SHIMS@shims_ag·1月20日要件定義プロセス、基本設計プロセス、詳細設計プロセス、実装プロセスという開発プロセスに沿って考えると、確立されている設計論の意義が理解できるかと思います。 下記のソースコードの場合、「要件定義プロセス」の成果物として 「ハローワールドを表示する」…さらに表示引用シキムおじ@sikimuOji·1月19日ここから、設計論を始めましょう(´・ω・`) class Main{ public static void main(String[] args){ System.out.println("HelloWorld"); } }さらに表示16689
SHIMS@shims_ag·1月24日日本特有のSIerというビジネスモデルだと、再開発したほうが人月が稼げるので、プログラムを再利用せずに、再開発時には捨ててしまうことが当たり前になっているのでしょう。…さらに表示362,995
SHIMS@shims_ag·2023年12月28日Google創業者のセルゲイ・ブリンとラリー・ペイジは、素人ではありません。引用いぐぞー 旅するプログラマー@igz0·2023年12月28日ハチャメチャに金を生んでるGoogleのクローラーのプログラムでさえ素人の大学生が書いた「クソコード」を金が儲かるようになってから、プロに書き直して貰った訳で「最初から完璧なコードを書いて儲ける」なんて夢物語だよ。 「金になるコード」は必ず書き直される。 たとえそれが綺麗なコードでも。46706
SHIMS@shims_ag·1月22日電流と電圧の関係を知らない人が、電気回路の設計という作業をすることはあり得ません。 しかし、ソフトウェアの場合は、変数がメモリ領域の名前であることを知らない人が、設計作業をしているケースがあります。26835
SHIMS@shims_ag·1月26日手続き型言語を使っていても、手続き型プログラミングが出来ていない人、 関数型言語を使っていても、関数型プログラミングが出来ていない人、 オブジェクト指向型言語を使っていても、オブジェクト指向プログラミングが出来ていない人 は相当数存在します。15845
SHIMS@shims_ag·1月17日#コーディング としていますが、そもそも「コーディング」と 「プログラミング 」は異なります。引用ふも@fumokmm·1月17日#コーディング >「コンピューターコードを理解するのは独特なことのようです。これは言語と同じではなく、数学や論理とも同じではありません」 これは意外!どうりでプログラミングをいくら勉強しても論理的思考(ロジカルシンキング)なんて身につかないわけだね。 https://gigazine.net/news/20201217-reading-computer-code-brain-region/…さらに表示25320
SHIMS@shims_ag·1月23日変数を「箱」だと比喩を使って説明してしまうと、本当に「箱」だと考えてしまう初心者がいます。 同様に「オブジェクト」を「もの」だと説明すると、比喩ではなく、本当に「もの」だと考えてしまう人もいます。…さらに表示1151,405
SHIMS@shims_ag·1月19日プログラミング言語は自然言語とは全く異なります。 プログラミング言語は、コンピュータに対して特定の命令を行うために設計された言語です。 メモリにデータを記憶する命令、データを操作する命令があります。…さらに表示4272
SHIMS@shims_ag·1月11日抽象クラスやインタフェース宣言は、「必要なケース」にのみ定義します。 したがって、ますばシンプルなクラスを定義することから始めましょう。 「必要なケース」の典型的な例は、既存のコードを壊さずに再利用しながら、 プログラムの振る舞いを変えたいケース あるいは、…さらに表示引用シキムおじ@sikimuOji·1月11日そもそも、インタフェース宣言と関わってない実装を同一クラス内に入れる必要あるんやろうか(´・ω・`)? と思ったけど、抽象クラスにimplementするってことか(´・ω・`)? 継承とインタフェースの謎がどんどん深まっていく(´・ω・`) twitter.com/masuda220/stat…4279
SHIMS@shims_ag·1月24日継承が複雑化をもたらすから、委譲に飛びつく、という安直な設計判断してしまう人は、どっちの方法でも、スパゲッティコードを産み出すと思います。引用シキムおじ@sikimuOji·1月24日返信先: @shims_agさんごめんなさい。ちょっとコメントが雑すぎました。 抽象メソッドの継承というか実装は使いますが、機能を継承するような継承の使い方は極力使うべきでないと考えています。それをするよりか、なるべく合成や委譲のような作りにしたほうが実装が安定すると考えています。141,647
SHIMS@shims_ag·1月9日フレームワークの使い方から覚えてしまった人のなかには、プログラミングの基礎知識が不足している人が少なくありません。 例えば、変数とメモリの関係が曖昧な人がいます。…さらに表示4210
SHIMS@shims_ag·1月2日返信先: @sakamoto_582さんクラスや構造体は、データ構造の定義です。そのデータ構造を実体化したメモリ上のデータに対し、アルゴリズムを適用するコードを設計することがプログラミングです。 フレームワークなどツールの使い方ばかり覚えると、プログラミング能力が身に付かなくなります。4968
SHIMS@shims_ag·1月17日静的コンテンツの配信サーバーやWebAPIサーバの分散化、冗長がは、クラウドプラットフォームの利用により、容易になり、コストも下がりました。 しかしRDBは、データの一貫性、整合性の問題があるので、適切にテーブル設計をしないまま分散化してしまうと、非常に高コストになります。…さらに表示13248
SHIMS@shims_ag·1月4日プログラミングにおける設計作業は以下の2つです。 (1) データをメモリに記憶する命令 変数、配列、構造体、クラスなどを使って、メモリ上にデータを記憶させる命令を設計します。 (2) データを操作する命令…さらに表示3121
SHIMS@shims_ag·1月14日仕事などフォーマルな文書では、中学や高校で教えられている文法は使われています。 中学や高校で教えられているが、実際には使われていない文法なんて存在しません。 https://twitter.com/kis/status/1746189046098125135…このアカウントの所有者はポストを表示できるアカウントを制限しているため、このポストを表示できません。詳細はこちら3316
SHIMS@shims_ag·1月26日手続き型、関数型、オブジェクト指向型は、異なるプログラミング方法ですが、下記の(1)(2)の2つは共通です。 —— (1) データをメモリに記憶する命令をプログラミングする。 変数、配列、構造体、クラスなどを使って、メモリ上にデータを記憶させる命令を設計し、コーディングする。 (2)…さらに表示引用SHIMS@shims_ag·1月26日手続き型言語を使っていても、手続き型プログラミングが出来ていない人、 関数型言語を使っていても、関数型プログラミングが出来ていない人、 オブジェクト指向型言語を使っていても、オブジェクト指向プログラミングが出来ていない人 は相当数存在します。さらに表示3526
SHIMS@shims_ag·1月12日ソースコードから設計書を生成することは一般的な作業です。Java APIのドキュメントが典型例です。 ソースコードから生成したドキュメントには、モジュール、クラス、メソッド、メソッドの引数、メソッドの戻り値が明記されます。…さらに表示引用増田 亨@masuda220·1月12日設計書とソースコードの不一致はよく見かける。別々に書いているので、本質的に一致しない。 設計とソースコードは必ず一致する。ソースコードで固定されたものが設計。つまりソースコードが本来の設計書。 ソースコードに明示されない設計事項もあるが、なんらかの形でソースコードに暗示される。3397
SHIMS@shims_ag·2023年12月31日返信先: @JKTweetManさんメモリアドレス・参照を記憶する「変数」 と、 メモリアドレス・参照が指しているメモリ領域に記憶されている「実体」 は別物です。 「変数」と「実体」の変更の可不可は、プログラマーがそれぞれ個別に「設計」します。 constは、あくまで「変数」を変更不可に制御するキーワードです。…さらに表示13772
SHIMS@shims_ag·1月23日IT版ビッグモーター問題のように見えます。引用shobotch@dll7·1月23日バカがDBをindexを最後まで貼らないの、バカなのかと思ってたけど、パフォーマンス改善って言って一ヶ月調査してインデックス貼ったら10倍速くなりました!みたいな茶番をして追加で金貰っていて賢いなって思った。31,288
SHIMS@shims_ag·1月14日返信先: @xtmlabさん『構造化プログラミング』を新たに翻訳し直して出版したら良いのにと思っています。 関数型プログラミング、オブジェクト指向プログラミングは決して対立的なものでなく、どちらも現代のプログラミングの基礎概念になっていることを伝えるには、最適な本だと思います。2432,044
SHIMS@shims_ag·1月20日返信先: @shims_agさん「ハローワールドを表示する」というシンプルな「機能要件」ではなく、 売上レポートを作成する 原価レポートを作成する という「機能要件」が加わったとします。 基本設計プロセスの作業では、下記のコンポーネントが必要だと導出できます。 sales cost…さらに表示13123
SHIMS@shims_ag·1月15日日本のIT業界の多重下請構造を容認していた経産省が、今度は 「デジタル小作人」 なるバズワードを生み出したんですか・・・引用望月紅葉さんと幸せな家庭を築きたい@momiji_fullmoon·1月15日初出は経産省のこれじゃないか? https://digital.go.jp/assets/contents/node/basic_page/field_ref_resources/9f4e70e2-2335-4181-8293-258c12549d31/78a5c260/20220927_policies_mobility_report_02.pdf…131,274
SHIMS@shims_ag·1月18日ソフトウェアの利用者はメモリという記憶装置にソフトウェアを読み込みます。 アプリケーションの起動はこの読み込み処理を行っています。 メモリに読み込んだソフトウェアに対して、利用者は命令します。 タップやクリックは命令です。文字を入力してエンターキーを押すことも命令です。…さらに表示2212
SHIMS@shims_ag·1月25日プログラミングの初心者は、 プログラミングを以下のようにシンプルに考えましょう。 (1) データをメモリに記憶する命令をプログラミングする。 変数、配列、構造体、クラスなどを使って、メモリ上にデータを記憶させる命令を設計し、コーディングする。 (2)…さらに表示3728
SHIMS@shims_ag·1月18日創造的思考や独自の解決策を伴うプログラミングは、今後もプログラマーが行います。 コーディングはChatGPTやGitHub Copilotと対話しなが、プログラマーが行うことになるでしょう。 従って、コーディングしかできないコーダーは、これから厳しい状況になるでしょう。3267
SHIMS@shims_ag·1月7日「代数的データ型」は、関数型プログラミング言語だけが対応している「型」ではありません。 手続き型言語、オブジェクト指向型言語に備わっている、struct, class, type, enumなどを使って定義することも、「代数的データ型」の定義に相当します。43352
SHIMS@shims_ag·1月15日変数は確保したメモリ領域の名前です。 変数に代入したデータは確保したメモリ領域に記憶されます。 データには、データの種類を表す「型」が必ず割り当てられています。 「型」には、数値型、文字列型などがあります。プリミティブ型と総称されます。…さらに表示13287
SHIMS@shims_ag·1月24日ソフトウェア製品、ソフトウェアサービスを開発しているならば、継続して機能拡張するので、継承を使うことになります。 継承を使わずに済む程度の単純な仕事も、世の中にはあるとは思います。引用シキムおじ@sikimuOji·1月24日継承の云々は、フレームワークとかでは使われるけど、実業務ではあまり使われないっていう話だと思っている(´・ω・`) twitter.com/shims_ag/statu…1234,560
SHIMS@shims_ag·1月25日「型」という概念は数学に由来しています。 メモリ上のデータがどの「型」に属しているのか、という集合論の話でもあります。 分かりやすく言えば、データの種類、分類の話です。 例えば、猫型のデータは、動物型という大分類に属する、という集合の話です。…さらに表示3738
SHIMS@shims_ag·1月9日プログラミング能力が上がらない人の中には、下記の記事のように x = x + 1 というコードを数式だと誤解している人がいます。 xは、数式の変数ではありません。 プログラムの変数のxは、コンピュータのメモリ領域の場所につけた名前です。…さらに表示引用日経クロステック IT@nikkeibpITpro·1月3日「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態 https://xtech.nikkei.com/atcl/nxt/column/18/02629/110200002/?n_cid=nbpnxt_twed_it… 「x=x+1」というコードは、プログラミングを知っていれば変数の実装だと分かるが、初めてプログラミングに触れる学生はこれを方程式だと考え、解けないと悩む。[2023年11月に読まれた記事]13418
SHIMS@shims_ag·1月8日コンピュータのメモリに着目して、単体テストを説明すると以下のようになります。 単体テストは、関数(メソッド)を実行した結果が期待通りかを検証するために行います。 まず関数を実行します。実行すると、その結果として、既存のメモリ領域を変更するか、新しいメモリ領域が確保されます。…さらに表示3209
SHIMS@shims_ag·1月14日1972年に出版された『構造化プログラミング』の第二章は、ホーアによる「型」の説明です。代数的データ型の直積、直和なども独立した項として説明されています。 さらに第三章は、クラス、オブジェクト、インスタンスなどの概念が説明されています。…さらに表示引用takomachan@xtmlab·1月14日返信先: @xtmlabさん, @shims_agさんまた、継承を入れ子集合(nested set)とみなす発想の原点は、以下の古い記事にあります “is-a”階層のための設計指針 Design Guidelines for IS-A Hierarchies 論理学の原理を利用してクラスライブラリを改良する John A. Grosberg, 訳/岩谷宏 Dr.Dobb’s JOURNAL JAPAN, 1997 Octoberさらに表示113999
SHIMS@shims_ag·1月1日返信先: @ping66807615さん, @Pythonist19さん下記のツイートでも説明しました。参考になれば幸いです。引用SHIMS@shims_ag·2023年12月31日返信先: @JKTweetManさんメモリアドレス・参照を記憶する「変数」 と、 メモリアドレス・参照が指しているメモリ領域に記憶されている「実体」 は別物です。 「変数」と「実体」の変更の可不可は、プログラマーがそれぞれ個別に「設計」します。 constは、あくまで「変数」を変更不可に制御するキーワードです。…さらに表示2615
SHIMS@shims_ag·1月23日返信先: @gahirakata301さんエンジニアの中には情報Iの知識が足りない人も多いので、情報I学習済世代が社会人になる数年後には、リスキリングの需要が出てくるかも知れません。2251
SHIMS@shims_ag·1月15日返信先: @shims_agさんプログラミングスタイルに関わらず基本は同じです。 プログラムは、コンピュータに対する命令です。 (1)メモリにデータを記憶する命令。 (2)そのデータを使って計算、変換、出力する命令。 手続き型プログラミングでは、(1)(2)を個別の独立した命令としてプログラミングします。…さらに表示2198
SHIMS@shims_ag·1月20日「売上レポートを出力する」という「機能要件」ならば、 $ java Main sales yearly とインタフェースに入力すると定義します。この定義は「基本設計プロセス」で行います。 このインタフェースを実行した結果として、 2023:10000 と出力されることを正しい、としてテストコードを作成します。…さらに表示引用シキムおじ@sikimuOji·1月20日HelloWorld要件定義(´・ω・`) 「画面に文字列が出力される」 「HelloWorldという文字列を用意する」12587
SHIMS@shims_ag·1月24日·CPUは機械語しか理解できません。一方で人間は機械語でプログラミングすることは困難です。 人間が「1ドル」のつもりで、メモリに「1」と記憶させても、CPUは「ドル」だとは扱ってくれません。…さらに表示引用iXäo(イサオ)@J0801r_G·1月24日返信先: @shims_agさんなぜ「型」がプログラミング言語には必要なのでしょうか。121,058