Sự khác biệt giữa lập trình và phát triển web

Thế giới lập trình có thể khó để người ngoài nắm bắt. Ví dụ, nếu bạn không có kinh nghiệm lập trình, bạn có thể không biết ngôn ngữ nào là tốt nhất cho người mới bắt đầu học.

Tuy nhiên, những quan niệm sai lầm về lập trình vẫn còn tồn tại rất nhiều. Mặc dù các thuật ngữ như "kỹ sư phần mềm", "nhà phát triển web" và "lập trình viên" được dùng rất phổ biến, nhưng có một số khác biệt chính về công việc của họ mà bạn có thể chưa biết. Hãy xem lập trình và phát triển web khác nhau ở điểm gì nhé!

Mục tiêu khác nhau

Phát triển web

Trong khi cả lập trình viên và nhà phát triển web đều sử dụng dòng code để làm việc trên một máy tính, mục tiêu của họ rất khác nhau. Sản phẩm của các lập trình viên rất đa dạng, nhưng họ thường tạo ra các ứng dụng máy tính hoàn toàn mới hoặc thêm vào phần mềm hiện có. Mặt khác, các nhà phát triển web chỉ có nhiệm vụ là xây dựng và duy trì trang web.

Để hiểu sự khác biệt, hãy xem xét vai trò của một nhà thiết kế web. Nhà thiết kế tạo mô hình trang web và có thể lên kế hoạch cho các tính năng của nó. Tuy nhiên, người này không cần phải viết bất kỳ dòng code nào để thực hiện điều đó. Họ có thể sử dụng các chương trình như Adobe Dreamweaver để tạo ra thiết kế trang web hoặc xây dựng mô hình trong Photoshop.

Các nhà phát triển web thu hẹp khoảng cách giữa các nhà thiết kế web và lập trình viên. Trong khi một nhà thiết kế web đưa ra ý tưởng cho trang web, thì nhà phát triển web sẽ xây dựng nó theo các thông số kỹ thuật. Trong dự án này, vai trò của một lập trình viên có thể là tạo ra một công cụ mới giúp xử lý các yêu cầu của khách truy cập trang web. Về lâu dài, một lập trình viên sẽ kết thúc công việc sau khi ứng dụng được hoàn thành, còn nhà phát triển web vẫn sẽ chịu trách nhiệm cập nhật và duy trì trang web đó.

Một điểm quan trọng khác là phạm vi công việc của lập trình viên và nhà phát triển web. Trong một môi trường kinh doanh, một lập trình viên có thể được giao nhiệm vụ mở rộng phần mềm độc quyền mà một công ty đã sử dụng trong nhiều năm.

Vì vậy, họ có thể dành rất nhiều thời gian để tìm ra code cho các ứng dụng cũ và cố gắng thêm các tính năng mới cho chúng, vì một công ty sẽ không muốn vứt bỏ phần mềm cần thiết cho doanh nghiệp của mình. Khi nói đến thiết kế trang web, nếu công ty muốn xây dựng một trang web mới, rất hiếm khi có thể chắp vá các phần lại với nhau. Đối với các trang web, sẽ hiệu quả hơn nếu bắt đầu xây dựng từ đầu.

Sử dụng các ngôn ngữ khác nhau

Ngôn ngữ lập trình

Như bạn đã biết, có hàng chục ngôn ngữ lập trình khác nhau, tất cả đều có thế mạnh và mục đích khác nhau. Ai đó đang xây dựng ứng dụng dành cho thiết bị di động sẽ sử dụng ngôn ngữ khác với ngôn ngữ của một người đang xây dựng ứng dụng web.

Nhà phát triển web sử dụng HTML (không thực sự là ngôn ngữ lập trình) để tổ chức văn bản và CSS (cũng không phải là ngôn ngữ lập trình thực sự) để tùy chỉnh cách văn bản hiển thị. Sau đó, họ sử dụng JavaScript cho công việc phía máy khách (như kiểm tra xem bạn có để trống trường mật khẩu khi đăng nhập không) và PHP cho hành vi phía máy chủ (chẳng hạn như tìm kiếm cụm từ mà người dùng đã nhập). Tất nhiên, có những ngôn ngữ khác được sử dụng trong phát triển web, chẳng hạn như Ruby.

Mặt khác, một lập trình viên có thể sử dụng bất kỳ ngôn ngữ nào để xây dựng ứng dụng mà họ cần. Tùy thuộc vào tình huống, một lập trình viên có thể sử dụng C#, Java, C++, Python, C hoặc bất kỳ lựa chọn nào khác để xây dựng một ứng dụng.

Một ý nghĩa quan trọng của những khác biệt này là các lập trình viên web phải thường xuyên cập nhật những thay đổi về ngôn ngữ mà họ sử dụng. Cuốn sách về lập trình web được viết vào năm 2015 có thể đã lỗi thời bởi vì sự phát triển nhanh chóng của các ngôn ngữ lập trình. Do đó, các lớp lập trình web thường dạy sinh viên thông qua tài nguyên trực tuyến thay vì sách.

