「引数」を含む日記 RSS

はてなキーワード: 引数とは

2020-01-01

多値返しに関する一部エンジニア見解ヤバない?

https://b.hatena.ne.jp/entry/s/jp.quora.com/hotondo-no-puroguramingu-gengo-de-kansuu-no-return-ga-1-tsu-shika-deki-nai-no-ha-naze-desu-ka を呼んだんだけど、回答・ブコメともにとんでもないことを書いている人がたくさんいてびっくりした。本質的に多値返しは直積型の返しと同じで、これはタプル・構造体と本質的に同じ、というのは多くの人が指摘している通りではあるのだが…。

配列返し

動的型付け言語に慣れてらっしゃる方が多いのかもしれないけれど、配列というのは「同じ型をまとめた型」であるべき。動的型でいろいろ突っ込める配列本質的には「直和型の配列」と思った方がいいよね。多値返しという意味では(記憶領域の面で)余分なコストがかかりうる直和型を選択する意味はないですよね?回答でもなんか配列返しに言及している某有名人がいたが、あれれ?という感じ。

もっとも、immutableな配列をtupleと呼ぶPythonという言語があるせいで引っ張られている感は否めないけども、配列とは本質的に異なる型が存在しているのは明らかですよね?配列構造体って違うよね…?(言葉定義問題と言われそうだけれど、型システムの分野での言葉定義存在しているわけで、反論になっているとは思えない。『俺は明日からこのわんわんなく動物ネコと呼ぶから』と言っているようなもんでは。)

CPUアーキテクチャについて

かにナイーブにはレジスタに入れて返すのが素直だというのは同意するけど、でもそれ構造体と一緒だよね?昔のCではこれはできなかったというのは知らなかったので勉強にはなりました(未検証だけど)。

あと構造体返しの関数がどう機械語実装されているのか知らなさそうな人がいるのにはちょっとびっくり。それでなんでレジスタがどうとか言えちゃうのかしら。構造体の値を返す関数ならばポインタは返さないですよ。そのポインタはどこを指してるんですか。実装しづらいとか何とか言ってる人たち、ちゃんアセンブラ読んだことあるんですか…?本質的に何の困難もないです(ちなみに少なくともlinux amd64ではスタック領域を確保してそのポインタ関数引数の一部として渡します。まあヒープに置く場合でも余計なmoveが出ないようにしたいとかあるかもだけど、そんなでかいデータ普通無名構造体では扱わないでしょう)。

多値は使いづらい

かに、返り値の型が(A, A)のような場合ドキュメント読まないとわからなくなってしまうので可読性が下がるし構造体を使うべしというのは(ほぼすべての場合において)同意(多値は使いづらいというのは構造体は使いづらいという意味ではないですよね?)。でもさ、某有名人goで挙げているけれど多値って普通(A, B)みたいに違う型の値を返したくなることの方が多くないですか。この場合どっちがどっちかは自明だよね?ただの無名構造体だよ。多値返しは設計が甘いとかわけわからんことを言っている人もいたけれど、なんかこちらが不安になってきた。

http://bleis-tift.hatenablog.com/entry/multiple-values

…本当に意味不明で驚いた。id:megumin1氏が言っているように、tupleのパック・アンパックに余分なコストをかける必要はない(まあアドレス渡しになるから複数本のレジスタで返すのと比べたら余分なmovが入りうるという話はあるけど、この人が多値返しというので何を想定しているかからないので何とも。)。何遍呼んでも多値返しとtuple返しの違いが判らなかった。おそらく前述のようにimmutableなlistのことをtupleと思っているのかな?と予想はするが…。

はてな界隈ってエンジニア的な印象があったんだけど、ここら辺の話ってそんななじみないのかな…?てか某有名人氏も型システムとかあんまりご存じないのかな…?むしろこれは増田無知なんだろうか…?

2019-10-03

早期リターンを禁止されるつらさ

転職した会社で早期リターンが禁止されている。

正確に言うと、misraCを踏襲し、関数内ではreturnは末尾に1つだけ、という制約が設けられている。

この他にも関数ポインタ禁止等も色々あるが、早期リターンを禁止されるのは本当に困る。

早期リターンによってどれだけ気持ちよくコーディングできるか分かっていない。

