1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autosar Guidelines C++14, example code compile list(31)Rule A5-0-1 The value of an expression

Last updated at Posted at 2018-06-09

Guidelines for the use of the C++14 language in critical and
safety-related systems Sample code compile list(31)
https://www.autosar.org/fileadmin/user_upload/standards/adaptive/17-03/AUTOSAR_RS_CPP14Guidelines.pdf

Autosar Guidelines C++14 example code compile list
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

#目的(purpose)
AutosarのC++ GuidelineをOS, 制御のプログラムで利用するにあたって、(1)hosted, freestandingのどちらを基本にすべきか。(2)C++2014,C++2017, C++202aのどれを用いると良いか, (3)どの処理系を併用すると良いかを検討するため、-std=c++14, -std=c++17, -std=c++2aの3種類で、複数のコンパイラでコンパイルすることにより、誤(error)、警告(warning)、関数・変数連携(link)、出力(output)、にどのような影響があるかを確認する。
#成果(outcome)
複数の処理系の特徴が明確になるとともに、各標準段階, hosted, freestandingの特徴と課題を明確にする。

#A5-0-1.cpp
##算譜(source code)

A5-0-1.cpp
//Guidelines for the use of the C++14 language in critical and safety-related systems
const char* msg="Rule A5-0-1 (required, implementation, automated) The value of an expression shall be the same under any order of evaluation that the standard permits.(31)A5-0-1.cpp";
//https://www.autosar.org/fileadmin/user_upload/standards/adaptive/17-03/AUTOSAR_RS_CPP14Guidelines.pdf
// There is no description about Autosar declear hosted or freestanding.
// If the Autosar intended both depending on the cases, autosar.h can choose one.
// Compile with -DHOSTED work as  hosted environment, -DFREESTANDING work as freestanding.

#include "autosar.h"/// @line add header file https://qiita.com/kaizen_nagoya/items/4bde8f21ab059b96cf2a
#include <cstdint>

using namespace std;/// @line add using

///start AUTOSAR: From here to the "///end AUTOSAR" is from AUTOSAR without code having /// comment in line.

// $Id: A5-0-1.cpp 271927 2017-03-24 12:01:35Z piotr.tanski $
#include <cstdint>
#include <stack>
// The following notes give some guidance on how dependence on order of
// evaluation may occur, and therefore may assist in adopting the rule.

// 1) Increment or decrement operators
// As an example of what can go wrong, consider
void f1(std::uint8_t (&arr)[10], std::uint8_t idx) noexcept(false)
{
  std::uint16_t x = arr[idx] + idx++;
  cout <<"f1:idx="<<idx<<" x="<<x<<endl;/// @ line for output

}
// This will give different results depending on whether arr[idx] is evaluated
// before idx++ or vice versa. The problem could be avoided by putting the
// increment operation in a separate statement. For example:
void f2(std::uint8_t (&arr)[10], std::uint8_t idx) noexcept(false)
{
  std::uint8_t x = arr[idx] + idx;
  idx++;
  cout <<"f2:idx="<<idx<<endl;/// @ line for output

}

// 2) Function arguments
// The order of evaluation of function arguments is unspecified.
extern std::uint8_t func(std::uint8_t x, std::uint8_t y);
void f3() noexcept(false)
{
  std::uint8_t i = 0;
  std::uint8_t x = func(i++, i);
  cout <<"f3:x="<<x<<endl;/// @ line for output
}
// This will give different results depending on which of the functions two
// parameters is evaluated first.

// 3) Function pointers
// If a function is called via a function pointer there shall be no
// dependence
// on the order in which function-designator and function arguments are
// evaluated.
struct S
{
  void taskStartFn(S* obj) noexcept(false) {
    cout<< "taskStartFn:*obj="<<obj<<endl;
  }
};
void f4(S* p) noexcept(false)
{
  p->taskStartFn(p++);
  cout <<"f4"<<endl;/// @ line for output

}

