#programmingLanguage #coding #j2team_share
Q: Liệu có ngôn ngữ lập trình nào còn nhanh hơn và tinh gọn hơn cả C hay C++ không?
A: Cameron Purdy, Lập trình hợp ngữ, C, C++, Java, C#, vv.
=========
Ông già cáu kỉnh đầy trách nhiệm đang lên tiếng đây.
Bất cứ ai đi đặt câu hỏi về việc *một ngôn ngữ lập trình nào đó* có nhanh hay không đều chẳng hiểu gì về việc lập trình.
*Đầu tiên* hãy hiểu việc lập trình đã, sau đó mới quan tâm tới ngôn ngữ.
Một phiên bản sắp xếp nhanh (quicksort) được viết bằng Ruby, PHP, Visual Basic, hay Javascript đều nhanh hơn nhiều sắp xếp nổi bọt (bubble sort) viết bằng hợp ngữ, C, C++, Rust, Go, Java, hay C#. Để thử nghiệm điều này, hãy cứ lấy một mảng chứa một triệu cái tên và chạy hàm sắp xếp đó xem xem hàm nào xong trước tiên nhé.
Điều này không có nghĩa rằng Ruby nhanh hơn C. Cũng chả đồng nghĩa với việc Visual Basic nhanh hơn Go đâu. Nó nói lên rằng cách thiết kế là rất quan trọng, cấu trúc dữ liệu quan trọng và giải thuật cũng rất quan trọng. **Chỉ sau khi biết được làm cách nào để thực hiện tốt được tất cả những thứ đó thì một người mới cần lo lắng về tốc độ của ngôn ngữ lập trình thôi nhé**.
Đối với việc tối ưu ở mức thấp (cục bộ), rất khó tìm ra được một ngôn ngữ tốt hơn C hay C++. Việc tối ưu mức cục bộ chỉ quan trọng nếu bạn đã thiết kế đúng, dùng cấu trúc dữ liệu chuẩn và đang xem xét tới những thuật toán phù hợp mà thôi.
Hợp ngữ không nhanh hơn C đâu. Tôi vẫn đang viết hợp ngữ đấy (6502, JVM bytecode, XVM IR). Tôi biết các loại code hợp ngữ nữa (6502, 68k, x86, bytecode, vv). Đối với bất kỳ dự án khá lớn nào, trình biên dịch C sẽ tạo ra những mã nguồn tốt hơn nhiều so với những gì tôi có thể làm với hợp ngữ. Khi viết hợp ngữ, *chính bạn là người phải tối ưu mọi thứ*. Gợi ý nhé: Có lẽ bạn không xuất sắc lắm đâu.
Càng “tinh gọn” thì, bạn càng có ít sự lựa chọn mà thôi. Cuối cùng sẽ phải là C hoặc hợp ngữ, và bạn phải lẩn tránh các thư viện bằng mọi giá. (Thư viện là lý do số một khiến cho những lần build không được “tinh gọn” cho lắm.)
Mặt khác, nếu kích thước chương trình chạy là điều quan trọng nhất thì, có lẽ Perl là lựa chọn tinh gọn nhất đấy, bởi nhiều khả năng runtime của Perl gần như là tức thì rồi, vì thế bạn chỉ cần có chương trình nhỏ, gọn và dễ đọc mà thôi.
[[LINK]](https://www.quora.com/Is-there-a-programming-language-that-is-even-faster-and-leaner-than-C-or-C/answer/Cameron-Purdy)
#interview #coding #dev #j2team_share
Hỏi: Liệu tôi có nên bỏ giấc mơ làm kỹ sư phần mềm sau khi trượt 10 cuộc phỏng vấn về kỹ thuật không?
Trả lời: Kurt Guntheroth, trên 35 năm vật lộn với các chữ số nhị phân; trên 20 năm làm C++. Windows, Linux, nhúng.
==========
Cái gì cơ, bạn chỉ tạch 10 cuộc phỏng vấn thôi à? Và bạn muốn đầu hàng sao?
Vâng, có lẽ bạn không nên làm kỹ sư phần mềm. Bạn bỏ cuộc dễ quá đấy.
Hãy quay lại khi bạn tạch 100 lần và chẳng nhận được bất kỳ lời mời nào nhé. Quay lại khi bạn đã đọc lại quyển sách về cấu trúc dữ liệu và giải thuật và vẫn chẳng được ai thuê ấy. Và quay lại khi bạn đã thực hiện trên 100 câu hỏi kiểm tra viết code mà bạn có thể tìm thấy trên web hết lần này đến lần khác cho tới khi bạn có thể tự tin viết code trên bảng trắng đó. (Có rất nhiều câu phỏng vấn hay ở đó mà bạn có thể làm được đơn giản chỉ bằng cách nhớ câu trả lời).
Tôi là một nhà phát triển có kinh nghiệm và có thể giải quyết tốt các câu hỏi về thuật toán. Khi thất nghiệp, tôi có thể trải qua 30 lần phỏng vấn trước khi tôi có được một lời mời làm việc, rồi tôi vẫn có thể sẽ từ chối lời mời đó. Bạn có thể tạch bởi vì ứng cử viên mà Chúa phái đến đã phỏng vấn từ tuần trước mất rồi, họ có nhiều kỹ năng và trải nghiệm tốt hơn, vì thế bạn không cạnh tranh được. Có thể bạn tạch sau khi trả lời đúng câu hỏi, bởi ứng viên tiếp theo thích nói về thể thao, và cái gã tuyển dụng kia cũng vậy. Công ty đó lại có thể đóng phần Yêu Cầu Trợ Giúp trước khi người phỏng vấn bạn có thể đưa ra được một lời mời cho bạn. Hoặc có thể họ chỉ định trêu chọc những gã siêu nhân code mà thôi, chứ chẳng có ý định tuyển ai, vì thế ngay từ đầu bạn đã chẳng có cơ hội nào rồi. Họ thích làm thế mà. Nếu bạn để sự ngu ngốc trong doanh nghiệp ấy đánh gục bạn, thì có lẽ thế giới này đã nguyền rủa bạn mất rồi.
Vâng, tất nhiên, nếu bạn khó trả lời một câu hỏi về thuật toán, hãy về nhà sau buổi phỏng vấn và nhanh chóng viết câu hỏi đó ra trước khi bạn quên. Sau đó giải quyết bài toán. Dùng cả sách vở lẫn internet nếu cần nhé. Viết code rồi làm cho nó chạy tốt vào. Bạn sẽ chẳng bao giờ phạm phải lỗi lầm đó lần nữa đâu.
Thực sự bạn thất bại bao nhiêu lần cũng chẳng hề quan trọng. Chỉ cần thành công một lần là đủ rồi.
https://www.quora.com/Should-I-give-up-my-dream-to-become-a-software-developer-after-failing-my-10-technical-interviews/answer/Kurt-Guntheroth-1
PS: Các bạn tạch phỏng vấn nhiều nhất là bao nhiêu lần rồi? Lần phỏng vấn cuối cùng, mình trả lời giống trong ảnh và giờ nghĩ lại vẫn không ngậm mồm được :v