Ngược lại, sách viết về ngôn ngữ C từ năm 1985 vẫn có thể khá hiệu quả trong việc dạy sinh viên về ngôn ngữ này, bởi vì nó không thay đổi nhiều trong những thập kỷ qua. Tất nhiên, một tài nguyên cũ có thể bỏ lỡ một số tiêu chuẩn phong cách và ứng dụng thực tiễn tốt nhất.

Sự khác biệt trong triển khai

Bạn có thể không nghĩ tới, nhưng các ngôn ngữ được thảo luận ở trên thực sự thực hiện các chức năng rất khác nhau.

Các ngôn ngữ lập trình như Java và C++ là các ngôn ngữ cấp cao, có nghĩa là việc nhập một dòng code C++ chủ yếu được trích ra từ các lệnh thực tế mà nó chuyển thành khi bạn biên dịch nó. Viết bằng ngôn ngữ cấp thấp, như code hợp ngữ, sẽ vô cùng tẻ nhạt và khó khăn. Các code ở cấp thấp hơn này gắn bó chặt chẽ với phần cứng, vì vậy bạn phải chỉ định việc di chuyển dữ liệu vào và ra khỏi các register bộ nhớ cụ thể.

Ví dụ, hãy xem code hợp ngữ ví dụ này để xuất “Hello, World” từ trang web về khoa học máy tính của LMU:

global _start

section .text
_start:
; write(1, message, 13)
mov rax, 1 ; system call 1 is write
mov rdi, 1 ; file handle 1 is stdout
mov rsi, message ; address of string to output
mov rdx, 13 ; number of bytes
syscall ; invoke operating system to do the write

; exit(0)
mov eax, 60 ; system call 60 is exit
xor rdi, rdi ; exit code 0
syscall ; invoke operating system to exit
message:
db "Hello, World", 10 ; note the newline at the end

Trong C++, để thực hiện cùng chức năng như trên, chỉ cần nhập dòng code đơn giản sau:

std::cout << "Hello, World";

Chúng ta có thể thấy rằng khi code mà các lập trình viên nhập thực sự được biên dịch, máy xử lý nó thành dạng mà máy tính có thể đọc được, nhằm tạo ra một ứng dụng hoạt động. Điều này khác biệt rất lớn với hầu hết các công việc phát triển web. Phát triển web không cần phải biên dịch bất cứ gì cả. Tuy nhiên, có ngoại lệ đối với một số "ứng dụng dựa trên web", những thứ cần biên dịch và chạy trên máy chủ web nhưng hiển thị trên máy khách. Đây là nơi ranh giới giữa lập trình ứng dụng và phát triển web không rạch ròi hoàn toàn.

Xử lý ngôn ngữ web

Lập trình viên

Trước đó, bài viết đã đề cập rằng HTML và CSS không phải là ngôn ngữ lập trình thực sự. Thay vào đó, HTML là một ngôn ngữ đánh dấu và CSS là một ngôn ngữ định kiểu. Cú pháp của chúng mô tả những gì có trên trang, cách nó được tổ chức (HTML) và nó trông sẽ như thế nào (CSS). Chúng được dùng để tạo giao diện, còn ngôn ngữ lập trình dùng để tạo chức năng. Bạn có thể tự mình kiểm tra, bằng cách tạo một tài liệu văn bản trên máy tính có tên là test.html với một số code HTML cơ bản, như sau:

<h2>This demonstrates why <i>HTML is not a programming language</i>, but rather a <u>markup</u> language.</h2>

Lưu và mở nó trong trình duyệt bạn chọn, sau đó, bạn sẽ thấy rằng HTML bạn chỉ định đã có hiệu lực bên trong trình duyệt của bạn. Không có code nào được biên dịch; trình duyệt của bạn chỉ biết cách phiên dịch HTML. So sánh điều này với một chương trình C++ ngắn xuất ra thông điệp “Hi!” trên màn hình - bạn không thể làm cho code đó hoạt động mà không có trình biên dịch như Visual Studio hoặc một trình biên dịch trực tuyến.

Thật công bằng khi nói rằng các nhà phát triển web là một nhóm nhỏ các lập trình viên, chỉ vì các phương pháp và kỹ năng tương tự được áp dụng cho cả hai vị trí. Các nhà phát triển web sử dụng các kỹ năng và công cụ mà các lập trình viên sẽ không dùng tới, chẳng hạn như các tiện ích thiết kế đồ họa và phần mềm chỉnh sửa video. Ngoài ra, các nhà phát triển web thường tiếp xúc với khách hàng hơn các lập trình viên. Một lập trình viên tạo ra Mozilla Firefox, còn một nhà phát triển web xây dựng nên Mozilla.com.

Bạn có kinh nghiệm với tư cách là nhà phát triển hoặc lập trình viên web không? Chia sẻ bất kỳ sự khác biệt quan trọng nào với chúng tôi trong phần bình luận bên dưới và cho mọi người biết bạn đã học được những gì nhé!

Xem thêm:

Thứ Năm, 27/09/2018 19:26
51 👨 387