// 4) Function calls
// Functions may have additional effects when they are called (e.g. modifying
// some global data). Dependence on order of evaluation could be avoided by
// invoking the function prior to the expression that uses it, making use of a
// temporary variable for the value. For example:
extern std::uint16_t g(std::uint8_t) noexcept(false);
extern std::uint16_t z(std::uint8_t) noexcept(false);
void f5(std::uint8_t a) noexcept(false)
{
  std::uint16_t x = g(a) + z(a);
  cout <<"f5:x="<<x<<endl;/// @ line for output

}
// could be written as
void f6(std::uint8_t a) noexcept(false)
{
  std::uint16_t x = g(a);
  x += z(a);
  cout <<"f6:x="<<x<<endl;/// @ line for output
}
// As an example of what can go wrong, consider an expression to take two values
// off a stack, subtract the second from the first, and push the result back on
// the stack:
std::int32_t pop(std::stack<std::int32_t>& s)
{
  std::int32_t ret = s.top();
  s.pop();
  return ret;
}
void f7(std::stack<std::int32_t>& s)
{
  s.push(pop(s) - pop(s));
  cout <<"s.top()="<<s.top()<<endl;/// @ line for output
}
// This will give different results depending on which of the pop() function
// calls is evaluated first (because pop() has side effects).

// 5) Nested assignment statements
// Assignments nested within expressions cause additional side effects. The best
// way to avoid any possibility of this leading to a dependence on order of
// evaluation is not to embed assignments within expressions. For example, the
// following is not recommended:
void f8(std::int32_t& x) noexcept(false)
{
  std::int32_t y = 4;
  x = y = y++; // It is undefined whether the final value of y is 4 or 5
  cout <<"y="<<y<<endl;/// @ line for output
}
// 6) Accessing a volatile
// The volatile type qualifier is provided in C++ to denote objects whose value
// can change independently of the execution of the program (for example an
// input register). If an object of volatile qualified type is accessed this may
// change its value. C++ compilers will not optimize out reads of a volatile. In
// addition, as far as a C++ program is concerned, a read of a volatile has a
// side effect (changing the value of the volatile). It will usually be
// necessary to access volatile data as part of an expression, which then means
// there may be dependence on order of evaluation. Where possible, though, it is
// recommended that volatiles only be accessed in simple assignment statements,
// such as the following:
void f9(std::uint16_t& x) noexcept(false)
{
  volatile std::uint16_t v=2048; /// @ add value for warning
// ...
  x = v;
  cout <<"v="<<v<<endl;/// @ line for output
}

// The rule addresses the order of evaluation problem with side effects. Note
// that there may also be an issue with the number of times a sub-expression is
// evaluated, which is not covered by this rule. This can be a problem with
// function invocations where the function is implemented as a macro. For
// example, consider the following function-like macro and its invocation:
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
// ...
void f10(std::uint32_t& i, std::uint32_t j)
{
  std::uint32_t z = MAX(i++, j);
  cout <<"f10:z="<< z<<endl; /// @ line add output for warning
}
// The definition evaluates the first parameter twice if a > b but only once if
// a = b. The macro invocation may thus increment i either once or twice,
// depending on the values of i and j.
// It should be noted that magnitude-dependent effects, such as those due to
// floating-point rounding, are also not addressed by this rule. Although
// the
// order in which side effects occur is undefined, the result of an operation is
// otherwise well-defined and is controlled by the structure of the expression.
// In the following example, f1 and f2 are floating-point variables; F3, F4
// and
// F5 denote expressions with floating-point types.

// f1 = F3 + ( F4 + F5 );
// f2 = ( F3 + F4 ) + F5;

// The addition operations are, or at least appear to be, performed in the order
// determined by the position of the parentheses, i.e. firstly F4 is added to F5
// then secondly F3 is added to give the value of f1. Provided that F3, F4 and
// F5 contain no side effects, their values are independent of the order in
// which they are evaluated. However, the values assigned to f1 and f2 are not
// guaranteed to be the same because floating-point rounding following the
// addition operations are dependent on the values being added.

///end AUTOSAR
int start() { /// @{} for start
  uint32_t ui;
  uint32_t& i=ui;
  uint32_t uj=1023;
  uint8_t ar[10];
  uint8_t (&arr)[10]=ar;
  uint8_t idx=1;
  S s;
  S * p = &s;
  stack<int32_t> st;
  stack<int32_t> & str=st;
  int32_t i32;
  int32_t & ir=i32;
  uint16_t ui16;
  uint16_t & uir=ui16;
  f1( (&arr)[10],  idx) ;
  f2((&arr)[10],  idx) ;
  f3();
  f4(p);
  f5(idx) ;
  f6(idx);
  f7(str);
  f8(ir);
  f9(uir);
  f10(i,uj);
  cout<< msg << endl;
  ShutdownOS()  EXIT_SUCCESS;
/// Autosar OS 3.1.1, 2009: 7.1.2.2 Undefined Behaviour in OSEK OS
/// OS425 If ShutdownOS is called and ShutdownHook() returns then the operating system shall disable all interrupts and enter an endless loop.
}
a5-0-1a.cpp
#include "autosar.h"/// @line add header file https://qiita.com/kaizen_nagoya/items/4bde8f21ab059b96cf2a

