「演算子」を含む日記 RSS

はてなキーワード: 演算子とは

2021-08-18

手短に済まないのか

プログラミング基本的手法の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となる。

これを短絡評価といい、今どきのプログラミング言語では必ずこの仕掛けが実装されていると。


この他に、XORという演算子がある。

これは排他的論理和といい、演算子の右辺と左辺の結果が違う組み合わせの場合のみtrueとなる。

まりa=trueかつb=false場合か、a=falseかつb=true場合のみ、演算結果(a XOR b)がtrueとなる。


問題は、どういうわけかこのXORには短絡評価存在しないのだ。

どのプログラミング言語を調べても短絡評価がないので、かなり驚いている。

一体どういうこと?


(追記)

トラバがやかましいから言っとくけど、bool型XOR比較できる仕組みのある言語限定の話な。

2021-08-16

【未経験から1ヶ月で】現役エンジニアが教える最良のプログラミング勉強法

プログラマーに憧れる皆さん!こんばんは。

自分文系から」「未経験から」と諦めていませんか?大丈夫です!プログラミングセンス不要です。正しい手順で学べば、文系や未経験でも、誰でも一流のプログラマとして活躍することができます

今日は、未経験から最短でWeb企業就職するための勉強法をご紹介します!

オススメ方法

もっとオススメ方法は、顕正会セミナーに参加することです。

顕正会は、日本で最大のエンジニアコミュニティであり、非常に良質なテキストを用いて、プログラミング初心者向けのセミナーをしていることで有名です。顕正会に入ることで、未経験からでも一流エンジニアノウハウを学ぶことができます

また、意外と知られていませんが、日本エンジニアの8割は顕正会出身です。実はあのひろゆきビル・ゲイツ顕正会出身です。ですので、顕正会ネットワークを介して就職先を斡旋してくれたりしますし、自分顕正会員だと、面接時にも非常に有利になります

顕正会セミナーは、インターネットからも応募することができますし、秋葉原などで声をかけられることもありますので、誰でも簡単に参加できます。会員もフレンドリーな方ばかりですので、是非、お気軽に応募してみて下さい!無料体験もできますよ。

準備

プログラミング勉強を始める前に、まず、必要ものを準備しましょう。必ず必要ものと、できればあると良いものは以下の通りです。

必ず必要もの

まず、プログラムを書いて実行するためにパソコン必須です。

可能な限りスペックの高いものを買いましょう。2021年現在であれば、CPUは18コア、36スレッドRAMは128GBくらいはあると良いでしょう。ストレージSSDであれば1TBもあれば十分です。

OSは、Windowsで開発するならWindowsが、Macで開発するならMac必要です。よく分からなければMacを買っておく方が良いでしょう。基本的MacにできてWindowsにできないことはありません。

インターネットは、この記事を見ている人は既に持っているでしょう。ただし、モバイル回線で見ている人は、自宅に有線のインターネット環境を用意した方が良いです。

顕正会に入会すれば、上記スペックPC無料で貸し出ししてくれます。また、法人向けの専用線無料で取付工事を行ってくれる上に、通信費を全て負担してくれます

できればあると良いもの

まず、他の会員と連絡を取るために、SNSアカウントを持っていると良いでしょう。

最近は完全にPC上での学習もできますが、やはり、勉強の基本は紙のノートに直接書くことです。医学的にも、手指の動きと脳の記憶回路が関連していることは証明されており、手を動かすことで効率的ものを覚えることができます

Kindleなどの電子書籍リーダーは持っておいた方が良いです。紙の本は時代遅れです。いやしくもITプロを目指そうという人間が、このような最先端デバイスを使っていないのは恥だと思うべきです。紙の本を買わないことは、環境を守ることにも繋がります現金も持つのはやめましょう。

自宅での学習

せっかくセミナーに参加しても、受身聴くだけでは、プログラミング習得することは難しいです。ここでは、自宅でどのような勉強をすればよいのか、ご紹介します。

教科書写経する

まずは、教科書参考書写経することから始めましょう。教科書参考書の本文を一字一句正確に書き写すのです。

よく、「写経理屈を学べないからだめだ」と批判されますが、まずは正しい「型」を体に覚え込ませるのが先です。野球水泳などでも、細かい理屈よりも先にフォームを固めるのと同じです。書き写している内に理屈自然と身に付きます

また、写経メリットは「飛ばし読み」を防げるところです。一字一句正確に写経をすれば、細かい部分を「分かったつもり」になって飛ばししまうことを防げます。たとえば、比較演算子の等号は=ではなくて、==です。プログラミングはこういうところに注意して学ばなければいけません。

