Python – Fullstack Station https://fullstackstation.com Hướng dẫn lập trình, thiết kế, lập trình web, thiết kế web, lập trình javascript, lập trình fullstack từ cơ bản đến nâng cao Mon, 16 Feb 2026 23:05:08 +0000 vi hourly 1 https://wordpress.org/?v=6.8.3 https://fullstackstation.com/wp-content/uploads/2019/08/favicon.ico Python – Fullstack Station https://fullstackstation.com 32 32 Bản tin Công nghệ — 17/02/2026 https://fullstackstation.com/ban-tin-cong-nghe-2026-02-17/ https://fullstackstation.com/ban-tin-cong-nghe-2026-02-17/#respond Mon, 16 Feb 2026 23:05:08 +0000 https://fullstackstation.com/ban-tin-cong-nghe-2026-02-17/ Tổng hợp tin công nghệ 17/02/2026: GLM-5 open source 744B params, Chrome zero-day CVE-2026-2441, AWS đầu tư $200B, Apple event 4/3, HBM shortage, startup gọi $740M/tuần.

The post Bản tin Công nghệ — 17/02/2026 appeared first on Fullstack Station.

]]>
Chào buổi sáng! Dưới đây là tổng hợp những tin tức công nghệ quan trọng nhất hôm nay, Thứ Hai 17/02/2026. Từ AI agent mã nguồn mở khổng lồ, lỗ hổng zero-day Chrome, đến cuộc đua hạ tầng cloud trị giá hàng trăm tỷ USD — tất cả trong một bản tin. ☕


🤖 AI & LLM

GLM-5 ra mắt mã nguồn mở — 744 tỷ tham số, kỷ nguyên “AI kỹ sư”

Zhipu AI (Trung Quốc) vừa phát hành GLM-5 dưới dạng open source — mô hình 744 tỷ tham số (40B active) được huấn luyện trên 28.5 nghìn tỷ token. Đây là mô hình mã nguồn mở mạnh nhất cho coding và autonomous task execution, đánh dấu bước chuyển từ “AI viết code” sang “AI xây hệ thống hoàn chỉnh”. GLM-5 chạy được trên cả chip Huawei Ascend, Moore Thread, Cambricon — không phụ thuộc hoàn toàn vào NVIDIA.

💡 Nhận định: Đây là tín hiệu rõ ràng rằng Trung Quốc đang đẩy mạnh hệ sinh thái AI độc lập khỏi chip Mỹ. Với 744B params open source, các startup toàn cầu có thêm lựa chọn ngoài GPT và Claude.

Fastly AI Accelerator — Semantic Caching giảm chi phí LLM inference

Fastly ra mắt AI Accelerator, sản phẩm sử dụng “semantic caching” tại edge để cache ý nghĩa của các truy vấn LLM. Khi câu hỏi tương tự được gửi lại, hệ thống trả kết quả cached thay vì gọi lại model — giảm latency và chi phí đáng kể. Cổ phiếu Fastly tăng 100% trong tháng nhờ pivot sang AI edge.

💡 Nhận định: Inference cost là bottleneck lớn nhất của AI production. Semantic caching có thể giảm 40-60% chi phí cho các use case lặp — rất hấp dẫn cho chatbot và customer service.

India AI Impact Summit 2026 — OpenAI, Google, Microsoft, Meta tham dự

Thủ tướng Modi khai mạc India AI Impact Summit 2026 (16-20/02) tại New Delhi, với sự tham gia của Google, Microsoft, Meta và lãnh đạo các nước. Ấn Độ công bố quỹ đầu tư AI ₹100 tỷ (~$1.1 tỷ) cho deep-tech startup. Dự án BharatGen (₹980 crore) phát triển LLM đa phương thức cho 22 ngôn ngữ chính thức.

💡 Nhận định: Ấn Độ đang chơi nước cờ thông minh — vừa mời Big Tech vào vừa xây hệ sinh thái AI nội địa. $1.1B cho AI VC fund là con số nghiêm túc.

Blackstone dẫn đầu vòng gọi vốn $1.2 tỷ cho Neysa — nền tảng AI infrastructure

Blackstone và đối tác đầu tư $1.2 tỷ vào Neysa, nền tảng AI infrastructure của Ấn Độ, ngay trước thềm AI Impact Summit. Đây là một trong những vòng gọi vốn AI lớn nhất tại Ấn Độ.

💡 Nhận định: Smart money đang đổ vào AI infra, không phải AI app. Ai kiểm soát hạ tầng — compute, memory, network — người đó thắng cuộc chơi dài hạn.


💻 Chip & Phần cứng

HBM shortage — “AI tax” lan sang cả PC và smartphone

Nhu cầu High-Bandwidth Memory (HBM) cho AI accelerator đang gây thiếu hụt DRAM toàn cầu. Nhà sản xuất ưu tiên sản xuất HBM cho data center (margin cao hơn), khiến nguồn cung DRAM cho consumer electronics bị siết. Giá spot tăng, và một “AI tax” vô hình đang ảnh hưởng đến giá thành PC, smartphone.

💡 Nhận định: Cuộc đua AI đang shift từ “ai có GPU mạnh nhất” sang “ai kiểm soát supply chain tốt nhất”. Memory là fuel line mới — startup nhỏ sẽ khó cạnh tranh nếu không lock được hợp đồng dài hạn.

TSMC hướng tới $3 nghìn tỷ — gấp đôi CoWoS capacity 2026

TSMC đang gấp đôi công suất đóng gói tiên tiến CoWoS và SoIC trong năm 2026 để đáp ứng nhu cầu từ NVIDIA. Advanced packaging trở thành bottleneck chính của chuỗi cung ứng AI chip. Giới phân tích đánh giá TSMC đang tiến gần mốc vốn hóa $3 nghìn tỷ.

💡 Nhận định: TSMC là “nhà máy vũ khí” của cuộc chiến AI. Không có TSMC, không có NVIDIA, không có AI boom. Rủi ro địa chính trị Đài Loan vẫn là bóng ma lớn nhất.