using namespace std;

uint16_t g(uint8_t ui8) noexcept(false) {
  uint16_t ui16 = ui8*ui8;
  cout << "ui8="<<ui8<<" ui16="<<ui16<<endl;
  return ui16;
}
uint16_t z(uint8_t ui8) noexcept(false) {
  uint16_t ui16 = ui8+ui8;
  cout << "ui8="<<ui8<<" ui16="<<ui16<<endl;
  return ui16;
}
uint8_t func(uint8_t x, uint8_t y) {
  cout << "x="<<x<<" y="<<y<<endl;
  return x+y;
}

##編纂・実行結果(compile and go)

cpa.sh
$ ../cpa2.sh a5-0-1 a5-0-1a
$ clang++ a5-0-1.cpp a5-0-1a.cpp  -std=c++14 -Wall
a5-0-1.cpp:25:35: warning: unsequenced modification and access to 'idx' [-Wunsequenced]
  std::uint16_t x = arr[idx] + idx++;
                        ~~~       ^
a5-0-1.cpp:34:16: warning: unused variable 'x' [-Wunused-variable]
  std::uint8_t x = arr[idx] + idx;
               ^
a5-0-1.cpp:46:26: warning: unsequenced modification and access to 'i' [-Wunsequenced]
  std::uint8_t x = func(i++, i);
                         ^   ~
a5-0-1.cpp:65:19: warning: unsequenced modification and access to 'p' [-Wunsequenced]
  p->taskStartFn(p++);
  ~               ^
a5-0-1.cpp:115:12: warning: multiple unsequenced modifications to 'y' [-Wunsequenced]
  x = y = y++; // It is undefined whether the final value of y is 4 or 5
        ~  ^
5 warnings generated.
f1:idx= x=225
f2:idx=
x= y=
f3:x=
taskStartFn:*obj=0x7ffee02375f8
f4
ui8= ui16=1
ui8= ui16=2
f5:x=3
ui8= ui16=1
ui8= ui16=2
f6:x=3
../cpa2.sh: line 7: 40060 Segmentation fault: 11  ./$1l14 $2
rm: a5-0-1l13: No such file or directory
$ clang++ a5-0-1.cpp  a5-0-1a.cpp  -std=c++17 -Wall
a5-0-1.cpp:25:35: warning: unsequenced modification and access to 'idx' [-Wunsequenced]
  std::uint16_t x = arr[idx] + idx++;
                        ~~~       ^
a5-0-1.cpp:34:16: warning: unused variable 'x' [-Wunused-variable]
  std::uint8_t x = arr[idx] + idx;
               ^
a5-0-1.cpp:46:26: warning: unsequenced modification and access to 'i' [-Wunsequenced]
  std::uint8_t x = func(i++, i);
                         ^   ~
a5-0-1.cpp:65:19: warning: unsequenced modification and access to 'p' [-Wunsequenced]
  p->taskStartFn(p++);
  ~               ^
a5-0-1.cpp:115:12: warning: multiple unsequenced modifications to 'y' [-Wunsequenced]
  x = y = y++; // It is undefined whether the final value of y is 4 or 5
        ~  ^
5 warnings generated.
f1:idx= x=239
f2:idx=
x= y=
f3:x=
taskStartFn:*obj=0x7ffeee7785f8
f4
ui8= ui16=1
ui8= ui16=2
f5:x=3
ui8= ui16=1
ui8= ui16=2
f6:x=3
../cpa2.sh: line 13: 40067 Segmentation fault: 11  ./$1l17 $2
$ clang++ a5-0-1.cpp  a5-0-1a.cpp  -std=c++2a -Wall
a5-0-1.cpp:25:35: warning: unsequenced modification and access to 'idx' [-Wunsequenced]
  std::uint16_t x = arr[idx] + idx++;
                        ~~~       ^
a5-0-1.cpp:34:16: warning: unused variable 'x' [-Wunused-variable]
  std::uint8_t x = arr[idx] + idx;
               ^
a5-0-1.cpp:46:26: warning: unsequenced modification and access to 'i' [-Wunsequenced]
  std::uint8_t x = func(i++, i);
                         ^   ~
