HTML thuộc loại ngôn ngữ nào

Về mặt kỹ thuật, HTML là một ngôn ngữ lập trình. Trên thực tế, HTML là viết tắt của Hypertext Markup Language. Việc HTML có phải là ngôn ngữ thực hay không là vấn đề ngữ nghĩa và không quá quan trọng

Tuy nhiên, điều quan trọng là phải hiểu rằng HTML - và CSS, đối với vấn đề đó - hoàn toàn khác so với hầu hết các ngôn ngữ khác và thật khó để có được một bức tranh toàn cảnh về cách viết mã chỉ từ hai ngôn ngữ đó.

HTML và CSS khác với các ngôn ngữ khác như thế nào?

HTML và CSS là ngôn ngữ khai báo. Đó là, chúng là những câu lệnh cơ bản tuyên bố những gì sẽ tồn tại trên một trang web. Đây là một số HTML mẫu

This is the headline within this section.

This is a paragraph within this section.

Về cơ bản, HTML ở trên nói rằng trang web này phải chứa một phần và phần đó phải chứa tiêu đề và một đoạn văn. Không có bất kỳ loại tính toán nào - đó là một tuyên bố thực tế đơn giản. Đây là những gì tôi đề cập đến HTML như một ngôn ngữ khai báo

Tương tự, đây là một số CSS mẫu

  p {
    color: red;
    font-size: 12px;
    text-align: center;
  }

CSS ở trên nói rằng tất cả các đoạn văn trên trang web phải có văn bản màu đỏ, kích thước 12 pixel và phải được căn chỉnh ở giữa. Một lần nữa, không có tính toán - nó chỉ là một loạt các khai báo đơn giản

Mặc dù HTML và CSS là ngôn ngữ khai báo, nhưng hầu hết mã hóa là tính toán - và đó là điều mà hầu hết các ngôn ngữ mã hóa khác được thiết kế cho

Đây là một số mã tính toán tính trung bình của một danh sách các số

list = [5, 2, 10, 8, 9, 4, 7]
sum = list.sum
average = sum / list.size

Đoạn mã này, thay vì khai báo, đang thực hiện một loạt phép tính để đạt được kết quả cuối cùng. Dòng đầu tiên khởi tạo danh sách các số. Dòng thứ hai tính tổng của tất cả các số trong danh sách. Dòng thứ ba tính giá trị trung bình bằng cách chia tổng cho số mục trong danh sách

Phần lớn các ngôn ngữ mã hóa liên quan đến việc viết mã tính toán. Mã máy tính không phải lúc nào cũng có bản chất toán học, nhưng đó là mã tạo ra chức năng. Trong khi HTML và CSS là những tuyên bố về những gì sẽ xuất hiện trên một trang web, mã tính toán là thứ làm cho mọi thứ xảy ra. Thêm một mặt hàng vào giỏ hàng của bạn, bắn một kẻ xấu trong trò chơi, xóa một mặt hàng khỏi bảng tính của bạn - đây đều là những ví dụ về chức năng và được thực hiện thông qua mã tính toán

Lý do tại sao sự khác biệt này lại quan trọng là vì nhiều người bắt đầu hành trình viết mã của họ với HTML và CSS. Và mặc dù đó là một nơi tốt để bắt đầu, nhưng điều quan trọng là không nhảy vào một nghề nghiệp mới chỉ dựa trên kinh nghiệm của bạn với những ngôn ngữ đó. Còn quá sớm để cho rằng bạn thích viết mã và đăng ký một bootcamp viết mã nếu bạn mới chỉ có kinh nghiệm với HTML và CSS. Để thực sự biết liệu bạn có thích viết mã hay không, bạn sẽ muốn có một số kinh nghiệm với ngôn ngữ tính toán cổ điển, vì hầu hết các công việc lập trình chủ yếu là viết mã tính toán.

Nếu bạn đang quyết định thử dùng ngôn ngữ máy tính nào trước, hãy xem bài đăng trên blog của chúng tôi về chủ đề đó tại đây

Tôi đã nghe câu đó rất nhiều lần và nó thật mệt mỏi. Thông thường, nó được theo sau bởi một cái gì đó như, Nó không có logic, hoặc, Nó không hoàn thành Turing,. vì vậy… rõ ràng nó không phải là ngôn ngữ lập trình. Giống như nó đã khép lại vụ việc và nên kết thúc cuộc trò chuyện

Nó nên được, mặc dù?

Tôi muốn xem xét các lập luận điển hình mà tôi nghe được thường coi thường HTML và đưa ra các phản bác của riêng tôi để cho thấy những tuyên bố đó không hoàn toàn chính xác như thế nào

