2019年3月11日月曜日

移植性のないプログラム

※最初に以下のページを参考にしてほしい

「より良いプログラムを書くために」

 で、昨日、某質問サイトに私の環境(gcc7.3,clang9.0)ではコンパイルできないCプログラムが有った。で、“コンパイルできない”故を伝えたら、「Visual C++の定義だから問題ない」というコメントをもらった。以前からscanf_s()やらなんやら互換性のないコードが溢れて居るので気になったいたのだが、“VCだから問題ない”というのは流石に問題だと思う。 プログラムというものは何年も場合によっては何十年も使われるものだ。長い間にソースの改変が入るのは止むをえないが、その時に成ってもとのソースが移植性のないものだったらどうだろう?・・・そもそも毎月のようにパッチを出している会社が、今後も同じソースがコンパイルできるコンパイラを出しているだろうか?

以前(30年ほど前)、某大手メーカで仕事をしていた時に新人SEにCの教育(と言っても週1回、通算2回w)を頼まれた事が有った。事前に講義内容を担当者と打ち合わせしたのだが、先方が指摘したのが「移植性の有るプログラム」という話だった。“それでは困る”と言うのである。理由としては“基礎とうちのワークステーション固有の題材にしてほしい”だそうで、結局移植性の話はしないようにしたが、担当は自分が言った意味が分かっていたのだろうか? そして、あの頃のSEはどうしているのだろうか?

個人的には、「移植性のあるプログラムを書こう」は、プログラミングの基礎だと思うのだが・・・

10日間でプログラムを作ろうと思ったら。”に関わる話ですが 「あなたがプログラミングに向いていない10のサイン」を見てみましょう。きっと、いいヒントがもらえるでしょう。

2019年3月7日木曜日

10日間でプログラムを作ろうと思ったら。

遅くとも4日間でコーデイングを終わらせるべきです。

あとは、楽しいデバッグが待っています。※


が、教育機関(含高専)では、プログラミングは教えますが、デバッグの仕方はあまり教えてないようです。
・・・なので、問題が起こると“教えて君”になります。

現在は、「スタック・オーバーフロー」や「テラティル」などの質問サイトや「progate」,「ドットインストール」などの初心者向けプログラミング学習サイトがありますが、それでも躓く学生さんがかなり居るようです。(昔は本とIRCだけが頼りだった;;)
 ・・・何よりも“デバッグしてない”・・・嘘のようなホントの話

※プログラムは、書いたからと言って一発で動くことはまずありません。まして、思った通りに動くなんて・・・・
(中にはコンパイラすら通せないで質問する方がいます)

プログラムのエラーが出ることを怖がる学生さんたち


↓結構有名な格言です

プログラムは思った通りには動かない。書いたとおりに動くのだ
(Any code doesn't run as you thought, run as it wrote)


IT業界名(迷)言集

プログラミング言語C」に出てくるhello, world"も今では書式が古いためワーニングが出ます。

------------------------------------------
/*
    カーニハンの「hello, world」
 */
#include <stdio.h>

main()
{
    printf("hello, world\n");
}

 -----------------------------------------
tst.c:6:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main()
^
1 warning generated.

main() の型指定がないよなんて書式が古いため“出て当たり前”と思うのですがそうではないらしい
「本の通りにやったんだけどなんかエラーが出る」だけでパニックになる・・・

“間違ったら恥ずかしい”そんな思いが有るらしい。


最初からいいもの作ろうとしないで、どんどん間違えて覚えてください。

「プログラムは動いてなんぼ、プログラマはデバッグが出来て一人前」

 
※「ソフトウェア開発データ白書 によるとだいたいそんな数字(デバッグ60〜70%)になるらしい。


ブライアン・カーニハンを調べて結構本(和訳)を持っていることにびっくり
  • ソフトウェア作法
  • プログラミング言語C・・・これはどっか行ったw
  • プログラム書法
  • UNIXプログラミング環境
  • プログラミング作法 

  • 今更ながら「プログラミング言語AWK」がないのが悔やまれる。

2019年3月6日水曜日

一般ユーザでwiresharkを利用する方法 (Linux mint)

sudo usermod -a -G wireshark $USER

で、再起動(reboot)・・・ログオフ・ログオンでもいいみたいだけどやってないから分からない
 
これだけで、一般ユーザでも通信モニタが出来るd^^
 

import this

  The Zen of Python, by Tim Peters Beautiful is better than ugly. 醜いより美しいほうがいい。 Explicit is better than implicit. 暗示するより明示するほうがいい。 Simple...