Bạn đang sở hữu vũ khí gì trong tay?
Bài đăng này đã không được cập nhật trong 8 năm
Thế giới công nghệ thông tin đang phát triển chóng mặt, và ai nắm giữ công nghệ trong tay, người đó sẽ chiến thắng. Và nếu cuộc đua tranh công nghệ là một cuộc chiến, thì một lập trình viên như bạn đang có gì trong tay?
Hãy tưởng tượng, các ngôn ngữ lập trình chính là chìa khóa để thay đổi thế giới công nghệ, chúng ta có trong tay các ngôn ngữ lập trình, nghĩa là chúng ta nắm trong tay sức mạnh. Nếu xem chúng ( các ngôn ngữ lập trình ) là những thứ vũ khí, thì bạn đang có trong tay thứ vũ khí nào?
Đầu tiên là ngôn ngữ C - ngôn ngữ mà hầu như lập trình viên nào cũng biết. Là ngôn ngữ lập trình hướng cấu trúc, được phát triển từ những năm 70 của thế kỷ 20, hoạt động rất mạnh mẽ và chính xác, C rất được ưa chuộng để viết các phần mềm hệ thống, và hiện nay cũng được sử dụng trong giảng dạy các môn khoa học máy tính. Sự hoài cổ nhưng mang đến sự mạnh mẽ và chính xác của C làm ta liên tưởng đến những khẩu súng trường, được phát minh từ đầu thế kỷ 20, cổ nhưng cực kỳ uy lực, chính xác từng nhát một và vẫn còn được nhiều xạ thủ chuyên nghiệp tin dùng đến ngày nay.
Một ngôn ngữ lai được phát triển từ C, đó là C++. C++ là ngôn ngữ đa mẫu hình tự do, có kiểu tĩnh và hỗ trợ lập trình thủ tục, lập trình hướng đối tượng, và lập trình đa hình. C++ đã trở thành ngôn ngữ thương mại từ những năm 90 của thế kỷ trước, và tiêu chuẩn ngôn ngữ C đã được thông qua năm 1998.
C++ mạnh mẽ và đầy ấn tượng khi đã nắm được cơ bản trong tay, tuy nhiên phải mất nhiều năm khổ luyện, cũng có thể phải hứng chịu đau đớn trong quá trình ấy để có thể trở thành master C++. Và nhiều khi, bạn ước rằng mình có thể sử dụng thứ gì đó khác đi. Sự mạnh mẽ, ấn tượng từ sức mạnh, nhưng không cẩn thận lại làm đau chính mình, C++ giống như một chiếc nhị khúc côn - mạnh mẽ, nhưng cũng rất uyển chuyển.
Perl - như một loại bom xăng. Mạnh mẽ, hiệu quả, nhưng chỉ dùng một lần, và hiện nay còn khá ít người có thể sử dụng. Perl có các đặc tính:
- Có các thao tác quản lí tập tin, xử lí thông tin thuận tiện.
- Thao tác với các chuỗi kí tự rất tốt.
- Đã có một thư viện mã lệnh lớn do cộng đồng sử dụng Perl đóng góp (CPAN).
Perl có cú pháp khá giống với C, nên người có kinh nghiệm với C cảm thấy Perl khá dễ học. Perl khá linh hoạt, và cho phép người sử dụng giải quyết một vấn đề theo nhiều cách khác nhau.
Java - một loại ngôn ngữ lập trình hướng đối tượng. Khác với các ngôn ngữ lập trình thông thường, cần phải biên dịch thành mã máy hoặc thông dịch khi chạy, Java được thiết kế để biên dịch thành bytecode. Bytecode sau đó sẽ được môi trường thực thi chạy. Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn. Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn.
Java lúc hoạt động liên tục, mạnh mẽ và linh động, hiệu suất cao, cảm giác như một chiếc súng máy **240G ** được cung cấp đủ đạn. Tuy nhiên, khi không được cung cấp đủ đạn thì sao? Khi bạn gặp NullPointerException
khẩu súng Java sẽ phát nổ và - you die.
Scala được xem là một biến thể của Java 240G, bỏ qua những training thông thường, và viết bằng thứ ngôn ngữ hơi khó hiểu, đôi khi ta cảm giác như chúng là vô nghĩa.
Javascript(JS) là ngôn ngữ lập trình nguyên mẫu được phát triển từ C (chỉ có cách đặt tên xuất phát từ Java chứ không phải phát triển từ Java như nhiều người lầm tưởng từ cái tên của nó). Giống như C, JS có khái niệm từ khóa, do đó gần như không thể mở rộng được.
JS không có bộ xử lý input/output riêng. Trên trình duyệt, JS thể hiện là một ngôn ngữ linh hoạt, cho phép thiết kế trang web động và một số hiệu ứng hình ảnh thông qua DOM, JS còn cho phép kiểm tra thông tin từ các thẻ của HTML...
JS sắc bén nhưng tự nó không làm nên một thứ hoàn chỉnh từ client, giống như một thanh kiếm với phần chuôi không hoàn hảo.
Go (được phát triển bởi Google) - một ngôn ngữ khai thác sức mạnh của bộ xử lý đa lõi với một cách tiếp cận khác. Thay vì chỉ có hệ điều hành mới có thể được cấp phép tài nguyên và xử lý, thì các phần mềm cũng có thể tương tác trực tiếp với nền tảng đa lõi giúp việc xử lý nhanh hơn. Sự nhanh và gọn, có thể xử lý vấn đề nhanh chóng, Go giống như một khẩu súng lục, giúp ta nhanh chóng hạ gục đối thủ.
Rust (được phát triển bởi Mozilla) - có tốc độ phổ biến khá nhanh trong giới lập trình, Rust có nhiều phẩm chất tương tự như Go, nhưng giải quyết được vấn đề lớn nhất của Go. Vì Go không tự động chia sẻ thông tin giữa các “kênh” cấu trúc dữ liệu khác nhau nên có thể xảy ra những hoạt động vượt khỏi tầm kiểm soát. Bù lại Rust trang bị cho mình các chức năng loại bỏ những ngăn cách giữa các lớp dữ liệu làm cho ngôn ngữ này ít rủi ro hơn trong các hệ thống nhúng.
Rust như một chiếc súng bắn in 3d.
Bash lại giống như một chiếc búa bị nguyền rủa, khi nắm giữ nó, mọi thứ trở nên như những chiếc móng tay, đặc biệt là ngón tay của bạn. Bạn chẳng hề muốn gõ cái búa đó xuống.
Python - Một khẩu súng hai nòng
là một ứng cử viên sáng giá cho các chuyên gia lập trình yêu cầu sự đơn giản.
Python có cú pháp chặt chẽ, rất giống với ngữ pháp tiếng Anh, các thông số đều được thiết kế dễ đọc, nhỏ gọn và rõ ràng. Bất cứ ai gặp rắc rối với việc gỡ rối với một chiếc súng trường "C" thì đều đánh giá cao những gì Python mang lại.
Nhỏ gọn, mạnh mẽ và tiện lợi là những đặc điểm của một khẩu súng hai nòng - Python.
Ruby - một thanh kiếm ngắn có khảm tuyệt đẹp
nhằm tới giảm thiểu sự nhàm chán mà các lập trình viện buộc phải làm, Ruby được thiết kế theo nguyên tắc "ít gây ngạc nhiên nhất". Ruby mang đến cảm giác thoải mái về cú pháp, thoải mái về ngữ nghĩa. Và Ruby được xem là ngôn ngữ lập trình đa mẫu hình, cho phép bạn lập trình dạng thủ tục với khả năng hướng đối tượng. Nó hỗ trợ mạnh cho tự định kiểu (type introspection), reflection và meta-programming.
Linh hoạt và mạnh mẽ, Ruby mang vẻ đẹp của một thanh kiếm ngắn được khảm đá quý.
PHP - Một vái vòi dẫn PHP một ông vua của kịch bản ngôn ngữ kịch bản máy chủ (server-side). Mã code của nó được xử lý trước khi trả về trình duyệt của người dùng. Bạn hãy cắm một cái đầu vòi vào ống xả ô tô, và đầu kia thì bỏ vào cửa sổ xe, sau đó bạn ngồi trong xe và khởi động máy. Điều này nghe có vẻ khá buồn cười và dại dột, tuy nhiên nó cho thấy khả năng xử lý và truyền dẫn dữ liệu của PHP, đồng thời cũng cho thấy sự phổ cập của nó, thấy nó hiện hữu thật quen thuộc, nhưng cũng thật "nguy hiểm".
Mathematica
Một ngôn ngữ lập trình toán học nền tảng đại số.
Nó là một tổ hợp các tính toán bằng ký hiệu, tính toán bằng số, vẽ đồ thị và là ngôn ngữ lập trình tinh vi Lần đầu tiên khi version 1 của Mathematica được phát hành, mục đích chính của phần mềm này là đưa vào sử dụng cho các ngành khoa học vật lý, công nghệ và toán học, nhưng cùng với thời gian Mathematica trở thành phần mềm quan trọng trong nhiều lĩnh vực khoa học khác. Ngày nay Mathematica không những được sử dụng trong các ngành khoa học tự nhiên như vật lý, sinh học, toán học, hóa học, công nghệ mà nó đã trở thành một phần mềm quan trọng của các ngành khoa học xã hội cũng như kinh tế.
Vươn tới rộng khắp, khả năng tính toán và mô hình hóa hiệu quả, Mathematica thực sự có sức mạnh như một khẩu đại bác phóng đạn pháo quỹ đạo thấp.
C#
do Microsoft đề ra là ngôn ngữ hướng đối tượng thuần nhất và trong sáng, nó thực hiện hầu hết các tính chất tốt của ngôn ngữ hướng đối tượng, giống như Java.
Ngoài ra C# sẽ được dịch ra mã máy để chạy trên nền .Net, nền này cung cấp rất nhiều đối tượng mạnh, phong phú và đa dạng để giải quyết nhiều vấn đề phổ biến trong lập trình, nhờ đó nếu bạn lập trình bằng C#, bạn tốn rất ít chi phí, thời gian, ứng dụng kết quả chạy rất tin cậy, một phần do tính chất hướng đối tượng của C#, phần khác vì ứng dụng dùng chủ yếu các đối tượng đã được viết sẵn bởi Microsoft hay hãng thứ ba nào đó.
Tuy nhiên, C# chỉ chạy trên nền .NET mà .NET chỉ chạy trên Windows OS.
Ngôn ngữ C# đẹp và mạnh mẽ, như một khẩu súng trường lazer và được buộc trên lưng một con lừa. Nếu con lừa không hoạt động thì khẩu súng cũng như vứt đi.
Prolog
Prolog được sử dụng nhiều trong các ứng dụng của trí tuệ nhân tạo và ngôn ngữ học trong khoa học máy tính (đặc biệt là trong ngành xử lý ngôn ngữ tự nhiên vì đây là mục tiêu thiết kế ban đầu của nó). Cú pháp và ngữ nghĩa của Prolog đơn giản và sáng sủa, nó được người Nhật coi là một trong những nền tảng để xây dựng máy tính thế hệ thứ năm mà ở đó, thay vì phải mô tả cách giải quyết một bài toán trên máy tính, con người chỉ cần mô tả bài toán và máy tính sẽ hỗ trợ họ nốt phần còn lại.
Vì vậy, ngôn ngữ Prolog mang hơi hướng của một vũ khí AI(trí tuệ nhân tạo), bạn chỉ cần nói nó làm gì thì nó sẽ làm, sau đó nó cũng xây dựng các thiết bị đầu cuối, và sau đó quay ngược thời gian và... kill your mom... LOL
Lisp
Lisp là ngôn ngữ lập trình được phát triển khá sớm(1958). Lisp có cấu trúc dữ liệu nền tảng là các danh sách liên kết (linked list), được biết đến như một trong những ngôn ngữ lập trình hàm tiêu biểu, mặc dù đôi khi vẫn có các chương trình Lisp được viết theo hướng thủ tục. Về hình thức, cú pháp lệnh của Lisp rất đặc biệt với những cặp ngoặc đơn và viết theo kí pháp tiền tố.
Đặc điểm của Lisp:
- Cú pháp thuần nhất (sẽ được trình bày trong phần dưới)
- Hàm cũng là một đối tượng
- Lập trình kiểu động.
- Thu rác trong bộ nhớ (Garbage collector)
- Gói chương trình
- Biên dịch tăng dần (Incremental compiling)
Lisp có cảm giác nhỏ gọn nhưng cực kì linh hoạt và tiện dụng, hiệu quả. Lisp như một con dao găm vậy.
Trên đây là một chút sưu tầm và tản mạn về các loại ngôn ngữ lập trình phổ biến, bài viết còn nhiều hạn chế, nhưng hy vọng đem đến một cách nhìn khác về thế giới lập trình. Chúc các bạn vui vẻ!
All rights reserved