Mình đang có ý định học lập trình cơ bản, mình thấy trên các trang nước ngoài người ta khuyên học Python trước tiên, nhưng mình có đọc qua một số tài liệu và tutorial về Python thì thấy ngôn ngữ này có cú pháp rất khác với đa số ngôn ngữ hiện nay (Java,C#,PHP đều có cú pháp giống C), hơn nữa sau khi tìm hiểu kỹ hơn thì mình thấy Python có rất nhiều hàm mang tính chất “ăn sẵn”, quá nhiều hàm, thư viện có sẵn. Ko hiểu sao nhiều người lại khuyên học Python nhỉ, nhiều hàm ăn sẵn có thể giúp lập trình dễ thở hơn nhưng như vậy thì làm sao hiểu được những thứ cơ bản của lập trình ?
Tại sao Python được chọn là ngôn ngữ đầu tiên để học?
Cụ thể là hàm nào?
Như thế nào là “ăn sẵn”, bạn có thể dùng assembly code để printf
thay vì dùng hàm printf
của C mà. C làm sẵn hàm printf
rồi. Theo quan điểm của bạn thì nếu bạn sử dụng C sẽ không hiểu cơ bản của lập trình đâu.
Bonus hello world của ASM
; hello.asm a first program for nasm for Linux, Intel, gcc
;
; assemble: nasm -f elf -l hello.lst hello.asm
; link: gcc -o hello hello.o
; run: hello
; output is: Hello World
SECTION .data ; data section
msg: db "Hello World",10 ; the string to print, 10=cr
len: equ $-msg ; "$" means "here"
; len is a value, not an address
SECTION .text ; code section
global main ; make label available to linker
main: ; standard gcc entry point
mov edx,len ; arg3, length of string to print
mov ecx,msg ; arg2, pointer to string
mov ebx,1 ; arg1, where to write, screen
mov eax,4 ; write sysout command to int 80 hex
int 0x80 ; interrupt 80 hex, call kernel
mov ebx,0 ; exit code, 0=normal
mov eax,1 ; exit command to kernel
int 0x80 ; interrupt 80 hex, call kernel
Nguồn
Get the right tool for the job
ví dụ trong List a ạ, có thể dùng sort() để sắp xếp luôn, trong khi các ngôn ngữ như C thì phải thực hiện hoán đổi vị trí các phần tử một cách thủ công
Thích thì bạn có thể tự viết mà, Java , C# cũng có hàm sort thôi
Tại em thích thủ công thôi chứ c có hàm qsort mà?
Nói thế thì mình khuyên bạn học Pascal thôi nhé
C cũng có hàm mang tính chất “ăn sẵn” đấy, như anh Đạt có nói
Ăn sẵn có vẻ xấu xa nhỉ
Bạn có thể “tự nấu” không ai cấm, cười chê
Đến khi bị “cơm hư” thì hãy tự trách bản thân
Mình thấy khá nhiều bạn mới học lập trình (học được < 1 năm) đều thích tự làm thay vì sử dụng thư viện bên ngoài, thậm chí cả hàm trong SDK cũng không xài, tự làm luôn. Đến khi lỗi thì trách abc xyz
Những người làm ngôn ngữ, SDK làm những hàm đó để người phát triển tiết kiệm thời gian hơn, suy nghĩ ra cách giải quyết bài toán, phần mềm, chức năng nhanh hơn
Cơ bản về lập trình?
Đâu cần phải nói mấy hàm trong Python hay C#, Java là “ăn sẵn”. Học lập trình là học tư duy, cách giải quyết một bài toán mang tính rộng lớn hơn như một dự án phần mềm có hàng trăm chức năng. Bạn biết vận dụng mấy hàm, đối tượng “ăn sẵn” đó để viết app, đó là tư duy lập trình
Vào dự án cho mấy bạn newbie < 1 năm học lập trình “ngồi nấu cơm” thay vì xài “đồ ăn sẵn” xem “cơm” có hư không
Thớt làm mình nhớ đến 1 cmt (giờ bị xoá rồi) mà mình vẫn nhớ như in, khi mình nói rằng nếu đã code 1 bài toán về string (hình như là tìm string trong string), mình nói rằng dùng STL (C++) vừa nhanh vừa tiện (và tất nhiên là chính xác), bạn thớt của topic đó cmt thế này:
Dùng STL thì còn gọi gì là tư duy lập trinh nữa!
Mình cạn lời luôn.
Đến lúc kiếm cơm, một ngày viết mấy nghìn dòng code lại chả hốt cả project của người ta paste vào chứ mấy hàm ăn sẵn đã là cái gì
Ví dụ hàm sqrt()
để tính căn bậc 2 chẳng hạn, rõ ràng Python có sẵn, nhưng khi mới học lập trình thì 99% mọi người đều phải tìm cách tự code 1 hàm sqrt()
để hiểu bản chất, hay sorted()
cũng vậy, học cấu trúc dữ liệu và giải thuật (môn cơ bản của cntt) bạn sẽ phải học khá nhiều loại sort khác nhau để hiểu bản chất, lúc đó Python có sẵn hay không có sẵn không quan trọng nữa
Bạn có thể xem MIT họ dùng Python để dạy cho newbie như thế nào ở đây:
vẫn ko hiểu “những thứ cơ bản của lập trình” của chủ thớt là sao. mỗi ngôn ngữ đều có tư duy của nó. như python sinh ra là để viết code nhanh gọn dễ hiểu. mình học c và python và thấy python nó ngắn gọn, dễ nhìn dễ hiểu. mà nói về hàm sẵn chắc gì bạn đã biết và áp dụng được các hàm sẵn đó đâu :))
Chính xác mà nói thì MIT không hề dạy python dù biết rằng học sinh họ sẽ học được python qua course đó. Mục đích của course này là dạy học sinh “using computation to solve problems”