SHIMS

288 件のポスト
プロフィール画像を開きます
フォロー
SHIMS
@shims_ag
プログラミングを教えています。
2023年12月からTwitterを利用しています

SHIMSさんのポスト

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

Xを使ってみよう

今すぐ登録して、タイムラインをカスタマイズしましょう。
Appleのアカウントで登録
アカウントを作成
アカウントを登録することにより、利用規約プライバシーポリシーCookieの使用を含む)に同意したとみなされます。
トレンドはありません。