Mục tiêu của tôi không phải là chứng minh rằng HTML có phải là ngôn ngữ lập trình hay không, mà là để chỉ ra rằng ba đối số chính được sử dụng để khẳng định nó không phải là thiếu sót hoặc không chính xác, do đó làm mất hiệu lực kết luận từ quan điểm logic

“HTML là ngôn ngữ đánh dấu, không phải ngôn ngữ lập trình”

Tuyên bố này, bản thân nó, nghe có vẻ tuyệt vời… nhưng nó sai. ngôn ngữ đánh dấu có thể là ngôn ngữ lập trình. Không phải tất cả chúng đều như vậy [hầu hết là không] nhưng chúng có thể. Nếu chúng ta vẽ biểu đồ Venn của ngôn ngữ lập trình và ngôn ngữ đánh dấu, nó sẽ không phải là hai vòng tròn riêng biệt mà là hai vòng tròn giao nhau một chút

Dự phòng nhúng CodePen

Một ngôn ngữ đánh dấu hoạt động với các biến, có cấu trúc điều khiển, vòng lặp, v.v. , cũng sẽ là một ngôn ngữ lập trình. Chúng không phải là những khái niệm loại trừ lẫn nhau

và LaTeX là những ví dụ về ngôn ngữ đánh dấu cũng được coi là ngôn ngữ lập trình. Có thể không thực tế để phát triển với họ, nhưng có thể. Và chúng ta có thể tìm thấy các ví dụ trực tuyến, chẳng hạn như trình thông dịch BASIC hoặc bộ điều khiển Mars Rover [đã giành giải Ban giám khảo trong cuộc thi lập trình ICFP 2008]

Mặc dù một số ngôn ngữ đánh dấu có thể được coi là ngôn ngữ lập trình, nhưng tôi không nói rằng HTML là một trong số đó. Vấn đề là tuyên bố ban đầu là sai. ngôn ngữ đánh dấu có thể là ngôn ngữ lập trình. Do đó, nói rằng HTML không phải là ngôn ngữ lập trình vì nó là ngôn ngữ đánh dấu dựa trên một tuyên bố sai và bất kỳ kết luận nào bạn rút ra từ tiền đề đó sẽ hoàn toàn sai

“HTML không có logic”

Khiếu nại này yêu cầu chúng tôi làm rõ "logic" nghĩa là gì vì định nghĩa có thể làm bạn ngạc nhiên

Như với tính đầy đủ của Turing [mà chúng ta chắc chắn sẽ nói đến], những người mang lập luận này ra bàn dường như hiểu sai chính xác nó là gì. Tôi đã yêu cầu mọi người cho tôi biết ý nghĩa của từ “logic” và đã nhận được những câu trả lời thú vị như

Logic là một lý do hợp lý hoặc cách suy nghĩ

Thật tuyệt nếu những gì chúng tôi đang tìm kiếm là một định nghĩa từ điển về logic. Nhưng chúng ta đang nói về logic lập trình, không chỉ logic như một thuật ngữ chung. Tôi cũng đã nhận được câu trả lời như

Ngôn ngữ lập trình có biến, điều kiện, vòng lặp, v.v. HTML không phải là ngôn ngữ lập trình vì bạn không thể sử dụng các biến hoặc điều kiện. Nó không có logic

Điều này là tốt [và chắc chắn tốt hơn là tham gia vào true/false/AND/OR/etc. ], nhưng cũng không chính xác. HTML có các biến - ở dạng thuộc tính - và có các cấu trúc điều khiển có thể được sử dụng cùng với các biến/thuộc tính đó để xác định nội dung được hiển thị

Nhưng làm thế nào để bạn kiểm soát các biến đó?

Sai một lần nữa. Có một số phần tử HTML có logic kiểm soát bên trong và không yêu cầu JavaScript hoặc CSS để hoạt động. Và tôi không nói về những thứ như hoặc – là những cấu trúc điều khiển thô sơ và là một phần của tiêu chuẩn trong nhiều thập kỷ. Tôi đang đề cập đến các phần tử sẽ phản hồi đầu vào của người dùng và thực hiện các hành động có điều kiện tùy thuộc vào trạng thái hiện tại của phần tử và giá trị của một biến. Lấy bộ dữ liệu /

  p {
    color: red;
    font-size: 12px;
    text-align: center;
  }
0 hoặc phần tử
  p {
    color: red;
    font-size: 12px;
    text-align: center;
  }
1 làm ví dụ. khi người dùng nhấp vào chúng, chúng sẽ đóng nếu có thuộc tính
  p {
    color: red;
    font-size: 12px;
    text-align: center;
  }