a5-0-1.cpp:65:19: warning: unsequenced modification and access to 'p' [-Wunsequenced]
  p->taskStartFn(p++);
  ~               ^
a5-0-1.cpp:115:12: warning: multiple unsequenced modifications to 'y' [-Wunsequenced]
  x = y = y++; // It is undefined whether the final value of y is 4 or 5
        ~  ^
5 warnings generated.
f1:idx= x=235
f2:idx=
x= y=
f3:x=
taskStartFn:*obj=0x7ffeea40d5f8
f4
ui8= ui16=1
ui8= ui16=2
f5:x=3
ui8= ui16=1
ui8= ui16=2
f6:x=3
../cpa2.sh: line 19: 40073 Segmentation fault: 11  ./$1l2a $2

$ g++-8 a5-0-1.cpp a5-0-1a.cpp  -std=c++14  -Wall
a5-0-1.cpp: In function 'void f1(uint8_t (&)[10], uint8_t)':
a5-0-1.cpp:25:35: warning: operation on 'idx' may be undefined [-Wsequence-point]
   std::uint16_t x = arr[idx] + idx++;
                                ~~~^~
a5-0-1.cpp: In function 'void f2(uint8_t (&)[10], uint8_t)':
a5-0-1.cpp:34:16: warning: unused variable 'x' [-Wunused-variable]
   std::uint8_t x = arr[idx] + idx;
                ^
a5-0-1.cpp: In function 'void f3()':
a5-0-1.cpp:46:26: warning: operation on 'i' may be undefined [-Wsequence-point]
   std::uint8_t x = func(i++, i);
                         ~^~
a5-0-1.cpp: In function 'void f4(S*)':
a5-0-1.cpp:65:19: warning: operation on 'p' may be undefined [-Wsequence-point]
   p->taskStartFn(p++);
                  ~^~
a5-0-1.cpp: In function 'void f8(int32_t&)':
a5-0-1.cpp:115:9: warning: operation on 'y' may be undefined [-Wsequence-point]
   x = y = y++; // It is undefined whether the final value of y is 4 or 5
       ~~^~~~~
f1:idx= x=1
f2:idx=
x= y=
f3:x=
taskStartFn:*obj=0x7ffeeed556e1
f4
ui8= ui16=1
ui8= ui16=2
f5:x=3
ui8= ui16=1
ui8= ui16=2
f6:x=3
s.top()=-1346830414
y=4
v=2048
f10:z=32767
Rule A5-0-1 (required, implementation, automated) The value of an expression shall be the same under any order of evaluation that the standard permits.(31)A5-0-1.cpp
$ g++-8 a5-0-1.cpp a5-0-1a.cppp -std=c++17  -Wall
a5-0-1.cpp: In function 'void f1(uint8_t (&)[10], uint8_t)':
a5-0-1.cpp:25:35: warning: operation on 'idx' may be undefined [-Wsequence-point]
   std::uint16_t x = arr[idx] + idx++;
                                ~~~^~
a5-0-1.cpp: In function 'void f2(uint8_t (&)[10], uint8_t)':
a5-0-1.cpp:34:16: warning: unused variable 'x' [-Wunused-variable]
   std::uint8_t x = arr[idx] + idx;
                ^
a5-0-1.cpp: In function 'void f3()':
a5-0-1.cpp:46:26: warning: operation on 'i' may be undefined [-Wsequence-point]
   std::uint8_t x = func(i++, i);
                         ~^~
a5-0-1.cpp: In function 'void f4(S*)':
a5-0-1.cpp:65:19: warning: operation on 'p' may be undefined [-Wsequence-point]
   p->taskStartFn(p++);
                  ~^~
a5-0-1.cpp: In function 'void f8(int32_t&)':
a5-0-1.cpp:115:9: warning: operation on 'y' may be undefined [-Wsequence-point]
   x = y = y++; // It is undefined whether the final value of y is 4 or 5
       ~~^~~~~
