プログラマの書くコードには書き手の性格が現れると言われています。「Hello world」等の数行のコードを書くだけでも、生まれ育った環境(Windows, Mac, オープンソースコミュニティ, ...)や言語経験(PHP, Python, Lisp)、書き手の性格によって色々な違いが出ます。
今回はそんなmain関数の複数の書き方や字下げスタイルを紹介していきます。
ビギナー
int main() {
printf("Shop %d\n", 99);
return 0;
}
インデントにタブを使う。
意識高い系
int main(void) {
printf("Shop %d\n", 99);
return 0;
}
インデントにスペースを使い始める。
意識低い系
int main(){
printf("Shop%d",99);
return 0;
}
インデントすら面倒になる。
2スペース派
int main() {
printf("Shop %d\n", 99);
return 0;
}
3スペース派
int main() {
printf("Shop %d\n", 99);
return 0;
}
1スペース派
int main() {
printf("Shop %d\n", 99);
return 0;
}
ミニマリスト
int main() {
puts("Shop 99");
}
ニワカ
void main() {
puts("Shop 99");
}
社会不適合者
main(){puts("Shop99");}
神経質
int main(int argc, const char *argv[]) {
int i = 99;
printf("Shop %d\n", (int) i);
return (EXIT_SUCCESS);
}
関わっちゃいけないタイプ
int/**/main(){printf("Shop%c%d\n",32,99);return(0);}
ワンライナー。空白なし。
面倒くさいタイプ
int main(void) { return printf("Shop 99\n") - 8; }
プログラミング言語マニア
extern int main() {
return puts("Shop 99"), 0;
}
あかん奴
int32_t main(...) {
return puts("Shop 99"), 0;
}
Unixユーザ
int main(int argc, char *argv[], char *envp[]) {
printf("Shop %d\n", 99);
return 0;
}
Macユーザ
int main(int argc, char * argv[], char * envp[], char * apple[]) {
NSLog(@"Shop %d\n", 99);
return 0;
}
Appleユーザ
Windowsユーザ
int main(int argc, char *argv[])
{
printf("Shop %d", 99);
return 0;
}
Linuxコントリビューター
int main(int argc,
char *argv[])
{
int v = 99;
printf("Shop %d\n", v);
return 0;
}
PHPユーザ
int main( int argc, char *argv[] ){
printf ( "Shop %d\n", 99 );
return 0;
}
Javaユーザ
int main(int argc, char *args[]){
if (*args != NULL) {
if (argc > 0) {
printf("Shop %d\n", 99);
}
}
}
JDK (src.zip)
C++ユーザ
int main(int argc, char* argv[]) {
std::cout << "Shop " << 99 << std::endl;
}
C++マニア
auto main() -> int {
for (char i : {83,104,111,112,32,57,57,10})
std::cout << i;
}
C++界隈の怖いお兄さん達
int
main(int,
char const**)
{
return [] () -> int {
std::operator << ( std::cout, "Shop 99\n" ) ;
return 0 ;
}() ;
}
目を合わせてはいけない。
ラムダ信教者
int main() {
std::vector<int> a = {9, 9};
for_each(begin(a), end(a), ([](auto f, auto v) {
return f(v), f;
})([](auto v) {
std::cout << v;
}, "Shop "))("\n");
}
Lisper
(main)() {
(puts (+ "Shop " "99")) ; }
(main)(int car, const char *list[]) {
(* list = (+ "Shop " "99")) ; http://marycore.jp/
(fwrite (* (+ list),
(sizeof (* (* list))),
(sizeof (& car)),
(- (sizeof (+ 'eq #')),
(stdout)))) ; }
格好いい。
蛇使い
int main(int argc) {
if (argc > 0)
printf("Shop "),
printf("%d", 99) ; }
Python言語ユーザ(Pythonista)。
マクロ使い
#define hello int main() { puts("Shop 99") ; }
hello
Pascalユーザ
#define begin {
#define end }
int main() begin
puts("Shop 99");
end
Rubyユーザ
#undef begin
#define do {
Swiftユーザ
#define func auto
#define print(s) puts(s);
func main() -> int {
print("Shop 99")
}
わかってる感出す人
#include "/home/me/shop99.c"
トライグラフ
int main(int argc, char *argv??(??)) ??<
printf("Shop %d??/n", 99);
??>
ひねくれ者
main() <% puts("Shop 99"); %>
変態
// $ ./a.out Shop 99
main(c,v)char**v;{return~-c--?(main(c,v)*printf("%s%c",*(c+v),~-c?10:32)):0;}
サイコパス
typeof(printf("Shop%d",99))(main)(typeof(99)aa,...){
return(printf("Shop%d",aa=99)-(typeof(main(99)))sizeof(uint64_t));}
おっさん・古参・仙人
main(argv, argv, envp)
int argc;
char **argv;
char **envp;
{
int i;
i = 99;
printf("Shop %d\n", i);
exit(EXIT_SUCCESS);
}
昔はこういうコードを書くと報酬が上がった。行数が多いプログラムの方が沢山お金がもらえた時代があった。
ヨーダ
int main(int argc) {
if (1 == argc) {
puts("99 Shop");
}
}
条件式を書く際に定数を左側に記述する「ヨーダ記法」というスタイル。
ヨーダ記法とは ─ 定数を左辺に記述するメリットと流行らない理由
K&R・スタイル
main(argc, argv)
int argc;
char *argv[];
{
int i;
if (argc > 0)
i = 99;
for ( ; i == 99; ) {
printf("Shop %d", i);
i = 0;
}
return 0;
}
BSD/オールマン・スタイル
int main()
{
printf("Shop %d", 99);
return 0;
}
Windows系の開発者が使うことで有名なスタイル。罪深きオールマンのスタイル。
オールマン絶対使いたくないマン・スタイル
int main(int argc,
char *argv[],
char *envp[]
) {
if (argc > 0 &&
argc < 9
) {
puts("Shop 99");
}
else {
printf("Shop 99\n");
}
}
GNU信者
int main()
{
puts ("Shop 99");
}
教祖リチャード・ストールマンのスタイル。
ホワイトスミスの親戚
int main()
{
puts("Shop 99");
}
Bannerスタイル
int main() {
puts("Shop 99");
}
Picoスタイル
main()
{ int i = 99;
printf("Shop %d", i); }
オリジナリティを求めるタイプ
int main()
{
puts("Shop 99");
}
自我が強いタイプ
int main()
{
puts("Shop 99");
}
通称「BSDスタイルなら1スペースインデントでも結構いけるんじゃね?」スタイル。
そっとしておかないとやばいタイプ
int main(int argc) {
if (0 < argc) {
puts("Shop 99");
} // if (0 < argc)
} // int main(int argc)
2倍速再生とか親指シフトとか使うタイプ。
こんにちは世界
int main() {
puts("Hello world");
}
ハローワールド。
地獄の世界
int main() {
puts("Hell world");
}
ヘルレイザー。
おまけ
( ´□ω□)つ int main(int argc, char *argv[])
( ´・ω・)つ int main(void)
(; ^ω^)つ main()