2 và chúng sẽ mở nếu không có. Không cần JavaScript

Dự phòng nhúng CodePen

Vì vậy, chỉ nói rằng HTML không phải là ngôn ngữ lập trình vì nó thiếu logic là sai lầm. Chúng tôi biết rằng HTML thực sự có khả năng đưa ra quyết định dựa trên đầu vào của người dùng. HTML có logic, nhưng nó vốn khác với logic của các ngôn ngữ khác được thiết kế để thao tác dữ liệu. Chúng ta sẽ cần một lập luận mạnh mẽ hơn thế để chứng minh rằng HTML không phải là một dạng lập trình

“HTML không phải là 'Turing hoàn tất'"

OK, đây là vấn đề chúng ta thấy thường xuyên nhất trong cuộc tranh luận này. Về mặt kỹ thuật, việc nói rằng HTML không phải là Turing hoàn chỉnh là đúng về mặt kỹ thuật [loại đúng nhất], nhưng nó sẽ gây ra một cuộc tranh luận lớn hơn là chỉ sử dụng nó như một tuyên bố kết thúc vụ việc.

Tôi sẽ không đi sâu vào ý nghĩa của việc hoàn thành Turing vì có rất nhiều tài nguyên về chủ đề này. Trên thực tế, Lara Schenck đã tóm tắt nó rất hay trong một bài đăng mà cô ấy lập luận rằng CSS đã hoàn thiện Turing

Nói một cách đơn giản nhất, để một ngôn ngữ hoặc máy hoàn thành Turing, điều đó có nghĩa là nó có khả năng làm những gì máy Turing có thể làm. thực hiện bất kỳ tính toán, một. k. a. tính toán phổ quát. Xét cho cùng, lập trình được phát minh ra để làm toán mặc dù bây giờ chúng ta làm được nhiều hơn thế với nó, tất nhiên rồi

Bởi vì hầu hết các ngôn ngữ lập trình hiện đại đều là Turing hoàn chỉnh, mọi người sử dụng nó làm định nghĩa của ngôn ngữ lập trình. Nhưng Turing-đầy đủ không phải là. Đó là một tiêu chí để xác định xem một hệ thống [hoặc bộ quy tắc của nó] có thể mô phỏng máy Turing hay không. Nó có thể được sử dụng để phân loại ngôn ngữ lập trình; . Nó thậm chí không áp dụng riêng cho các ngôn ngữ lập trình. Lấy ví dụ như game Minecraft [đáp ứng tiêu chí đó] hay game thẻ bài Magic. The Gathering [cũng đáp ứng tiêu chí]. Cả hai đều hoàn thành Turing nhưng tôi nghi ngờ bất cứ ai sẽ phân loại chúng là ngôn ngữ lập trình

Tính đầy đủ của Turing hiện đang là mốt giống như cách mà một số người trong quá khứ coi là sự khác biệt giữa biên dịch và. ngôn ngữ được giải thích là tiêu chí tốt. Đúng. Chúng ta không cần phải cố gắng ghi nhớ nhiều khi các nhà phát triển [chủ yếu là back-end] đã đánh giá thấp lập trình front-end [bao gồm cả JavaScript và PHP] không phải là “lập trình thực sự”. ” Đôi khi bạn vẫn nghe thấy nó, mặc dù bây giờ đã phai mờ, lầm bầm và lẩm bẩm

Định nghĩa về lập trình là gì [hoặc không] thay đổi theo thời gian. Tôi cá là ai đó đang phân loại thẻ đục lỗ đã phàn nàn về cách gõ mã trong hợp ngữ không phải là lập trình thực sự. Không có gì phổ quát hoặc được viết bằng đá. Không có định nghĩa thực sự

Tôi phải nói rằng tính đầy đủ của Turing là một tiêu chuẩn công bằng, nhưng là một tiêu chuẩn thiên vị và chủ quan - không phải ở dạng của nó mà ở cách nó được chọn. Tại sao một ngôn ngữ có khả năng tạo Máy hoàn chỉnh Turing lại được coi là “ngôn ngữ lập trình” trong khi một ngôn ngữ khác có khả năng tạo Máy trạng thái hữu hạn thì không? . Đó là một cái cớ giống như bất kỳ lý do nào khác để phân biệt giữa “nhà phát triển thực sự” [những người đưa ra yêu sách] và những người kém cỏi hơn họ