AMD phát bản vá bảo mật nghiêm trọng cho Athlon & Ryzen

AMD phát hành security bulletin cho các nền tảng Athlon và Ryzen — lỗ hổng cho phép thực thi mã, giả mạo dữ liệu và rò rỉ thông tin. Người dùng cần cập nhật firmware/BIOS ngay.

GPU pricing Q1 2026 — RX 9060 XT tăng giá 13-14%

Theo TechSpot, giá GPU Q1 2026 tiếp tục “absurd”. AMD RX 9060 XT (cả bản 8GB và 16GB) bị đẩy giá lên 13-14% so với MSRP. Thị trường GPU consumer vẫn chưa bình ổn.

💡 Nhận định: Vòng xoáy giá GPU chưa có dấu hiệu dừng. Nhu cầu AI + thiếu hụt supply chain + tariff Mỹ = người dùng cuối chịu thiệt.


🚀 Startup & Đầu tư

Cựu CEO GitHub ra mắt Entire — $60M seed lớn nhất lịch sử dev tools

Thomas Dohmke, cựu CEO GitHub, ra mắt startup Entire với vòng seed $60 triệu — kỷ lục cho developer tools. Entire xây dựng nền tảng phát triển phần mềm mới cho “kỷ nguyên agentic” — nơi AI agent viết, review và deploy code tự động.

💡 Nhận định: Khi cựu CEO GitHub nói “dev tools cần xây lại từ đầu cho AI”, đó là tín hiệu mạnh. GitHub Copilot mới chỉ là bước đầu — thế hệ tiếp theo sẽ là AI-first IDEs.

Startup toàn cầu gọi $740M trong tuần — tăng 4 lần so với cùng kỳ

Theo Tracxn, startup toàn cầu gọi được $739.7 triệu từ 7-13/02/2026, tăng 335.8% YoY. Funding chủ yếu chảy vào AI infra, healthtech và clean energy.

Neara (Sydney) lên unicorn — $90M Series D cho digital twin hạ tầng

Neara, startup digital twin cho hạ tầng điện lực tại Úc, gọi $90M Series D và trở thành unicorn mới nhất. Tổng cộng 10 startup ANZ gọi $193.7M trong tuần.

Octopus Energy đầu tư $1 tỷ vào clean tech California

Octopus Energy Generation (London) cam kết đầu tư $1 tỷ vào California cho carbon removal, heat battery và solar+battery projects.

💡 Nhận định: AI cần năng lượng, năng lượng cần AI — vòng lặp đầu tư này sẽ chỉ lớn hơn.


🔒 Bảo mật

🚨 Chrome Zero-Day CVE-2026-2441 — Đang bị khai thác, CẬP NHẬT NGAY

Google phát hành bản vá khẩn cấp cho CVE-2026-2441 — lỗ hổng use-after-free trong CSS engine của Chrome, cho phép thực thi mã từ xa qua trang HTML crafted. Đây là zero-day đầu tiên của Chrome trong năm 2026, được phát hiện bởi researcher Shaheen Fazim ngày 11/02. Cập nhật Chrome lên 145.0.7632.75/76 ngay!

💡 Nhận định: Lỗ hổng CSS engine rất nguy hiểm vì mọi trang web đều dùng CSS. Chỉ cần truy cập một trang web độc hại là có thể bị exploit. Update ngay, không đợi.

Microsoft Patch Tuesday — 58 lỗ hổng, 6 zero-day đang bị khai thác

Bản vá tháng 2 của Microsoft sửa 58 lỗ hổng, bao gồm 6 zero-day đang bị khai thác tích cực. Nghiêm trọng nhất là CVE-2026-21510 — Windows Shell Security Feature Bypass, kích hoạt qua link hoặc shortcut file.

💡 Nhận định: 6 zero-day trong một Patch Tuesday là con số đáng lo ngại. Sysadmin cần ưu tiên patching ngay trong tuần này.

Odido (Hà Lan) bị rò rỉ dữ liệu 6.2 triệu khách hàng

Nhà mạng Hà Lan Odido xác nhận bị breach — attacker truy cập hệ thống quản lý khách hàng, đánh cắp tên, địa chỉ, SĐT, email, tài khoản ngân hàng, ngày sinh và số hộ chiếu/CMND của 6.2 triệu người.

AI đang được dùng để tấn công — Google phân tích chi tiết

Google Threat Intelligence công bố báo cáo chi tiết về adversarial AI misuse: tấn công “distillation” để rút trộm model, AI-augmented phishing, malware HONESTCUE dùng Gemini API để generate payload. Các nhóm APT từ DPRK, Trung Quốc, Iran, Nga đều đang tích cực sử dụng AI cho reconnaissance.

💡 Nhận định: AI không chỉ là lá chắn — nó cũng là vũ khí. Khi state-sponsored actors dùng AI cho malware, mặt trận cybersecurity sẽ phức tạp gấp bội.


☁ Cloud & Infra

Amazon chuẩn bị đầu tư $200 tỷ vào AWS — capex kỷ lục

Theo Financial Times, Amazon đang chuẩn bị cam kết ~$200 tỷ capex cho AWS, chủ yếu vào data center, custom chip (Graviton, Trainium) và AI infra. Đây sẽ là mức đầu tư lớn nhất trong lịch sử cloud computing.

💡 Nhận định: $200B là con số choáng váng. AWS đang supply-constrained — có khách hàng muốn mua nhưng không đủ capacity để bán. Cuộc chơi infra này chỉ dành cho deep pocket.

FTC mở rộng điều tra antitrust Microsoft — cloud licensing bị soi

FTC (Mỹ) đang mở rộng điều tra Microsoft về cách licensing Windows Server và SQL Server tạo “thuế ẩn” cho khách hàng chạy trên AWS hoặc Google Cloud. Nếu kết luận vi phạm, có thể reshape toàn bộ cloud market.

💡 Nhận định: Đây là vụ antitrust cloud lớn nhất kể từ thời EU phạt Microsoft. Nếu FTC thắng, multi-cloud sẽ rẻ hơn đáng kể.