もうこの後の行は読まなくていいんだ、という精神的安堵感。

これをもうこの会社では得られない。

関数ポインタ引数const禁止程の破壊力がある。

地獄のような10重以上のネスト地獄・・・

律儀に守ることによる可読性の低下の方が問題ではなかろうか。

2019-09-13

C#リスト複数項目入れることは出来るのか?

最近C#質問ばっかしててごめん。知恵袋でやれといわれそうだ。

でも、あちらよりこちらの方が親切で丁寧な回答が来ることが多い気がする。

何よりレスが早い。

それはさておき。

C#のListってあるが、これに複数項目入れることは出来るのだろうか。

2次元とかじゃなくて、ClassをまとめてListに入れるみたいな。

IDNameAgeなどなど……キーワードで内容も特定したい。

ClassをListに入れるというのもあるみたいだが、

デメリットがありそうな気がして出来ていない。

MainクラスHumanクラスなどの情報を入れる。情報をもとにJudgmentクラス判別?する。

  人間名前が「華子」だったらAを実行……などその後の処理にも関わるから分割したい。

HumanクラスではID,名前、年齢などの変数定義

Judgmentクラスで、引数?の数字を元に、学生社会人かなどを分ける。

うーん、自分でも何が言いたいんだか分からなくなってきてしまった。

クラスについてはざっくり理解したつもりだったんだけど。

2019-09-06

エラーメッセージの読めない人間がいる」ってよく嘲笑対象にされるけど

例えば以下の文章メッセージで出力されてた時にエラー根本原因が即わかる奴っているのかよ…

[ts]

型 '{ inputs: SymbolicTensor; outputs: (SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor)[]; }' の引数を型 'ContainerArgs' のパラメーターに割り当てることはできません。

プロパティ 'outputs' の型に互換性がありません。

型 '(SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor)' を型 'SymbolicTensor | SymbolicTensor' に割り当てることはできません。

型 '(SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor)' を型 'SymbolicTensor' に割り当てることはできません。

型 'SymbolicTensor | Tensor<Rank> | Tensor<Rank> | SymbolicTensor' を型 'SymbolicTensor' に割り当てることはできません。

型 'Tensor<Rank>' を型 'SymbolicTensor' に割り当てることはできません。

型 'Tensor<Rank>' にプロパティ 'sourceLayer' がありません。

const image: tf.SymbolicTensor

2019-08-28

php 関数を実行する関数

call_user_func

まぁコールバックなんだけどコールバックていうより、第一引数を省略するタイプ関数を実行できない環境で、関数を実行する必要があってしょうがなく使うって感じ。

具体的に言うとsmartyでの引数なしでの関数呼び出し。

2019-07-11

Vdebugの条件付きブレーク

:Breakpoint conditional $a === 'hoge'

第二引数ブレークタイプ 第三引数タイプごとに異なる

ヘルプこち

:help VdebugSetBreakpoints-conditional

2019-06-12

anond:20190612200657

代入する命令と中身を変える命令だと根本から違うわけか、というか引数にとった時点では参照先はそのままなんだ

ありがとう めっちゃ詰まった

anond:20190612195125

上はarrayの示す参照先が変わっただけで、masuda_arrayの内容は変わってない。

masuda_arrayへの参照がarrayに値渡しされてるということ。

Cで言うポインタ引数アドレスが値渡しされるけど、そんな感じね。

下はarrayの指し示す配列(=masuda_array)の中身を変える命令を実行してるから、masuda_arrayの内容は変わってる。

2019-06-04

anond:20190603165611

引数名前を渡すと性別が返ってくる、みたいな感じだとすると

getGenderでええんちゃう

判断:judgeでもいいかしら

2019-05-23

sshポートフォワーディング機能を齢30にて初めて覚えたでござる。システムエンジニアを名乗っていたが今まで無縁の人生でござった。(組み込み系メインだし!そっちは頑張ってるし!)

関係ないけど小川一水先生GitHubを覚えたときのような不思議な感動が胸を覆っている。

sshでつなぐと基本GUI開けないよね?のお手軽回答として、引数一つでいけるよと覚えておこう。

vs codeリモート機能も今更チャレンジしたくなったでござる。

