gistfile1.md if式 / if文 の条件節で、左辺に定数を書くべき言語はあるか? @ajiyoshi.gist twitterからながれてきたこの話題。昔のCコンパイラは、if文の条件節で代入を書いても文句を言わなかったので、このようなコードに何の警告も出なかった。 #include<stdio.h> int main() { int x = 0; /* おそらく意図と違う。 x == 1 と書くべきであった これでは常に実行されてしまう */ if ( x = 1 ) { puts("残念"); } } 「これをこのように書けば、コンパイルエラーになり、ある種の誤りをコンパイラに見つけさせることができる」というのが、「老害」とされる人の主張である。 /* これはコンパイルエラーになる */ if ( 1 = x ) { puts("残念"); } もし使っている環境が「コンパ
そんなに使っているつもりはないのに、お金がない。次のお給料が入るまでどうしたらいいんだろうとお財布を眺めて悲しい気分になっている方もいると思います。 そんなときに限って、お金が出ていくような出来事が重なるものです。支払うべきものがあるのに支払えない!このピンチをどうやって乗り越えたらいいのか、今できる対処法についてお話ししましょう。 また、お金を作る方法やどうしていつもお金がない状態なのか、その原因についても詳しく説明します。 お金がない原因がわかれば、根本的な対処法がわかるようになります。お金がない辛い状況から早く抜け出せるようにしましょう。 お金がない!今すぐできる対処法 支払わなければいけないものがあるのに、お金がない!そんなとき、今すぐできることがいくつかあります。 とにかく今日中にお金が必要で、お金がない原因やアルバイトなどをしている暇なんてない!というお急ぎな人は、安心して利用
メモリリークに悩まされている技術者は多いだろう。メモリリークが嫌でGCという技術が開発されたといっても過言ではないし、歴史的にはC++からJavaへシフトが起きた大きな理由のひとつといっていい。Unix系の簡単な定義でいえば、ヒープ領域を指すポインタ(アドレス)をロストしてしまえばそのメモリはもう漏れたといってよい。たとえばこういったコードだ。 struct { int i; char c; } spam; int main(){ void* p; int i; for(i=0; i<1024; ++i){ p = malloc(sizeof(struct spam)); } pause(); } このコードではpause(3)の時点で約5KBのメモリが漏れている。free(3)を使えばメモリをOSに返却できるが、アドレスが分からないので返却できない。 ところが、ここでいいたいのは、メモリ
変数に型がないということの利点について考える http://d.hatena.ne.jp/perlcodesample/touch/20130227/1361928810 が大変お粗末な内容だったので、反論記事を書きます。 型推論はソースコードのコンパイルの時間を遅くしてしまいます。ソースコードが大きくなってきた場合に、すばやく書いて、すばやく実行結果をもらうことができなくなります。今時のパソコンならコンパイル時間なんて大したことない。 大規模開発環境はコンパイル時間よりリンク時間の方が問題になりやすいが、それは別に型の話とは関係ない。 あと、インタープリタも最近は実行時にJITコンパイラが走る。 実行時間に影響がなく、開発者の待ち時間で済む方が実はよいのでは? 統合開発環境での、メソッドの自動補完の機能の実装が少し難しくなります。みんなが統合開発環境をつくるとでも? そもそも型が不定なら
Perl › 読み物 PHPやPerlやRubyやPythonなどのスクリプト言語に対して、変数に型がないということを否定的にとらえる人もいるかと思います。特にC言語やJavaなどの静的言語を使ってきた人にとっては、型がないということが不安材料として目に映ることが多いのではないかと思います。 けれども、型がないということは、本当に素晴らしいことです。型がないことによって、たくさんの面倒から解放されるからです。 どのような型の値でも代入できる まず基本的なこととして変数に型がなければどのような型の値でも代入できるということです。つまり、受け取るときに、どのような型の値を受け取るのかを意識する必要がありません。 my $str = 'Hello'; my $num = 1; my $nums = [1, 2, 3]; my $person = {age => 2, name => 'taro'
a side-by-side reference sheet sheet one: version | grammar and execution | variables and expressions | arithmetic and logic | strings | regexes | dates and time | arrays | dictionaries | functions | execution control | exceptions | threads sheet two: streams | asynchronous events | files | file formats | directories | processes and environment | option parsing | libraries and namespaces | objects
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く