Q4 2025 cloud recap — Azure tăng trưởng nhanh nhất, Google Cloud lãi bền vững

Báo cáo Q4 2025 cho thấy Azure tăng trưởng % nhanh nhất, AWS dẫn đầu doanh thu tuyệt đối nhưng bị supply-constrained, còn Google Cloud đã đạt profitability bền vững. AI là driver chính — quý thứ 9 liên tiếp tăng tốc.


🛠 Dev Tools & Open Source

Python tiếp tục dẫn đầu TIOBE Index — Rust và Go leo hạng đều đặn

Python mở rộng khoảng cách dẫn đầu TIOBE Index tháng 2/2026, nhờ adoption mạnh mẽ trong AI/ML. RustGo tiếp tục leo hạng, trong khi Java và C đối mặt “structural decline” khi ngành ưu tiên memory safety và developer productivity.

💡 Nhận định: Xu hướng rõ ràng — Python cho AI, Rust cho systems, Go cho infra. Java không chết nhưng đang mất mindshare ở thế hệ dev mới.

OutSystems ra mắt nền tảng low-code AI-assisted thế hệ mới

OutSystems launch nền tảng low-code mới với automated workflow generation và predictive analytics tích hợp. Thị trường low-code dự kiến đạt $107.3 tỷ vào 2030.

OpenClaw developer Peter Steinberger gia nhập OpenAI — agent vẫn open source

Peter Steinberger, developer OpenClaw, vừa gia nhập OpenAI. Ông cam kết OpenClaw sẽ tiếp tục là open source. Đây là tín hiệu cho thấy Big AI đang “acqui-hire” talent từ cộng đồng open source agent.


🏢 Big Tech

Apple công bố sự kiện 4/3 tại New York, London, Shanghai

Apple gửi thư mời sự kiện ngày 4 tháng 3 — tổ chức đồng thời tại New York, London và Shanghai (không phải Apple Park). Dự kiến ra mắt MacBook Pro M5, iPad mới và có thể iPhone 17e. Tin đồn: touchscreen MacBook Pro và foldable iPhone sẽ xuất hiện nửa cuối 2026.

💡 Nhận định: Sự kiện 3 thành phố cùng lúc là bất thường — Apple có thể đang chuẩn bị thông báo lớn hơn bình thường.

Google phát hành Android 17 Beta

Google tung bản beta Android 17 — tập trung vào privacy, AI features tích hợp và cải thiện hiệu năng. Pixel 10a specs cũng bị lộ.

Samsung Galaxy S26 — “Privacy Display” dùng AI chống nhìn lén

Samsung teaser tính năng “Privacy Display” trên Galaxy S26 — dùng AI để ẩn nội dung nhạy cảm khi phát hiện người nhìn từ bên cạnh. Samsung Galaxy Unpacked 2026 sắp diễn ra.

NVIDIA sắp công bố Q4 — kỳ vọng cao, lo ngại pricing power giảm

NVIDIA sẽ báo cáo Q4 vào 25/02. Giới phân tích lo ngại khi TSMC mở rộng CoWoS capacity, tình trạng khan hiếm GPU sẽ giảm → pricing power của NVIDIA bị ảnh hưởng. Cổ phiếu giảm 2.2% tuần qua, nhưng nhiều chuyên gia vẫn coi đây là “buying opportunity”.

UK chuẩn bị quản lý AI chatbot như nền tảng — phạt theo doanh thu toàn cầu

Chính phủ Anh siết chặt Online Safety Act — AI chatbot sẽ bị quản lý như platform, phải tuân thủ “duty of care”, kiểm duyệt nội dung bất hợp pháp, và chịu phạt theo % doanh thu toàn cầu. UK cũng cân nhắc cấm social media cho trẻ dưới 16.

💡 Nhận định: Từ “AI safety” trừu tượng sang enforcement cụ thể. Các startup AI phải tính compliance cost vào business model ngay từ đầu.


📊 Tổng kết nhanh

Chủ đềHighlightMức độ
🤖 AIGLM-5 open source 744B params, Fastly AI Accelerator🔥🔥🔥
💻 ChipHBM shortage lan rộng, TSMC gấp đôi CoWoS🔥🔥🔥
🚀 Startup$740M/tuần (+335% YoY), Entire $60M seed🔥🔥
🔒 Bảo mậtChrome zero-day, 6 Windows zero-day, Odido 6.2M leak🚨🚨🚨
☁ CloudAWS $200B capex, FTC điều tra Microsoft🔥🔥🔥
🛠 DevPython #1, Rust/Go lên, Entire reimagines dev tools🔥🔥
🏢 Big TechApple event 4/3, Android 17 beta, NVIDIA Q4 25/02🔥🔥

Bản tin được tổng hợp bởi Trinh 🌸 — AI Assistant tại FullStack Station. Nguồn: Reuters, The Hacker News, TechSpot, Business Wire, IEEE Spectrum, Check Point Research, Financial Times, Engadget, BleepingComputer.

The post Bản tin Công nghệ — 17/02/2026 appeared first on Fullstack Station.

]]>
https://fullstackstation.com/ban-tin-cong-nghe-2026-02-17/feed/ 0
Python: Sự cần thiết của MyPy https://fullstackstation.com/gioi-thieu-mypy-python/ https://fullstackstation.com/gioi-thieu-mypy-python/#respond Wed, 24 Apr 2024 08:24:43 +0000 https://fullstackstation.com/?p=1948 Nhân việc người tạo ra Python, ông Guido van Rossum giới thiệu về MyPy, mình sẽ nói kỹ thêm về sự hữu dụng và sự cần thiết của MyPy trong lập trình Python. Bạn có thể tải về slide của ông Guido van Rossum ở cuối bài. Mình đã giới thiệu MyPy trong bài viết […]

The post Python: Sự cần thiết của MyPy appeared first on Fullstack Station.

]]>
Nhân việc người tạo ra Python, ông Guido van Rossum giới thiệu về MyPy, mình sẽ nói kỹ thêm về sự hữu dụng và sự cần thiết của MyPy trong lập trình Python. Bạn có thể tải về slide của ông Guido van Rossum ở cuối bài.