繰り返しになるがRDPで十分だった人間が初めて成長した気がする。

2019-05-20

ユニットテストって引数省略時の戻り値テストも書くの?

GitHubで公開する程度の、多くて10人くらいが関わるプログラムと想定

おしえて増田

2019-04-05

anond:20190404140637

全体的に「解説」というよりは「注意事項」を重視してるっぽいですね。

「この注意事項をみんなに伝えなければならない」という使命感を感じます

解説を重視するのなら説明する順番も考えるべきでしょう。

いきなり「関数」と言っても伝わらない可能性は十分あります

関数?なにそれ?数学嫌いなんだけど?」といった感じで。

関数さえ分からないような人間プログラミングには向いてない」

と切り捨ててもいいですが、先にGOSUBを説明しておけばより分かりやすいハズです。

まず一番最初は「GOTO」を説明しましょう。

GOTO指定した行(ラベル)にジャンプするだけのとてもシンプルな仕組みです。

GOTOが分からない人はさすがにほとんどいないでしょう。

次に「GOSUB」を説明します。

GOSUBはラベルジャンプして処理が終わったら元の場所に戻ってきます

GOSUBもほとんどの人が理解できるはずです。

GOSUB(サブルーチン)まで説明すれば「プログラムブロック毎に分ける」感覚が分かります

GOSUBまで説明した後に関数説明すれば

関数はGOSUBみたいなものか」

「でもGOSUBとはここが違うんだな(引数戻り値など)」

「だから関数には()がついているのか」

という風に理解できるはずです。

呪文」を使わず解説するなら現代でも最初BASIC無難かと思います

2019-03-05

なぜ「Hello world」は誰が書いても高品質になるのか

品質ソフトウェアは変更が容易である

例としてこちらをご覧いただきたい。

/* Hello world */
#include <stdio.h>

int main(void) {
    printf("Hello, world!");
    return 0;
}

このコードは高品質である

理由は以下の通り。

  1. 設計シンプル
    何の分岐も判定もない。容易にC2カバレッジ100%にできるシンプルさ。
  2. 高凝集度、かつ低結合度
    変数を使っていないし、そもそも単一ブロック構成されているので結合のしようがない。
  3. 環境依存せず、移植性が高い
    標準ライブラリのみで構成されている。
  4. 適切に構造化されている
    そもそも構造と呼べる要素がない。
  5. 実行時エラーの恐れがない
    唯一、コンパイル時に検出できないのはprintf引数だが、例えここが"hellow world"になっていたとしてもプログラム問題なく実行できる。

2019-02-03

anond:20190203101728

試しに一回だけ押してみて、飛んだページの URL を見ましょう。引数としてどこに数が入っているか確認して、そのパラメータを変えてみればいいだけでしょ。ちなみに10000とか20000位は平気で遡れます

2019-01-21

anond:20190121093019

ほんま増田はんは賢いわあ。増田はん人の間違いを指摘できるんやもの

循環的複雑度ゆう言葉意味理解してらっしゃるからこそ指摘も出来るんですわなあ。

増田はんはプログラム構造が複雑度に影響しないともおっしゃる

きっと何の返り値も返さない、何の引数も持たないprivateメソッドコードの中でネスとして呼ばれてたとしても全く問題なくコード読めはるんでしょうなあ。

2018-12-24

anond:20181224082403

MacTypeはただのフォントレンダラーであってGithubで公開もされてる。beta5使っとけ。

フォント自体は含まれてないか違法合法もなにもない。

Mac所有してるなら抜き出して使っても問題ないと思うが、MacぽいフォントにしたいならIPA Pゴシック(日本語部分は等幅がいいならExゴシック)にシステムフォント置き換えるだけでいいんじゃないかな。noMeiryoUIあたり使って。

Windows仕様上ストアアプリフォントは変わらんが。

あとChromeUI部分に適用させるならChromeショートカット引数に--disable-directwrite-for-uiを加える。

あとChromeの設定内のフォント設定でもIPAフォント指定しておくといいな。

アプリタイトルバーに効かないなら使ってるプロファイルのiniファイルの、[UnloadDll]にあるdwm.exeをコメントアウトして再起動

そんだけでWindowsでもフォントの汚さは感じなくなる。