Để tăng thêm sự xúc phạm cho thương tích, rõ ràng là nhiều người lặp đi lặp lại câu thần chú “HTML không phải là Turing hoàn chỉnh” thậm chí không biết hoặc hiểu tính đầy đủ của Turing nghĩa là gì. Nó không phải là một giải thưởng hay một con dấu chất lượng. Nó không phải là một huy hiệu danh dự. Nó chỉ là một cách để phân loại các ngôn ngữ lập trình - để nhóm chúng lại, không định nghĩa chúng. Một ngôn ngữ lập trình có thể là Turing hoàn chỉnh hoặc không giống như cách nó có thể được giải thích hoặc biên dịch, mệnh lệnh hoặc khai báo, thủ tục hoặc hướng đối tượng

Vậy HTML có phải là ngôn ngữ lập trình không?

Nếu chúng ta có thể loại bỏ các lập luận chính cho rằng HTML không phải là ngôn ngữ lập trình, thì điều đó có thực sự có nghĩa là HTML là ngôn ngữ lập trình không? . Và như vậy, cuộc tranh luận sẽ tiếp tục cho đến khi tiêu chuẩn HTML phát triển hoặc “định nghĩa hiện tại” về ngôn ngữ lập trình thay đổi

Nhưng với tư cách là nhà phát triển, chúng ta phải cảnh giác với câu hỏi này vì trong nhiều trường hợp, nó không được sử dụng để châm ngòi cho một cuộc tranh luận nghiêm túc mà để khuấy động tranh cãi trong khi che giấu những động cơ thầm kín. từ việc dễ dàng nhận được các phản ứng trên Internet, đến việc giảm thiểu một cách nguy hiểm sự đóng góp của một nhóm người vào hệ sinh thái phát triển

Hoặc, như Ashley Kolodziej đã tóm tắt nó một cách tuyệt vời trong bài ca ngợi HTML của cô ấy

Họ nói rằng bạn không phải là một ngôn ngữ lập trình thực sự như những ngôn ngữ khác, rằng bạn chỉ là ngôn ngữ đánh dấu, và về mặt kỹ thuật, tôi cho rằng điều đó đúng. Về mặt kỹ thuật, JavaScript và PHP là ngôn ngữ kịch bản. Tôi nhớ khi biết JavaScript không thú vị lắm, khi nó cũng không phải là ngôn ngữ “thực sự”. Đôi khi, tôi cảm thấy như những sự khác biệt này là vô nghĩa, giống như chúng tôi đã xây dựng một vốn từ vựng để giữ chân bạn [và rộng hơn là chính chúng tôi với tư cách là nhà phát triển]. Bạn, với tư cách là một ngôn ngữ đánh dấu, có giá trị và thế mạnh riêng. Biết cách làm việc với bạn tốt nhất là một chuyên môn thực sự, một kỹ năng thường bị bỏ qua

Không phụ thuộc vào lập trường mà chúng tôi đảm nhận trong cuộc thảo luận “HTML có/không phải là ngôn ngữ lập trình”, chúng ta hãy tôn vinh nó và không phủ nhận tầm quan trọng của nó. HTML là xương sống của Internet. Đó là một ngôn ngữ tuyệt đẹp với tài liệu phong phú và cú pháp phong phú, nhưng đơn giản đến mức có thể học trong một buổi chiều và phức tạp đến mức phải mất nhiều năm để thành thạo. Ngôn ngữ lập trình hay không, điều thực sự quan trọng là chúng ta có HTML ngay từ đầu

HTML và CSS thuộc loại ngôn ngữ nào?

Tóm lại, đó là ngôn ngữ kiểu trang tính , là loại ngôn ngữ bạn có thể sử dụng để mô tả cách trình bày của ngôn ngữ đánh dấu .

HTML có phải là ngôn ngữ lập trình không?

HTML không phải là ngôn ngữ lập trình . Đó là một ngôn ngữ đánh dấu. Trên thực tế, đó là tên của công nghệ. Ngôn ngữ đánh dấu siêu văn bản.

Tại sao HTML không phải là ngôn ngữ lập trình?

Ngôn ngữ lập trình có biến, điều kiện, vòng lặp, v.v. HTML không phải là ngôn ngữ lập trình vì bạn không thể sử dụng các biến hoặc điều kiện

HTML có phải là ngôn ngữ JavaScript không?

Cả hai đều là ngôn ngữ máy tính hỗ trợ lập trình, nhưng có sự khác biệt lớn giữa JavaScript và HTML. Mặc dù JavaScript [viết tắt là JS] là ngôn ngữ kịch bản, HTML là ngôn ngữ đánh dấu . Chúng tôi sử dụng HTML để tạo các trang web hoặc ứng dụng web.

Chủ Đề