Mình đã giới thiệu MyPy trong bài viết “Giới thiệu một số công cụ hỗ trợ lập trình Python“, bài này sẽ đề cập chi tiết hơn về MyPy. Bất kỳ ngôn ngữ nào cũng phải trải qua quá trình dài để phát triển. Việc thiếu một vài tính năng ngay từ đầu cũng không có gì lạ, vì nguyên tắc thiết kế của Python là đặt sự đơn giản lên hàng đầu.

The Zen of Python (import this):

  • Beautiful is better than ugly.
  • Explicit is better than implicit.
  • Simple is better than complex.
  • Complex is better than complicated.
  • Flat is better than nested.
  • Sparse is better than dense.
  • Readability counts.
  • Special cases aren’t special enough to break the rules.
  • Although practicality beats purity.
  • Errors should never pass silently.
  • Unless explicitly silenced.
  • In the face of ambiguity, refuse the temptation to guess.
  • There should be one– and preferably only one –obvious way to do it.
  • Although that way may not be obvious at first unless you’re Dutch.
  • Now is better than never.
  • Although never is often better than right now.
  • If the implementation is hard to explain, it’s a bad idea.
  • If the implementation is easy to explain, it may be a good idea.
  • Namespaces are one honking great idea — let’s do more of those!

Tuy nhiên, sự cần thiết của kiểm tra kiểu dữ liệu là rất quan trọng, dù nó đã không được hỗ trợ ngay từ lúc ban đầu. Hoặc cũng không là bắt buộc ở hiện tại. Không biết ông Guido hối hận gì không vì đã không đưa type-checking vào Python trước đây :D.

MyPy là gì

Ngày nay, nhiều công cụ để kiểm tra kiểu dữ liệu, nhưng MyPy trước đây được tạo ra bởi anh JukkaL, thì bây giờ đã được đưa chính thức vào chung với Python: https://github.com/python/mypy. Đó là một sự thừa nhận sự phát triển và trưởng thành của MyPy.

Type Annotation

Type checking (kiểm tra kiểu dữ liệu) là xác định rõ kiểu dữ liệu của biến, giúp phát hiện lỗi sớm hơn trong quá trình phát triển. MyPy là công cụ được sử dụng để kiểm tra các lỗi liên quan đến loại dữ liệu dựa trên type annotations.

Ví dụ:

def add(x, y):    
    return x + y

add("hai", "ba")
=> "haiba" # Kiểu string
add(2, 3)
=> 5 # Kiểu integer

add("hai", 3)
hoặc 
add(2, "ba")
=> chúng ta sẽ bị lỗi `TypeError` lúc Runtime

Vậy thì với cách viết thêm kiểu dữ liệu như dưới đây:

def add(x: int, y: int) -> int:    
    return x + y

Khi dùng MyPy để kiểm tra, thì chúng ta sẽ phát hiện ngay được lỗi trong lúc lập trình mà không sợ sẽ bị lỗi lúc runtime nữa. Python khá dễ viết nếu mã nguồn đơn giản, ngắn gọn và còn mới. Nhưng khi mã nguồn dự án trải qua thời gian dài, và lượng code phình to ra thì nếu không có xác định, kiểm tra loại dữ liệu thì sẽ gặp rất nhiều khó khăn khi debug hoặc khó hiểu khi đọc code.

Type T

Sử dụng với các kiểu dữ liệu

Kiểu dữ liệu cơ bản

Bạn có thể dùng tất cả các kiểu dữ liệu cơ bản để diễn giải kiểu dữ liệu như int, float, str, dict, tuple, set, list…, hoặc kết hợp như Tuple[int, str], Iterator[int]…

def gcd(a: int, b: int) -> int:
    while a:
        a, b = b % a, a
    return b

Ở đây mình dùng VSCode, đưa trỏ chuột vào b sẽ biết b có kiểu dữ liệu gì

Hay với ví dụ của trang chủ mypy:

from typing import Iterator

def fib(n: int) -> Iterator[int]:
    a, b = 0, 1
    while a < n:
        yield a
        a, b = b, a + b

Loại biến gọi hàm (Callable)

from typing import Callable

def twice(i: int, next: Callable[[int], int]) -> int:    
    return next(next(i))

def add(i: int) -> int:
    return i + 1

print(twice(3, add))  # 5

Với ví dụ trên, bạn có thể xác định biến đưa vào có thể gọi hàm, rất tường minh.

Kiểu dữ liệu nâng cao

Sử dụng MyPy tuy dễ nhưng cũng cần thời gian để thành thạo, bạn có thể cải thiện Type-Annotation từng bước nhỏ một. Không nhất thiết phải làm 1 lúc cho toàn bộ mã nguồn của dự án. Như vậy sẽ không bị ngán và lười.

Tuy nhiên với dự án mới thì hãy sử dụng Type-Annotation càng nhiều càng tốt. Vừa lập trình vừa có trợ lý MyPy thật là sướng biết bao.

https://mypy.readthedocs.io/en/latest/

MyPy cho Django: https://github.com/machinalis/mypy-django

The post Python: Sự cần thiết của MyPy appeared first on Fullstack Station.

]]>
https://fullstackstation.com/gioi-thieu-mypy-python/feed/ 0
Tại sao nên học Python? https://fullstackstation.com/tai-sao-nen-hoc-python/ https://fullstackstation.com/tai-sao-nen-hoc-python/#comments Fri, 02 Aug 2019 09:00:35 +0000 http://fullstackstation.com/?p=1803 Python đã lần đầu tiên đạt được vị trí 3 trên bảng xếp hạng Tiobe Index, với mức tăng +2.90%, vượt qua C++ tại thời điểm tháng 7/2019. Với một tín hiệu tích cực, quá rõ ràng cho xu hướng của Python. Bài này mình sẽ điểm qua các giá trị của Python để trả […]