あ、ストアアプリGoogle日本語入力使ってるとIMEオンできなくなるみたいな副作用はあるけど。直し方は知らん。

2018-12-06

anond:20181206180248

そういう関数がある、ということだけ覚えておく

関数名や引数は毎回ググる

2018-10-16

anond:20181016143024

いやそれはちょっと違う。

日本語Windowsで見た時は游ゴシックが表示に使われるが、Windowsがほっそい游ゴシックキレイに表示できるレンダリング性能を持ってないせい。

4Kモニタとかなら気にならんだろうが、FHDとかのモニタ使ってるならMacTypeを入れると大分マシになる。

 

というか多少検索能力に自信のあるWindows使いならみんなMacType使え。

blogとかのスクショでギッザギザメイリオとか見ると無様すぎて泣けてくるようになる。

MacTypeと、githubにあるbeta2パッチを導入し、

noMeiryoUIシステムフォントを全部IPA Pゴシック(10pt以上)に変更し、

UEFIでセキュアブート無効にした上でMacTypeレジストリモード運用するといい。

Chromeショートカットには引数で--disable-directwrite-for-uiを入れ、

Chromeの設定でフォントカスタマイズからデフォルトフォントIPA PゴないしP明に変え、

Stylusスタイルシート弄ってメイリオやMSPゴなどをIPA系に置き換えてしまえ。ここで游ゴも置き換えてもいい。細すぎるし。

タスクバースタートパネル、UWPアプリなどにはMacTypeフォント置換は効かないが、これでだいたいフォント描画への不満はなくなる。

ただあらゆるトラブル元凶になる可能性があるアプリなんで何か起きた時は真っ先にオフにすること。メジャーアプデ時も事前にオフにすること。

2018-09-17

anond:20180917230706

資格自分について回るものなのだから会社つべこべ言われたところで自分の考えを貫いたら?

一応、ひと昔前のオラクルマスターなんかは、DBといえばオラクル、と客も洗脳されてて、人売りIT企業では社員に是非取らせたい資格だったな。10年も前にゴールドデノミ前はプラチナ)を取ったけど、SQLコマンドライン引数がどうとか、今ならネットですぐ見つかるような、今となっては無意味な設問多数。

2018-09-14

「開発現場で役立たせるための設計原則パターン」への反論

開発現場で役立たせるための設計原則パターン

https://nekogata.hatenablog.com/entry/2018/09/10/163206

この記事はてブで大絶賛されてるが、個人的にはセンス無いなーと感じたので言語化してみる。

Notificationクラスが不親切。

Notificationクラスそもそも単一責任原則に反してない

開放閉鎖原則勘違いしてる

Notificationクラスと何のクラスが密結合なのか説明されてない

  • 『それ以前の問題というか「本来バラバラに書かれるべきものが、すべてここに書かれてて密結合しちゃってる」とみることができるかと思います。』?
  • 密結合というのであれば、コメント通知を変更した時にNotificationクラスとCommentクラスの両方に変更が生じてしまうことを示すべき

オブザーバーパターンが出てくる意味が分からない

今回の仕様を図で書くと

コメント→→→コメント通知

スター→→→スター通知

あしあと→→→あしあと通知

みたいな感じになるとする。

すると、今回スライド問題視しているのは矢印の右側の通知の部分が1クラス共通化されている点。

しかし、オブザーバーパターンの出番は図の矢印の部分が絡まり合って処理が複雑になってしまった場合

今回は1つのイベントから複数リアクションが発生することは想定しないので

オブザーバー不要なのは当然。選択肢に出てくるほうがおかしい。

そもそも問題認識(通知部分が問題)と解決策(矢印部分を解決)がズレてるから話がおかしな方向にいってる。

Notificationクラスサブクラスを作ろう、ならまだ分かる。

人間の可読性が考慮されてない

まとめ。

かに設計言語化するのは大事だが、言語化というのは「それっぽいことは幾らでも言える」危険性がある。そもそもプログラミングというのは芸術であり文学なんだからセンス無いのに言語化を頑張っても「一見それっぽく聞こえるけど間違ってる説明しか出てこない。

2018-08-04

コミュニケーション能力()とは