ソースコードフローチャートUML)に変換する

教科書サンプルコードノートに書き写したら、それを今度は自力フローチャートUML)に変換してみましょう。そうすることで、自分が本当にそのコード理解しているのか、確かめることができます

フローチャートUMLが素早く正確に描けることは、プログラマーとして働く上で非常に重要スキルです。それらはソフトウェア設計の基礎となりますし、ソースコードを読めない営業顧客にとっては貴重な資料となるからです。プロエンジニアは、COBOLソースコード10万行を1週間でフローチャートにして、Excel転載することができます

ここで一つ注意すべきことがありますフローチャートを描くときは、必ず専用の定規を用いて描いて下さい。フリーハンドで描いたもの業務ではフローチャートとは認められません。これはまともな企業就職すれば研修などで必ず習うことですから、今の内に覚えておきましょう。

Excel勉強する

エンジニアを目指すのであれば、プログラミングだけではなく、Excelの使い方も学びましょう。Excelエンジニアにとっての万能プラットフォームです。エンジニアはあらゆる作業Excelで行いますセル結合や罫線を用いて、見栄えの良い資料を作る技術は、エンジニアにとって必須です。

プログラミング学習中であれば、たとえば以下のような題材の資料を作ってみると良いでしょう。

尤も、以上の資料は、ツールを使うことで自動作成することもできます。たとえば、ソースコード更新履歴Gitなどのバージョン管理システムを使うことでも管理できますしかし、それらの資料としてのクオリティは非常に低いため、アマチュアしか使うことはありません。プロを目指す皆さんは、必ずExcelを使いこなせるようになりましょう!VBA習得必須です。

プログラミングのコツ

以上、プログラミング勉強法について解説しました。ここからは、実際にソースコードを書くときのコツを紹介していきます。他のプログラマと差をつけることができる技術ですので、意識するようにして下さい。

変数名は短く

プログラムで使う変数名は可能な限り短くしましょう。

理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。

また、変数宣言使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分ミスしにくくなります

変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。


なるべく関数を作らない

多くのプログラミング言語には、クラス関数といった機能がありますが、これらは基本的ライブラリ提供者などが使う想定の機能であり、一般プログラマが使うのは好ましくありません。したがって、クラス関数はなるべく使わないようにして下さい。

関数を作ると、以下のデメリットがあります

不要関数を作らないためのテクニックには、以下のようなものがあります

まず、関数引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数複数の処理をすることができます

function f(i) {
  switch(i) {
    case 1:
      // i = 1のときの処理
      break;
    case 2:
      // i = 2のときの処理
      break;
    case 3:
      // i = 3のときの処理
      break;
    // ...
  }
}

この方法は、以下に述べる「変数寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます

クラス不要関数を作らないようにするには、「継承」を用います複数クラスで用いる関数定義したクラスを1つ作っておき、そのクラス継承すれば、新しいクラス関数定義する必要はありません。

理想的には、プログラム内のすべての関数を同一のクラス定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、プログラマからはこの上なく尊ばれています

class God {
  f1() {
    // 関数1
  }
  
  f2() {
    // 関数2
  }
  // ...
}

class C1 extends God {
  // 何も書かなくても上の関数が使える!
}

class C2 extends God {
  // 何も書かなくても上の関数が使える!
}
// ...

変数寿命を長くする

変数宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数寿命が長い」と言います

たとえば、以下のコードのaは、関数定義の外側からは参照することができません。

function f() {
  var a = 1;
  return a;
}

一方、以下のコードのaは関数の内外どちらからでも参照することができます

var a = 1;

function f() {
  a = 2;
  return a;
}

変数寿命を長くするのは、プログラマの腕の見せ所です。

せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまます

また、変数寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数寿命を長くするとプログラムを変更しやすくなります。つまり保守性が上がります

例外を潰す

例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイル存在しない場合は、例外となります

例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマ例外をきちんと処理しなければなりません。

ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。

try {
  // 例外が発生し得る処理
  // ex. ファイルを開く
}
catch (e) {
  // 例外が発生したときに、実行する処理
}

例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラム動作を続けます

try {
  // 例外が発生し得る処理
}
catch () {}

全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから例外が発生し得るコードは、積極的上記try-catch構文を用いて、例外を潰すようにしましょう。

おわりに

全体的に専門用語盛りだくさんの記事になってしまいましたが、

部分的にでも理解すればプログラミングを見る目が変わるはずです。