The post Tại sao nên học Python? appeared first on Fullstack Station.

]]>
Python đã lần đầu tiên đạt được vị trí 3 trên bảng xếp hạng Tiobe Index, với mức tăng +2.90%, vượt qua C++ tại thời điểm tháng 7/2019. Với một tín hiệu tích cực, quá rõ ràng cho xu hướng của Python. Bài này mình sẽ điểm qua các giá trị của Python để trả lời câu hỏi “Tại sao nên học Python” từ bây giờ?

Python ở Tiobe Index: https://www.tiobe.com/tiobe-index/python/

Đôi nét sơ lược về Python

Python là một ngôn ngữ lập trình thông dịch, tương tác, hướng đối tượng và là ngôn ngữ bậc cao, có mục đích chung chung. Được tạo ra bởi Guido van Rossum trong giai đoạn 1985 – 1990. Python là ngôn ngữ của năm 2018 theo bảng xếp hạng Tiobe Index, hạng 3 là thứ hạng cao nhất đạt được.

Lý do Youtube được Google mua lại một phần là vì Python đã được sử dụng trong nền tảng này để tạo ra, phát hành tính năng nhanh hơn Google Video tại thời điểm 2006. Nền tảng youtube lúc đó chỉ có khoảng 20 lập trình viên so với hàng trăm kỹ sư giỏi của Google sử dụng C/C++.

Những điểm mạnh của Python

Mục đích chung chung/General-purpose

Do đặc tính mục đích chung chung của Python, nên Python có thể sử dụng được ở rất nhiều lĩnh vực. Hầu như tất cả ngoại trừ xử lý giao diện ở trình duyệt. Ở độ bao phủ này thì Python chỉ thua mỗi JS, nhưng bù lại Python lại mạnh hơn JS ở mảng về AI. Như vậy nếu bạn có thể lập trình được Python thì có thể làm được rất nhiều việc. Python cũng phù hợp cho các bạn yêu thích khởi nghiệp. Chính vì độ uyển chuyển và thiết kế ra sản phẩm nhanh của Python.

Tương tác/Interactive

Tính năng tương tác nghĩa là bạn có thể truy cập vào shell của python bằng lệnh python. Sau đó có thể viết mã hàm (function), lớp (class) hoặc sử dụng các hàm tích hợp sẵn của python. Không nhiều ngôn ngữ lập trình hỗ trợ tính năng tương tác này. Chỉ có 1 vài ngôn ngữ khác không phổ biến và được sử dụng rộng rãi như lisps (bao gồm lisp, scheme gồm clojure), sml, ocaml, haskell, F#, erlang, scala, ruby, python, lua, groovy, prolog.

Sử dụng thư viện/Import

Cách quản lý thư viện của Python khá linh động, bạn có thể import một hàm; hay class từ thư viện có sẵn, hoặc được cài đặt từ bên thứ ba, hay từ thư mục của dự án. Khái niệm import này sẽ gần giống với Nodejs, PHP hoặc các ngôn ngữ khác. Tuy nhiên điểm khác biệt lớn nhất là có thể sử dụng cùng tên hàm cho từng mô đun (module) khác nhau.

Tính rõ ràng, dễ đọc hiểu/Readability & simplicity

Ví dụ xét đoạn mã sau:

// Python
x = 12
y = 5
result = x / y
if result > 5.5:
    print("12 divided by 5 is greater than 5.5)
else
    print("12 divided by 5 is NOT greater than 5.5)
// C++
#include <iostream>
int main()
{
    double x = 12;
    double y = 5;
    double result = x / y;
    if(result > 5.5)
        std::cout << "12 divided by 5 is greater than 5.5" << std::endl;
    else
        std::cout << "12 divided by 5 is NOT greater than 5.5" << std::endl;
    return 0;
}

Rõ ràng với 1 người chưa biết lập trình thì đoạn mã 1 với Python dễ đọc và dễ hiểu hơn nhiều so với C++. Ngay cả so sánh với JS hay PHP thì Python vẫn vượt trội hơn về tính dễ đọc, dễ hiểu. Python sử dụng cú pháp tương tự tiếng Anh, vì tương tự ngôn ngữ con người nên dễ tiếp thu hơn. Đó cũng là lý do vì sao Python đang dần trở thành ngôn ngữ lập trình được dùng để dạy cho trẻ em.

Những điểm yếu/vấn đề của Python

Khác biệt về cú pháp so với ngôn ngữ khác

Gọi là điểm yếu thì không hẳn, nhưng so với các ngôn ngữ khác như PHP, JS, C, Java thì có dấu chấm kết thúc dòng, có các cặp {} để phân biệt khối, khối trong Python sẽ do số lượng khoảng trắng quy định (indent). Sẽ khiến bạn khó khăn 1 chút khi mới tiếp cận Python, cũng dễ xảy ra lỗi hơn nếu sai indent.

Không thể triển khai trên di động

Python hoạt động tốt ở môi trường máy chủ và ứng dụng máy tính để bàn (desktop applications), tuy nhiên ở trên điện thoại di động thì vẫn chưa có nền tảng nào hỗ trợ. So sánh 1 chút với Nodejs với React Native hay Dart với Flutter thì độ phủ thấp hơn. Với Nodejs và Dart có thể sử dụng cho ứng dụng di động đồng thời cho cả ở máy chủ và ứng dụng máy tính để bàn.

Tốc độ thực thi chậm

Python thực thi chậm hơn PHP 7, Nodejs là điều đã được kiểm chứng, cũng nhiều benchmark được thực hiện rồi. Nếu bạn thực sự đã có ý tưởng sản phẩm và tốc độ thực thi là bắt buộc, thì đây là 1 rào cản khó khăn. Nhưng nếu sử dụng Pypy, hoặc Cython, Numba để cải thiện và nhận lấy lợi ích khác từ Python và hi sinh một phần tốc độ thì cũng không phải là không tốt.

Lỗi run-time

Vì là ngôn ngữ kiểu động (dynamic typed) vì vậy khi chạy (run-time) chương trình Python có thể vẫn xảy ra lỗi về kiểu dữ liệu. Bạn sẽ phải sử dụng try/catch tốt hoặc cải thiện bằng các công cụ checker, linter.

Tại sao Python lại tăng trưởng nhanh như vậy?

Kỷ nguyên AI

Python được sử dụng nhiều trong kỷ nguyên AI khi mà tốc độ thực thi không quá quan trọng bằng tốc độ tính toán của GPU. Còn khả năng của Python thì được ứng dụng thích hợp vì dễ hiểu, dễ bảo trì. Để làm ra sản phẩm thông minh, tính năng AI có thể được huấn luyện hàng trăm giờ nhờ GPU. Trước đó còn có công việc xử lý số liệu, làm prototype…, tất cả những tác vụ này thì Python phù hợp nhất. Vì phần lớn thời gian được thực hiện bằng GPU, nên tốc độ thực thi của C/C++ hay Java không còn là điểm mạnh.

Dành cho các bạn làm Data Science, Python có thư viện Streamlit rất hữu dụng để làm báo cáo, demo.

Blockchain & IOT (Internet of things)

Bạn có thể thiết kế 1 blockchain đơn giản với 50 dòng code! Đây là điều tuyệt vời để bắt đầu với blockchain vì có thể làm thử nghiệm 1 cái gì đó rất nhanh. Python không chạy được trực tiếp trên GPU nên vẫn còn hạn chế với các ứng dụng blockchain đòi hỏi khả năng mining. Nhưng với IOT kết hợp blockchain thì lại là chuyện khác! IOT là những thiết bị có cấu hình thấp hoặc rất thấp, vì vậy Python hoàn toàn phù hợp để lập trình tương tác với các thiết bị này.

Kết hợp ứng dụng blockchain vào IOT đã và đang được triển khai rộng rãi. Vì vậy Python có cơ hội tham gia và quá trình này một cách chặt chẽ. Vì Python đơn giản, mang tính ứng dụng cao nên được nhiều người sử dụng. Vì vậy tăng trưởng cao là điều tất yếu.

Python có thể làm được gì khác?

Ngoài AI, Blockchain và IOT, Python còn được sử dụng ở mảng web, ứng dụng và lập trình điều khiển, tự động hoá.

Lập trình Web và API

Django và Flask là 2 framework hàng đầu cho lập trình web của Python. Nếu PHP có WordPress đang thống lĩnh thị trường thì Python với Django có nền tảng tương tự. Điểm mạnh của Django chính là phát triển web dựa trên ORM và có hệ thống Dashboard mạnh mẽ bao gồm hệ thống xác thực, phân quyền người dùng. Trong phân khúc này, nếu đã có bản template HTML thì Django sẽ phát triển ra ứng dụng nhanh hơn WordPress. Tài liệu của Django cũng rất phong phú và chi tiết, rõ ràng.

Flask thì nhỏ và uyển chuyển hơn Django, có tốc độ khá tốt nhưng thường dùng để lập trình API. Ngoài ra lập trình API thì mới nổi nền tảng FastAPI. Vì tận dụng tính năng async/await cho tốc độ rất tốt và có thể tạo ra tài liệu cho API chuẩn.

Ứng dụng, game & lập trình điều khiển, tự động hoá

Nhiều nền tảng có thể dùng để viết ứng dụng đa nền tảng cho Window, Macos hay Linux như: PyQT, PyGi, Kivy, Tk… ; hoặc tập trung duy nhất cho Macos như Cocoa, PyObjC, xem thêm GUI cho Python. Trong ứng dụng đa nền tảng thì Python không mạnh bằng JS với Electron, hoặc với Dart/Flutter. Tuy nhiên ứng dụng của Python thì có giao diện tự nhiên (native) hơn. Ngoài ra cũng có thể viết game 2D với Python và cũng khá nhiều nền tảng hỗ trợ.

Về điều khiển và tự động thì Python đang dần thay thế các câu lệnh phức tạp của Bash với khả năng lập trình uyển chuyển. Ví dụ bạn có thể điều khiển hệ thống máy chủ, dịch vụ cloud ở AWS bằng Python khá dễ dàng và được hỗ trợ chính chủ, hoặc làm ứng dụng auto-pull github khi có commit mới.

Hướng dẫn cách học Python hiệu quả

Mình cũng từng lướt nhanh khi học Python, nhưng sau một hồi đi lung tung mình nhận thấy cần phải học Python căn bản thật chắc. Đây là các phần cần phải học chắc Python để sử dụng hiệu quả:

  • Cú pháp, bao gồm cách viết hàm, lớp, module
  • Kiểu dữ liệu, cần nắm vững list, tuple, set, dict
  • Cách debug
  • Các cách xử lý dữ liệu ngày tháng, dữ liệu kiểu chuỗi, xử lý tập tin

Danh sách một vài tài nguyên cho việc học Python

Bạn nào đã nắm 1 ngôn ngữ lập trình rồi thì đọc hết và làm theo được các cheatsheet là tương đối ổn rồi.

Mấy cái “cheatsheet” hay “learn X in Y” là để tham khảo thôi. Đọc xong tưởng mình hiểu rồi hông luyện tập thì mãi chỉ là số 0 tròn trĩnh. Đừng ảo tưởng sức mạnh!

Bạn nhìn danh sách này có thể dài, tất nhiên không thể học hết. Điều quan trọng là bạn thích chủ đề nào. Và quan trọng nhất là học Python cho xong một chủ đề. Không nên bỏ học giữa chừng vì thấy chủ đề khác, khoá học khác “có thể” hay hơn.

Ngoài ra, cần phải luyện hàng ngày thì mới lên tay nhanh và chắc được.

Fullstack Station Tips

Nhiều người khuyến nghị là phải học bằng cách làm 1 dự án cụ thể. Đây cũng là điều đúng tuy nhiên thực sự có 1 trở ngại cần phải nói rõ. Ví dụ mình bắt đầu học Python bằng làm dự án dùng Django, với kỹ năng lập trình web nhiều năm việc mình làm Django không hề khó. Nhưng với tài liệu chính thống 2000 trang của Django thì thật không thể nào đọc nổi.

Nhưng những kiến thức về Django không giúp gì nhiều về học Python cơ bản.

Tương tự như vậy khi học về Machine Learning, thường sẽ cần dùng Numpy, Pandas, … . Học Python bằng những thư viện này hầu như không giúp gì cho việc học Python. Tốt nhất là tài liệu của Python: https://docs.python.org/3/tutorial/index.html, hoặc 1 cuốn sách nào đó chuyên về học Python. Khi bạn giỏi Python, bạn đi hướng nào cũng được.

Tóm lại, là cần học cơ bản chắc, đừng học python kết hợp với 1 lĩnh vực mới. Học 2 thứ mới cùng 1 lúc, chỉ khiến bạn mất thời gian, vì cả 2 đều không giỏi.

Còn nếu bạn không đủ động lực để học thuần Python? OK, kết cục đã rõ!

Tham khảo

https://www.zdnet.com/article/python-is-eating-the-world-how-one-developers-side-project-became-the-hottest-programming-language-on-the-planet/

https://www.quora.com/What-about-the-future-of-Python-and-Django

https://blog.geekforbrains.com/why-im-switching-from-python-to-nodejs-1fbc17dc797a?gi=f9c2204ab02e

https://blog.geekforbrains.com/after-a-year-of-using-nodejs-in-production-78eecef1f65a?source=post_page—————————

The post Tại sao nên học Python? appeared first on Fullstack Station.

]]>
https://fullstackstation.com/tai-sao-nen-hoc-python/feed/ 2
Giới thiệu một số công cụ hỗ trợ lập trình Python https://fullstackstation.com/gioi-thieu-mot-so-cong-cu-ho-tro-lap-trinh-python/ https://fullstackstation.com/gioi-thieu-mot-so-cong-cu-ho-tro-lap-trinh-python/#comments Thu, 21 Mar 2019 15:53:49 +0000 http://fullstackstation.com/?p=1484 Như bất kỳ các ngôn ngữ khác, mình luôn quan trọng các công cụ hỗ trợ để lập trình tốt hơn, nên khi học và sử dụng python mình cũng tìm hiểu các công cụ hỗ trợ, nhận thấy sự hiệu quả đó mình tổng hợp và chia sẽ với các bạn ở bài viết […]