f1:idx= x=1
f2:idx=
x= y=
f3:x=
taskStartFn:*obj=0x7ffee71e86e1
f4
ui8= ui16=1
ui8= ui16=2
f5:x=3
ui8= ui16=1
ui8= ui16=2
f6:x=3
s.top()=-1346830414
y=4
v=2048
f10:z=32767
Rule A5-0-1 (required, implementation, automated) The value of an expression shall be the same under any order of evaluation that the standard permits.(31)A5-0-1.cpp
$ g++-8 a5-0-1.cpp a5-0-1a.cppp -std=c++2a  -Wall
a5-0-1.cpp: In function 'void f1(uint8_t (&)[10], uint8_t)':
a5-0-1.cpp:25:35: warning: operation on 'idx' may be undefined [-Wsequence-point]
   std::uint16_t x = arr[idx] + idx++;
                                ~~~^~
a5-0-1.cpp: In function 'void f2(uint8_t (&)[10], uint8_t)':
a5-0-1.cpp:34:16: warning: unused variable 'x' [-Wunused-variable]
   std::uint8_t x = arr[idx] + idx;
                ^
a5-0-1.cpp: In function 'void f3()':
a5-0-1.cpp:46:26: warning: operation on 'i' may be undefined [-Wsequence-point]
   std::uint8_t x = func(i++, i);
                         ~^~
a5-0-1.cpp: In function 'void f4(S*)':
a5-0-1.cpp:65:19: warning: operation on 'p' may be undefined [-Wsequence-point]
   p->taskStartFn(p++);
                  ~^~
a5-0-1.cpp: In function 'void f8(int32_t&)':
a5-0-1.cpp:115:9: warning: operation on 'y' may be undefined [-Wsequence-point]
   x = y = y++; // It is undefined whether the final value of y is 4 or 5
       ~~^~~~~
f1:idx= x=1
f2:idx=
x= y=
f3:x=
taskStartFn:*obj=0x7ffee0f186e1
f4
ui8= ui16=1
ui8= ui16=2
f5:x=3
ui8= ui16=1
ui8= ui16=2
f6:x=3
s.top()=-1346830414
y=4
v=2048
f10:z=32767
Rule A5-0-1 (required, implementation, automated) The value of an expression shall be the same under any order of evaluation that the standard permits.(31)A5-0-1.cpp

#検討事項(agenda)
###1. 自律(freestanding)環境. 接待(hosted)環境

C++N4606 1.4 Implementation compliance p.4

###2. 対応OSの水準、対応通信規約、応用機能による分類
freestanding用の関数、ライブラリ等
###3. C++2014, C++2017, C++202aの比較項目
本件なし
###4. clang++, g++の比較検討項目
本件なし
###5 実行時エラーを取る
###6 役立つまたは意味のある出力

#参考文献(reference)

###プログラミング言語教育のXYZ
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4
プログラミング言語教育のXYZ(youtube)
https://www.youtube.com/watch?v=He1_tg4px-w&t=486s

###C++N4741 2018
Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4741.pdf

C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010

###C++N4606 2016
Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4606.pdf

C++N4606, 2016符号断片編纂一覧(example code compile list)
Working Draft 2016, ISO/IEC 14882(1)
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

### CEDD(Compile Error Driven Design)
初めての CEDD(Compile Error Driven Design) 8回直してコンパイル。
https://qiita.com/kaizen_nagoya/items/9494236aa1753f3fd1e1

コンパイルエラーを記録するとよい理由7つ
https://qiita.com/kaizen_nagoya/items/85c0e92b206883140e89

C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