うさんくさい記事インターネットには多いですが、

そういう情報に惑わされずに本物の技術を身につけてもらえればと思います

2021-07-26

anond:20210723234128

ブコメに訳はおかしくないって人が多いが

とある C++ 教本で、「new operator」が「新しい演算子」って訳されてたんだ

これは誤りで

オブジェクトを生成する「new」という演算子があるんだ

× 新しい演算子オブジェクトを生成しま

〇 new 演算子オブジェクトを生成しま

翻訳する人がその演算子を知らなければ間違った訳になるが

文章単体では評価できない

結構このレベル誤植はありふれてて

必ず原典を当たるという人も多い

2021-07-19

Haskell 言語の作者の演算子順位の付け方の実装方法は良くない

優先順位を 1 とか絶対的な数値、業界用語で言うところのマジックナンバーにしたのは、設計ミスだと思うのだ。相対的表記にすべきだったのだ。

2021-07-03

anond:20210703093335

デルタ(Δ)やで

その後の記号の微小な差を表すやで

例えばΔtは微小な時間を表す

演算子というよりは接頭語というイメージやで

dy/dxはdxを無限小にした時のyの差だからその時点での接線の傾きになるやで(つまり微分)

微分とか積分で出てくるdxとかdyって単なる「このxやyを対象微分積分しますよ」って意味記号かと思ってたけどもしかしてdは後ろに着く記号の微小移動量を出す演算子ってこと?

2021-03-22

operator が演算子だったら neglector (なにそれ)は放置子になる!これってトリビアになりませんか?????

2021-01-29

今日、部下が他のクラス変数アクセスする方法がわからないというので

public修飾子とインスタンス変数ドット演算子必要なことを教えた。

ツラすぎる。

2021-01-02

anond:20210102094603

Zeroフラグはたしかに++演算子はないが

直前に見ているのが変数なのか、フラグなのかはハードからはわからいか

そこはプログラマーが書くとき

フラグになるようにコードを書け

とか変数からから遅い

とか

flag++;

とすることでフラグにするなかならず変数に取れというように

コンパイラに指示できる

こういうのを、あなたが気が付きにくくする魅力という

2020-12-19

PHP】日付比較

https://qiita.com/konweb/items/233a7fefe3f33ec595ae

特定の日付を確認するだけなら下記で良い

date("Ymd") === "20201219";

もっと言うならPHP数字比較演算子有効なので下記のように、比較演算子での日付の大小評価可能です。

date("Ymd") > "20201219";

Qiita記事はなんであんなに複雑なんだろう。技術力無いだけだろうな

PHP記事って裾野が広いと言えば聞こえいいけど、素人が書いてるようなやばいの多すぎ

2020-12-17

anond:20201217105846

型推論メモリ節約のためじゃなく型エラーを出すことで問題を早めに検知できるようにするためにあるんやで。

動的型付け言語使ってたら誰でも「"12" + 3 → "123"(15にする意図コードだった)」というバグ経験してるやろ。

(まあ上の例はC++文字列結合をプラス演算子オーバーロード実装してしまったのが諸悪の根源という気がするけど)

2020-11-14

演算子復習「キーボードから入力した税抜き価格消費税込み価格で表示するプログラムを書きなさい」

いま消費税2種類あるんですけど? 条件分岐まだ出てきてないんですけど??

2020-09-13

anond:20200913131639

悪いがどちらの例も不適切では?

日本で広い北海道はせまい」はそもそも必然性可能性を扱っていないので論外として、

「雨になる確率が高い確信がある」は元増田の例で言うと「変更することになる確率が高い確信がある」で、

もうちょっと元増田の言い方に寄せると「変更する事になる気がする気がする」だ(「確率が高い」「確信がある」はどちらも可能性についての言及で、必然性への言及ではない為)

仮に「確信がある」を必然性についての言及(「せざるを得ない」)だと解釈したとしても、「変更する事になる気がせざるを得ない」であって、元増田(というか社会学者)の発言とは論理的演算子の順番が異なる

言い換えると、元増田社会学者)のは「変更(必然)(可能性)」だが、君のは「変更(可能性)(可能性)」または「変更(可能性)(必然)」だ

演算子の順序が変わると論理的意味が変わるから、例としては意味を成さないと思うよ

2020-05-29

anond:20200529133925

(!は見づらいので not 演算子があれば 上でもいいかな)

2020-05-22

anond:20200521225730

プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。

JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScript改名されたり、規格を話すときECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。

Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。