The post Giới thiệu một số công cụ hỗ trợ lập trình Python appeared first on Fullstack Station.

]]>
Như bất kỳ các ngôn ngữ khác, mình luôn quan trọng các công cụ hỗ trợ để lập trình tốt hơn, nên khi học và sử dụng python mình cũng tìm hiểu các công cụ hỗ trợ, nhận thấy sự hiệu quả đó mình tổng hợp và chia sẽ với các bạn ở bài viết này các công cụ đó.

Các công cụ hỗ trợ kiểm tra kiểu dữ liệu

Kiểm tra kiểu dữ liệu là gì?

Đối với các ngôn ngữ lập trình kiểu động, thông dịch như Python, Javascript (Xem thêm Flow: type-checker cho Javascript), Php thì kiểu dữ liệu không bị ràng buộc dẫn đến việc 1 biến, 1 hàm có thể nắm giữ/trả về các kiểu dữ liệu khác nhau trong quá trình thực thi. Mặc dù đây là đặc tính của những ngôn ngữ này, chứ không hẳn là 1 điểm yếu, tuy nhiên để nâng cao khả năng hạn chế lỗi thì chúng ta vẫn cần nâng cao khả năng viết code và sự hỗ trợ của các công cụ.

Ví dụ:

def add(x, y):    
    return x + y

add("hai", "ba")
=> "haiba" # Kiểu string
add(2, 3)
=> 5 # Kiểu integer

add("hai", 3)
hoặc 
add(2, "ba")
=> chúng ta sẽ bị lỗi `TypeError`