C言語(C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

Qiitaに投稿するCのStyle例(暫定)
https://qiita.com/kaizen_nagoya/items/946df1528a6a1ef2bc0d

C++N4606 Working Draft 2016, ISO/IEC 14882, C++ standardのコード断片をコンパイルするためにしていること
https://qiita.com/kaizen_nagoya/items/a8d7ee2f2e29e76c19c1

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da

[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

docker gnu(gcc/g++) and llvm(clang/clang++)
https://qiita.com/drafts/059874ea39c4de64c0f7

Engineering Festa 2024前に必読記事一覧

登壇直後版 色使い(JIS安全色) Qiita Engineer Festa 2023〜私しか得しないニッチな技術でLT〜 スライド編 0.15
https://qiita.com/kaizen_nagoya/items/f0d3070d839f4f735b2b

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

逆も真:社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc

統計の嘘。仮説(127)
https://qiita.com/kaizen_nagoya/items/63b48ecf258a3471c51b

自分の言葉だけで論理展開できるのが天才なら、文章の引用だけで論理展開できるのが秀才だ。仮説(136)
https://qiita.com/kaizen_nagoya/items/97cf07b9e24f860624dd

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「何を」よりも「誰を」。10年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2

Qiitaの記事に3段階または5段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

あなたは「勘違いまとめ」から、勘違いだと言っていることが勘違いだといくつ見つけられますか。人間の間違い(human error(125))の種類と対策
https://qiita.com/kaizen_nagoya/items/ae391b77fffb098b8fb4

プログラマの「プログラムが書ける」思い込みは強みだ。3つの理由。仮説(168)統計と確率(17) , OSEK(79)
https://qiita.com/kaizen_nagoya/items/bc5dd86e414de402ec29

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

これからの情報伝達手段の在り方について考えてみよう。炎上と便乗。
https://qiita.com/kaizen_nagoya/items/71a09077ac195214f0db

ISO/IEC JTC1 SC7 Software and System Engineering
https://qiita.com/kaizen_nagoya/items/48b43f0f6976a078d907

アクセシビリティの知見を発信しよう!(再び)
https://qiita.com/kaizen_nagoya/items/03457eb9ee74105ee618

統計論及確率論輪講(再び)
https://qiita.com/kaizen_nagoya/items/590874ccfca988e85ea3

読者の心をグッと惹き寄せる7つの魔法
https://qiita.com/kaizen_nagoya/items/b1b5e89bd5c0a211d862

@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

ソースコードで議論しよう。日本語で議論するの止めましょう(あるプログラミング技術の議論報告)
https://qiita.com/kaizen_nagoya/items/8b9811c80f3338c6c0b0

脳内コンパイラの3つの危険
https://qiita.com/kaizen_nagoya/items/7025cf2d7bd9f276e382

心理学の本を読むよりはコンパイラ書いた方がよくね。仮説(34)
https://qiita.com/kaizen_nagoya/items/fa715732cc148e48880e

NASAを超えるつもりがあれば読んでください。
https://qiita.com/kaizen_nagoya/items/e81669f9cb53109157f6

データサイエンティストの気づき!「勉強して仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!!
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07

「ぼくの好きな先生」「人がやらないことをやれ」プログラマになるまで。仮説(37) 
https://qiita.com/kaizen_nagoya/items/53e4bded9fe5f724b3c4

なぜ経済学徒を辞め、計算機屋になったか(経済学部入学前・入学後・卒業後対応) 転職(1)
https://qiita.com/kaizen_nagoya/items/06335a1d24c099733f64

プログラミング言語教育のXYZ。 仮説(52)
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

【24卒向け】9ヶ月後に年収1000万円を目指す。二つの関門と三つの道。
https://qiita.com/kaizen_nagoya/items/fb5bff147193f726ad25

「【25卒向け】Qiita Career Meetup for STUDENT」予習の勧め
https://qiita.com/kaizen_nagoya/items/00eadb8a6e738cb6336f

大学入試不合格でも筆記試験のない大学に入って卒業できる。卒業しなくても博士になれる。
https://qiita.com/kaizen_nagoya/items/74adec99f396d64b5fd5

全世界の不登校の子供たち「博士論文」を書こう。世界子供博士論文遠隔実践中心 安全(99)
https://qiita.com/kaizen_nagoya/items/912d69032c012bcc84f2

小川メソッド 覚え(書きかけ)
https://qiita.com/kaizen_nagoya/items/3593d72eca551742df68

DoCAP(ドゥーキャップ)って何ですか?
https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327

views 20,000越え自己記事一覧
https://qiita.com/kaizen_nagoya/items/58e8bd6450957cdecd81

Views1万越え、もうすぐ1万記事一覧 最近いいねをいただいた213記事
https://qiita.com/kaizen_nagoya/items/d2b805717a92459ce853

関連資料

' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da

' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1

' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e

自己記事一覧

Qiitaで逆リンクを表示しなくなったような気がする。時々、スマフォで表示するとあらわっることがあり、完全に削除したのではなさそう。

4月以降、せっせとリンクリストを作り、統計を取って確率を説明しようとしている。
2025年2月末を目標にしている。

物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

統計(0)一覧
https://qiita.com/kaizen_nagoya/items/80d3b221807e53e88aba

図(0) state, sequence and timing. UML and お絵描き
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f

品質一覧
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

音楽 一覧(0)
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d

@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0

安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

C++ Support(0) 
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53

官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ  ベクタージャパン 
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧 
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧 
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a

小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on my individual experience. It has nothing to do with the organization or business to which I currently belong.

文書履歴(document history)

ver 0.10 初稿 20180610
ver 0.11 一覧追記 参考文献欄追記 20180616

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?