SlideShare a Scribd company logo
1 of 25
Download to read offline
PerlとCと時々Python
@CodeHex
自己紹介
• 本名: 上川 慶
• R大3年
• Perl大好き
• OS大好き
• 最近は自然言語処理に興味あ
り
• エイサーやってます
CとPerlが似てるよね
例えば
#!/usr/bin/env perl
use strict;
use warnings;
print("Hello, Worldn");
#include <stdio.h>
int main()
{
printf("Hello, Worldn");
}
C Perl
結果
Hello, World
printfとprint
あれ print 文が違う?
実は
PerlでもCの関数が使える
#!/usr/bin/env perl
use strict;
use warnings;
for (my $i = 0; $i < 10; $i++)
{
printf(“%d ", $i);
}
#include <stdio.h>
int main()
{
for (int i = 0; i < 10; ++i)
{
printf(“%d ", i);
}
}
C Perl
結果
0 1 2 3 4 5 6 7 8 9
for
#!/usr/bin/env perl
use strict;
use warnings;
my $i = 0;
while ($i++ < 10) {
printf("%d ", $i);
}
#include <stdio.h>
int main()
{
int i = 0;
while (i++ < 10)
{
printf("%d ", i);
}
}
C Perl
結果
1 2 3 4 5 6 7 8 9 10
while
#!/usr/bin/env perl
use strict;
use warnings;
my $i = 0;
do {
printf("%d ", $i);
} while ($i++ < 10);
#include <stdio.h>
int main()
{
int i = 0;
do {
printf("%d ", i);
} while (i++ < 10);
}
C Perl
結果
0 1 2 3 4 5 6 7 8 9 10
do while
すごい似てる!!
#!/usr/bin/env perl
use strict;
use warnings;
my $i = 0;
if ($i == 0) {
printf("Matched %d == 1n", $i);
} elsif ($i == 1) {
printf("Matched %d == 1n", $i);
} else {
printf("Not Matchedn");
}
#include <stdio.h>
int main()
{
int i = 0;
if (i == 0) {
printf("Matched %d == 1n", i);
} else if (i == 1) {
printf("Matched %d == 1n", i);
} else {
printf("Not Matchedn");
}
}
C Perl
結果
Matched 0 == 1
if
C だと else if
Perl だと elsif
#!/usr/bin/perl
use strict;
use warnings;
my $i = 0;
$i == 0 ?
printf("Matched %d == 1n", $i) :
$i == 1 ?
printf("Matched %d == 1n", $i) :
printf("Not Matchedn");
#include <stdio.h>
int main()
{
int i = 0;
i == 0 ?
printf("Matched %d == 1n", i) :
i == 1 ?
printf("Matched %d == 1n", i) :
printf("Not Matchedn");
}
C Perl
結果
Matched 0 == 1
三項演算子
#!/usr/bin/env perl
use strict;
use warnings;
use Switch;
my $i = 0;
switch ($i) {
case 0 {
printf("Matched %d == 1n", $i); last;
}
case 1 {
printf("Matched %d == 1n", $i); last;
}
else {
printf("Not Matchedn”); last;
}
}
#include <stdio.h>
int main()
{
int i = 0;
switch (i) {
case 0:
printf("Matched %d == 1n", i); break;
case 1:
printf("Matched %d == 1n", i); break;
default:
printf("Not Matchedn”); break;
}
}
C Perl
結果
Matched 0 == 1
switch
Perl には given 文がありますが、
そこは割愛しますm(_ _)m
PythonとPerl
#!/usr/bin/env perl
use strict;
use warnings;
my @l = (0, 1, 2, 3, 4, 5);
foreach my $i (@l) {
printf("%d ", $i);
}
#!/usr/bin/env python
l = [0, 1, 2, 3, 4, 5]
for i in l:
print("%d " % i, end="")
Python Perl
結果
0 1 2 3 4 5
for in と foreach
若干似てる(笑)
…
完
まとめ
• CとPerlは文法的に似ている
• Perlで一部のCの関数が使える
• Perlで使える関数のほとんどはPythonでも使える関
数である <- New
Perlを極めると大体の言語使え
る!!
ご静聴ありがとうございました

More Related Content

What's hot

PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
Phpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakadaPhpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakadaJunpei Nakada
 
C++入門?
C++入門?C++入門?
C++入門?tsudaa
 
Quineはじめました
QuineはじめましたQuineはじめました
Quineはじめましたsatos___jp
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたMoriyoshi Koizumi
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみたMori Shingo
 
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体digitalghost
 
C++ tips2 インクリメント編
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編道化師 堂華
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回Yuma Yoshimoto
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編道化師 堂華
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみたfirewood
 
SlowQueryとの戦い
SlowQueryとの戦いSlowQueryとの戦い
SlowQueryとの戦いKen Gotoh
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについてdekosuke
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいdigitalghost
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 

What's hot (20)

#5:プログラミングの基本
#5:プログラミングの基本#5:プログラミングの基本
#5:プログラミングの基本
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
node-perl
node-perlnode-perl
node-perl
 
PHP language update 201211
PHP language update 201211PHP language update 201211
PHP language update 201211
 
Phpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakadaPhpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakada
 
C++入門?
C++入門?C++入門?
C++入門?
 
Quineはじめました
QuineはじめましたQuineはじめました
Quineはじめました
 
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれたよいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
 
C++ tips1 #include編
C++ tips1 #include編C++ tips1 #include編
C++ tips1 #include編
 
C++ tips2 インクリメント編
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみた
 
SlowQueryとの戦い
SlowQueryとの戦いSlowQueryとの戦い
SlowQueryとの戦い
 
Scalamacrosについて
ScalamacrosについてScalamacrosについて
Scalamacrosについて
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 

Viewers also liked

初見では読みづらいPerl
初見では読みづらいPerl初見では読みづらいPerl
初見では読みづらいPerlKei Kamikawa
 
作ったものを見せたかった話
作ったものを見せたかった話作ったものを見せたかった話
作ったものを見せたかった話Kei Kamikawa
 
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015Shunsuke Kozawa
 
The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
How to create/improve OSS products and its community
How to create/improve OSS products and its communityHow to create/improve OSS products and its community
How to create/improve OSS products and its communitySATOSHI TAGOMORI
 
ステージング環境のつくりかた
ステージング環境のつくりかたステージング環境のつくりかた
ステージング環境のつくりかたYuki Ishikawa
 
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPANPodcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPANYusuke Wada
 

Viewers also liked (10)

Yomitanpm 6
Yomitanpm 6Yomitanpm 6
Yomitanpm 6
 
Okinawapm#3
Okinawapm#3Okinawapm#3
Okinawapm#3
 
初見では読みづらいPerl
初見では読みづらいPerl初見では読みづらいPerl
初見では読みづらいPerl
 
作ったものを見せたかった話
作ったものを見せたかった話作ったものを見せたかった話
作ったものを見せたかった話
 
それPerlでできるよ
それPerlでできるよそれPerlでできるよ
それPerlでできるよ
 
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
How to create/improve OSS products and its community
How to create/improve OSS products and its communityHow to create/improve OSS products and its community
How to create/improve OSS products and its community
 
ステージング環境のつくりかた
ステージング環境のつくりかたステージング環境のつくりかた
ステージング環境のつくりかた
 
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPANPodcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
 

Similar to Okinawapm #1

プログラマ講習第3回
プログラマ講習第3回プログラマ講習第3回
プログラマ講習第3回Yuma Yoshimoto
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミングlestrrat
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
基礎からC言語 part1
基礎からC言語 part1基礎からC言語 part1
基礎からC言語 part1Hiroyuki Ito
 
プログラムの読み方
プログラムの読み方プログラムの読み方
プログラムの読み方Takuya Otani
 
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」Hiro H.
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けてonotchi_
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るMasashi Shinbara
 
はじめてのPHP
はじめてのPHPはじめてのPHP
はじめてのPHPGo Tanaka
 
2017年夏のPerl
2017年夏のPerl2017年夏のPerl
2017年夏のPerlcharsbar
 

Similar to Okinawapm #1 (20)

プログラマ講習第3回
プログラマ講習第3回プログラマ講習第3回
プログラマ講習第3回
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミング
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
講座C入門
講座C入門講座C入門
講座C入門
 
基礎からC言語 part1
基礎からC言語 part1基礎からC言語 part1
基礎からC言語 part1
 
プログラムの読み方
プログラムの読み方プログラムの読み方
プログラムの読み方
 
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
Rust使ってみた
Rust使ってみたRust使ってみた
Rust使ってみた
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けて
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
はじめてのPHP
はじめてのPHPはじめてのPHP
はじめてのPHP
 
PHP 入門
PHP 入門PHP 入門
PHP 入門
 
C-langage
C-langageC-langage
C-langage
 
2017年夏のPerl
2017年夏のPerl2017年夏のPerl
2017年夏のPerl
 
URLで遊ぼう
URLで遊ぼうURLで遊ぼう
URLで遊ぼう
 

More from Kei Kamikawa

JWT を使ってみよう
JWT を使ってみようJWT を使ってみよう
JWT を使ってみようKei Kamikawa
 
技術を身につける技術
技術を身につける技術技術を身につける技術
技術を身につける技術Kei Kamikawa
 
俺はこうして Go の CLI を作っている
俺はこうして Go の CLI を作っている俺はこうして Go の CLI を作っている
俺はこうして Go の CLI を作っているKei Kamikawa
 
我輩が作ったものを淡々と
我輩が作ったものを淡々と我輩が作ったものを淡々と
我輩が作ったものを淡々とKei Kamikawa
 
grep.metacpan.orgのススメ
grep.metacpan.orgのススメgrep.metacpan.orgのススメ
grep.metacpan.orgのススメKei Kamikawa
 
XS を始めよう!
XS を始めよう!XS を始めよう!
XS を始めよう!Kei Kamikawa
 
Yomitan.pmに参加しようよ
Yomitan.pmに参加しようよYomitan.pmに参加しようよ
Yomitan.pmに参加しようよKei Kamikawa
 

More from Kei Kamikawa (7)

JWT を使ってみよう
JWT を使ってみようJWT を使ってみよう
JWT を使ってみよう
 
技術を身につける技術
技術を身につける技術技術を身につける技術
技術を身につける技術
 
俺はこうして Go の CLI を作っている
俺はこうして Go の CLI を作っている俺はこうして Go の CLI を作っている
俺はこうして Go の CLI を作っている
 
我輩が作ったものを淡々と
我輩が作ったものを淡々と我輩が作ったものを淡々と
我輩が作ったものを淡々と
 
grep.metacpan.orgのススメ
grep.metacpan.orgのススメgrep.metacpan.orgのススメ
grep.metacpan.orgのススメ
 
XS を始めよう!
XS を始めよう!XS を始めよう!
XS を始めよう!
 
Yomitan.pmに参加しようよ
Yomitan.pmに参加しようよYomitan.pmに参加しようよ
Yomitan.pmに参加しようよ
 

Okinawapm #1