Điều này thường dẫn đến các lỗi chương trình mà có xác suất xảy ra thấp và chỉ phát hiện trong lúc thực thi, khiến cho việc gỡ lỗi rất khó khăn.Tầm quan trọng của việc kiểm tra kiểu dữ liệu (type checker) khá cao, và cũng được nói rõ PEP 484 (https://www.python.org/dev/peps/pep-0484/), dựa vào PEP 484 ta sẽ sửa lại như sau:

def add(x: int, y: int) -> int:    
    return x + y

Như vậy, mã nguồn có tính dễ đọc dễ hiểu ngay đầu vào và kết quả trả về của hàm, mã nguồn có tính dễ bảo trì và sẽ hạn chế lỗi không mong muốn. Trong mã nguồn chỉ cần bạn viết theo cấu trúc đó là bạn đã hoàn thành nhiệm vụ của bạn, phần còn lại hãy để các công cụ hỗ trợ bạn.

Ưu và khuyết điểm

Ưu điểm:

  • Nâng cao khả năng hạn chế lỗi lúc thực thi vì có thể phát hiện được lỗi trong quá trình lập trình.
  • Nâng cao khả năng dễ đọc của mã nguồn vì tính rõ ràng của dữ liệu, giúp các lập trình viên dễ dàng nắm rõ chương trình hơn.
  • Khả năng hiểu cấu trúc của chương trình tốt hơn khi bạn nắm vững luồng dữ liệu lúc thực thi.

Khuyết điểm:

  • Giống như hướng tiếp cận TDD (Test-driven development) thì việc viết code theo hướng có chú giải sẽ mất nhiều thời gian hơn 1 chút, và code nặng hơn 1 tí.
  • Mặc dù có type-checker nhưng bản chất Python là dynamic typed, vì vậy kiểu dữ liệu vẫn được tự do bất chấp bạn có viết diễn giải (annotation) kiểu dữ liệu.
  • Cần sử dụng cách viết trong toàn bộ mã nguồn để đạt hiệu quả. Giả sử hàm trên addđược gọi từ 1 hàm khác, và dữ liệu truyền vào không xác định được, thì các công cụ type-checker cũng không kiểm tra được.

Static typing. Sure “real” developers may not need static typing, but if you end up in a situation where a system needs a critical bug fix and the core developers aren’t around anymore or on vacation, and the fix needs to roll out to millions of users, any static analysis ahead of runtime is extremely useful.

Wolfgang Grieskamp, Google Inc.
Tạm dịch: Rõ ràng là đối với lập trình viên thực thụ sẽ không cần quan tâm kiểu dữ liệu, nhưng một lúc nào đó bạn đối mặt với hoàn cảnh là hệ thống cần sửa lỗi nghiêm trọng, và lập trình viên chính không ở đó hoặc đang trong kỳ nghỉ, và việc sửa lỗi ảnh hưởng đến hàng triệu người dùng, thì việc phân tích kiểu dữ liệu trước khi thực thi là cực kỳ cần thiết.

Pyre và Mypy, Pyright

Pyre: https://pyre-check.org/

Mypy: http://mypy-lang.org

Mypy là công cụ được tạo ra trước, nhưng Pyre do Facebook tạo ra, và do cũng được kỳ vọng do đã thành công với các ngôn ngữ khác như Flow cho Javascript hay Hack cho PHP nên Pyre có thể được ưu chuộng hơn. Cá nhân mình sử dụng Mypy là chính, nhưng cũng có cài thêm Pyre để sử dụng cả 2 thì cũng không ảnh hưởng gì. Mặc dù Pyre được quảng cáo là chạy nhanh, nhưng do tính chất chạy nền của các loại công cụ này nên việc nhanh hơn thực sự không quan trọng lắm.

Pyright: https://github.com/Microsoft/pyright

Microsoft đã gia nhập cuộc chơi static type-checker cho Python bằng Pyright, với sự quảng cáo là tốc độ nhanh hơn gấp 5 lần mypy, đây là một ngôi sao mới cần được trải nghiệm. Điểm đặc biệt nữa của Pyright là dùng Typescript nên không phụ thuộc vào môi trường Python.

Pytype

Mặc dù Pytype cũng là 1 công cụ type-checker nhưng với khả năng kiểm tra kiểu dữ liệu không cần type-annotations nghĩa là bạn không cần phải viết chú thích (tuy nhiên đó không phải là mục tiêu của Pytype), đồng thời có thể kiểm tra nhiều kiểu lỗi khác.

Điểm đặc biệt của Pytype là có thể cải tạo các mã nguồn không có type-annotations thành có, tuy nhiên hiện tại chỉ mới dừng ở mức độ từng file, nên nếu dự án có lượng mã nguồn lớn thì cũng tốn nhiều công sức chuyển đổi.

Pycharm

Bạn đang dùng Pycharm thì chúc mừng bạn là type-checker đã được hỗ trợ tích hợp sẵn công cụ type-checker. Tuy nhiên, mình không dùng Pycharm vì phải trả phí cho bản Pro (bản Community khá hạn chế) trong khi hiện tại mình dùng VSCode khá tốt.

Các công cụ hỗ trợ format code

Nếu bạn dùng Pycharm, bạn có thể không cần suy nghĩ nhiều về format code, nhưng trong khía cạnh này có rất nhiều công cụ: autopep8, yapf của Google, Black, isort

Mình thì sử dụng Black, xài rất tốt và hiện tại cũng đạt hơn 8500 stars ở Github gần bằng Yapf, mặc dù được phát triển sau này nhưng Black cũng đạt được tiếng vang tốt, mình nghĩ dùng Black là ổn.

Các công cụ về Linting

Linting thì đa phần các IDE, hay các Text Editors có hỗ trợ Python thì đều có cài đặt sẵn các công cụ lint như Pyflakes, Pylint, pycodestyle, pydocstyle

Các công cụ về Linting ở đây và các công cụ về type-checker, format code có nhiều điểm tương đồng và chồng chéo lẫn nhau, nhưng ở đây Linting xét về tính logic như sử dụng dư thừa thư viện, biến, hoặc các biểu thức logic dư thừa …

Trong khía cạnh này thì `pycodestyle` có phần chiếm ưu thế vì tốc độ thực thi nhanh và khả năng bắt lỗi tốt. Phần linting được trình bày sau bởi vì nếu bạn sử dụng type-checker và format code tự động thì phần linting còn lại sẽ chỉ tập trung vào tính logic của mã nguồn, mặc dù có thể có trùng lắp tính năng nhưng không sao, thà thừa hơn thiếu.

Fullstack Station Tips

Việc tuân thủ coding-standard là cực kỳ quan trọng đảm bảo tính nhất quán theo chuẩn của dự án và hạn chế các lỗi phát sinh ngoài ý muốn. Trong đó viết code theo type-annotations là quan trọng nhất vì có nhiều hiệu quả, còn các thứ khác đa phần là được giải quyết tự động thông qua việc format code và sửa theo gợi ý của các công cụ Linting.

Mỗi khi mình viết code, mà không có type-annotations thì chắc chắn 1 điều là mình hiểu chưa tốt các kiểu dữ liệu của các bộ thư viện đang sử dụng hoặc chính mã nguồn của dự án. Điều này xảy ra khi mình học thêm các thư viện bên mảng Machine Learning như Numpy, Pandas, Pytorch, dẫn tới là 1 áp lực phải học, hiểu rõ các kiểu dữ liệu của các thư viện này.

Bộ công cụ mà mình sử dụng là: mypy, Black và pycodestyle, pytype.

(Pyright là công cụ mới nổi lên từ cuối tháng 3/2019, mình sẽ sử dụng xem như thế nào và báo cáo mọi người sau)

Tham khảo

https://realpython.com/python-code-quality/

https://medium.com/@CodingZen/codingzen-static-typing-in-python-no-way-afb643c334f

The post Giới thiệu một số công cụ hỗ trợ lập trình Python appeared first on Fullstack Station.

]]>
https://fullstackstation.com/gioi-thieu-mot-so-cong-cu-ho-tro-lap-trinh-python/feed/ 1