具体的になんだろと思ってきたが、どうも下記のことを指しているのではないかと気づいた。

  • どんな形式のinputでも入力可能。それに対して不満を言わない。たとえinputがなかったとしても。
  • どんな形式のoutputでも出力可能。それに対して不満を言わない。たとえoutputの形式指定がなかったとしても。
  • それに必要ものはすべて自主的に入手すべし。

Object型の可変長の引数を受け取り、相手が求めている型(それがどんなものかは不明)で返却する関数を作ってください、それに必要リソース自分で確保してなと言われてるようなものでこれは不可能なのでは?と思ってる。

Nullpoは甘え。

2018-07-30

anond:20180730125012

『AオブジェクトのBメソッドを〜』

って書いておきながら、引数で持ってくるのかnewするのかは書かないって、片手落ちじゃん

ロジック実装に任せるっていうなら、設計DBまでかもしくは、外部インタフェース仕様ぐらいまでにして、内部で使うクラスメソッド実装側に任せろよ

正直よく分からない

C言語プログラミングの基礎を学び、今はJavaベースシステム設計し、プログラマ実装をお願いする立場

それで、プログラマとのコミュニケーションに苦心している。


まず、完成した設計を渡すと高確率質問とともに突っ返されるのだが、その時の質問が、ほぼいつも

「『AオブジェクトのBメソッドを〜』とありますが、そのAオブジェクトはどっから引っ張ってくるんですか?それともnewするんですか?

なのが閉口する。

俺は業務の詳細を俯瞰し、処理のフローチャートに落とすのが仕事なんだけど、そんなトコまで書かないといけないのかよ?

なんでインスタンスだnewだのって話になるんだよこっちはJava専門家じゃねーんだよ。ぶっちゃけそんな低レベルな話は知らねーよ。

てか、それ考えんのは実装仕事じゃねーの?

コード書くのが俺の仕事じゃねーのに、なんでコード書きがするべき仕事押し付けられるんだ。


まあそんな事を言っても仕方ないので、「引数で持ってくる」と直して実装させるじゃん?

すると、今度は別の実装チームから

その修正仕様変更になるので許可取ってください。てか、ビルドエラーになるのでやめてくれ

と言われ、ますます訳のわからん展開になる。


そして、それもこれも、全て設計のせいになるので納得が行かない。

普通に考えたらプログラマの怠慢じゃねーのって思うんだけど。

2018-07-08

anond:20180322223107から3ヶ月以上経ったので途中経過を報告する

結論から言うと、一定の成果はあった。

ペースは週2回、1回1〜2時間くらい。

この3ヶ月で勉強したことを列挙する。

Excel
Word
PowerPoint

PowerPointはよく分からないのであんまり教えてない、てかアニメーションとか要る?

その他

メートルミリメートルの換算ができなかったので。

換算一問一答とか、今使われてるのはSI単位が多いけど例外もあるよ、とか、トレーサビリティってのがあって世界中の計測器は〜、とか。

アメリカどーこだ?てやったら中国差したので。

緯度と経度とか、大陸名前とか、国当てクイズとか、大航海時代とか、メルカトル図法とか。

現状Hello Worldだけ。

ファイルシステムの使い方とか、巷でよくあるメモリを机上にたとえたり補助記憶本棚にたとえるやつとか、Windowsタスクマネージャーの起動方法見方トラブル対処法とか。

射出成形とかプレス機とかNC旋盤とかファクトリーオートメーションとか。

Google動画検索にはお世話になりっぱなし。

結果

成果物として、毎日つけているOneDrive上のExcel家計簿がある。

普段スマホで日付と金額と勘定科目?を入力してもらって、別シートにsumifs関数で期間と勘定科目の一致した金額を集計する。

大したものじゃないけど、自分で作ったから仕組みを全部理解しているというのが大きい。地方ならこれを提出するだけでも仕事もらえるんじゃないか。言い過ぎか。

この勉強が早速功を奏したかは分からないけど、今月の頭に某中堅製造業契約社員になれることが決まった。

優秀なら学歴関係なく正社員になれるとのことで、本人のやる気があれば今の勉強を続けていこうと思っている。

たぶんしばらくは反復練習に充てることになるかな。

俺も勉強しなきゃ…

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