Javaは初期のころオートボクシング / アンボクシングもなく、ストイックオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコード簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である

PHPWebネイティブ言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能初期化していない変数最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列数字臨機応変に切り替える機能もあり(今もそうかは知らん)、数字文字比較比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。

C#Hello Worldくらいしかいたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。

C++黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーション腱鞘炎になることもない。PC Unixにも最初から環境インストールされているか簡単インストールできるので毛嫌いせず使うとよいと思う。

Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。

CSS...はプログラミング言語なのか?そうか。

TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。

Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

これ以下のランキングのもその気になったら書こうかな。

2020-04-14

"ハミるとにゃーん"

"ハミるとにゃーん"との一致はありません。

ハミるとにゃーん の検索結果 (引用符なし):

検索結果

ウェブ検索結果

蒼鉛さん on Twitter: "ハミルトニャーン(猫演算子http://t.co ...

twitter.com › miraclebismuth › status

2015/06/05 - Joined March 2014. Tweets. © 2020 Twitter; About · Help Center · Terms · Privacy policy · Cookies · Ads info. Dismiss. Close. Previous. Next. Close. Go to a person's profile. In this conversation. Verified accountProtected ...


カタカナだったか・・・

ねこ演算子

ねこ演算子”との一致はありません。

ねこ演算子検索結果 (引用符なし):

検索結果

ウェブ検索結果

404 Blog Not Found:perl - ネコ演算子と<*glob*>とFile::Glob

b.hatena.ne.jpblog.livedoor.jpdankogai › archives

404 Blog Not Found:perl - ネコ演算子と<*glob*>とFile::Glob::Slurp. それって<*glob*>「メタ演算子」で。 Perl5 でネコ演算子Range Check - id:kazuhookuメモ置き場 Perl ... 続きを表示 それって<*glob*>「メタ演算子」で。 Perl5 でネコ演算子Range ...

2020-03-29

[]演算子はだいたい関数

引数を取り結果を返すという意味演算子はだいたい関数と同じものである

演算子オペレータ)は被演算子オペランド)をとって式を構成する。

「1 + 1」「5 - 3」「 1 == 3」等の式はplus(1,1) minus(5,3) equals(1,3)といった関数の言い換えである理解できる。

値を返すものが式である

引数をとり値を返すもの関数である

式の中の特別もの関数だと言える。

Wikipediaによると、関数写像であるという。

写像英訳mapという。

プログラミングにおいてマップマッピングとは

まあだいたい「〇〇は□□と対応してる」という関係を指す。

連想配列とか。

まり関数マップであり、

連想配列マップであり、

まり連想配列関数である。だいたいのところ。

2019-09-05

1+1が2にも3にも4にもなるってよく言うけど

1+1が2にも3にも4にもなるって脳筋陽キャがよく言うけど、

ここで謎の演算子「+」を持つモノイドを考えてみたい。

まず、前提として、1,2,3,...はモノイドの元 α1,α2,α3,...の簡易記法とする。

モノイドの単位元はα0とする。

モノイドの次の元を得る関数SUCCが存在し、

α_n+1 = SUCC(α_n)と表すことができることとする。

まり

α2 = SUCC(α1)
α3 = SUCC(α2) = SUCC(SUCC(α1))
...

である

α0 は単位元であるので、単位元定義より、

α0 = α0 + α0
α1 = α1 + α0
α2 = α2 + α0
...

である

ここで、1+1が2にも3にも4 という定義より、

α1 + α1 = α2 = SUCC(α1)
   = α3 = SUCC(SUCC(α1))
   = α4 = SUCC(SUCC(SUCC(α1)))
...

となる。

これを満たすことができる関数SUCCは幾つか考えられるが

その1:

defun SUCC(x) = α0

その2:

defun SUCC(x) =
        if (x equals to α0) then α0
        else x

等とすることができる。

その1は 1bit の排他的論理和

α0 + α0 = α0
α0 + α1 = α1
α1 + α0 = α1
α1 + α1 = α2 = SUCC(α1) = α0

その2は 1bit の論理和

α0 + α0 = α0
α0 + α1 = α1
α1 + α0 = α1
α1 + α1 = α2 = SUCC(α1) = α1

である

脳筋って頭いいんだね

2019-08-22

anond:20190822094152

パイプライン演算子いいよね・・・

材料(ふるいにかけた(小麦粉)、卵、牛乳

|> 混ぜて

|> 焼いて

|> 食う

やっぱ関数型でも、命令は順に列挙する形の方が人間の頭にフィットするのか

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