Hội như một ngôn ngữ lập trình đầu tiên? [đóng cửa]


12

Bạn nghĩ nó sẽ tốt đến mức nào khi dạy mọi người hội (một số biến thể) như một ngôn ngữ lập trình đầu tiên? Nó sẽ tốn nhiều công sức hơn so với việc học ví dụ Java hoặc Python, nhưng người ta sẽ hiểu rõ về máy ít nhiều từ "ngày lập trình một" (ít nhất là so với nhiều ngôn ngữ cấp cao hơn). Bạn nghĩ sao? Đó có phải là một ý tưởng thực tế, ít nhất là với những người đã sẵn sàng để nỗ lực thêm? Ưu điểm và nhược điểm?

Lưu ý: Tôi không có giáo viên, chỉ tò mò


5
Tôi nghĩ nó phù hợp hơn với những người nghiên cứu về khoa học máy tính chứ không phải kỹ thuật / phát triển phần mềm
Imran Omar Bukhsh

1
@Imran Tôi đồng ý với hiệu trưởng, nhưng mọi chương trình cấp đại học tôi có thể nghĩ đều có bằng Khoa học Máy tính mà những người chủ yếu đi làm về Kỹ thuật phần mềm kiếm được. (Tôi cho rằng câu hỏi này là về một cơ sở nghiêm túc cho sự nghiệp lập trình, chứ không phải là khóa học khảo sát ở trường trung học)
G__

7
@Imran - Tôi thấy rằng một chút ngạc nhiên. Khoa học máy tính chắc chắn nghiêng về toán học và lý thuyết? Quan tâm nhiều hơn đến các bộ, đại số trừu tượng và ký hiệu tiệm cận hơn là trong việc nghịch ngợm và viết các đoạn lặp lại vô tận của move-blah-to-blah.
Steve314

2
Khoa học máy tính chắc chắn có tóm tắt các môn học, nhưng nó cũng rất "gần với phần cứng" ở một số khía cạnh. Tôi đã từng tham dự LICS, một hội nghị Khoa học Máy tính. Tôi nhớ nó có các bài báo về địa phương dữ liệu của các thuật toán sắp xếp khác nhau mà tôi tưởng tượng mang lại nền tảng lý thuyết cho việc nghiên cứu hiệu quả thực tế của các thuật toán. Về lắp ráp, cá nhân tôi thấy nó có một số điểm tương đồng với một số mô hình tính toán lý thuyết (máy Turing, máy đếm ...)
Joh

1
Mỗi lập trình viên ít nhất nên đọc về cách hoạt động của lắp ráp, IMO. Nó mang lại cho tôi nhiều cái nhìn sâu sắc và tôi thường không gần gũi với chrome như bạn có thể nhận được. Ngôn ngữ hội của Jeff Duntemann Từng bước là một cách đọc thú vị cho người mới bắt đầu.
Erik Reppen

Câu trả lời:


14

Sẽ rất khó để truyền cảm hứng cho một lập trình viên mới với mã lắp ráp. Một lời chào năng động, trang web của người dùng mát mẻ hơn với ít nỗ lực hơn. Tôi không nói rằng các bài học cơ bản là như nhau, nhưng một khóa học giới thiệu sẽ có một nội dung truyền cảm hứng lớn, nếu không sẽ không có khóa học thứ hai.

Tôi nhớ các khóa học lập trình ban đầu của tôi đã được dạy trong Scheme và tôi rất thất vọng vì tôi không thể dễ dàng biên dịch thành .exe và "chạy" chương trình của mình (tôi nghĩ MS Visual Basic là phần cuối của lập trình). Mãi cho đến nhiều năm sau, tôi mới thực sự nắm bắt được một công cụ mạnh mẽ mà tôi đã chơi với nó. Tôi nghĩ rằng tôi sẽ đánh giá cao nó hơn và rút ra những bài học tốt hơn nếu tôi có một số kinh nghiệm ban đầu về một cái gì đó thực dụng hơn một chút lúc đầu.


20
Tôi đã thấy nhiều sinh viên vô cùng kinh ngạc khi nháy đèn LED và di chuyển động cơ.
whatsisname

1
@Whatsisname +1, sẽ tạo ra một bản demo ấn tượng đẹp, miễn là nó có thể được thực hiện mà không bị cuốn vào các thiết bị điện tử. Tất nhiên, điều đó có thể được thực hiện với một ngôn ngữ cấp cao hơn, tức là hack Roomba, nếu "trình điều khiển" là một hộp đen do người hướng dẫn cung cấp.
G__

1
Rất nhiều lập trình viên mới đã được truyền cảm hứng từ việc lắp ráp trên VIC20, C = 64 và các máy tương tự.
Gaius

2
@Gaius Không phải lúc đầu! Bạn bật các máy đó và bạn đang ở trong một trình thông dịch cơ bản. Hội thảo đến sau một số lượng kinh nghiệm hợp lý và đạt đến giới hạn của những gì cơ bản có thể làm ...
G__

1
@whatsisname nhưng bạn có thể sử dụng thứ gì đó như Arduino để nháy đèn LED và di chuyển động cơ mà không cần phải học lắp ráp
Ken Liu

12

Tôi nghĩ rằng đó là một ý tưởng tồi tệ cho cả sinh viên Kỹ thuật phần mềm và CS, và nói chung bất cứ ai quan tâm đến lập trình hơn là điện tử.

có thể được thực hiện, nhưng nó không có nghĩa là nó nên được thực hiện. Trước đây, cách để làm những thứ thực sự tuyệt vời với máy tính gia đình là học lắp ráp trước. Đó là do những hạn chế phần cứng ban đầu - ngôn ngữ cấp cao hơn không đủ mạnh và đủ nhanh. Ngày nay, bạn có thể làm nhiều thứ hay ho hơn, trong thời gian ngắn hơn, với ngôn ngữ cấp cao hơn.

Điều gì nghe có vẻ thú vị hơn, viết một nguyên mẫu nhanh cho một trò chơi đơn giản và chơi đùa với các biến thể trên một thuật toán, hoặc vật lộn với các thanh ghi và các công cụ cấp thấp?


3
Là một nghệ sĩ piano, tôi chắc chắn đã thấy thú vị hơn khi nhảy ngay vào một số bài hát, nhưng để trở nên đàng hoàng, bạn cần luyện tập arpeggios, thang âm, v.v. giống như) bạn cần biết đàn piano hoạt động từ trong ra ngoài. Đó là tất cả những gì bạn muốn biết nghề của bạn.
John

10
@ John tại CashCommons: Tương tự xấu. Bắt đầu với trình biên dịch chương trình cũng giống như bắt đầu búa, bàn phím, trọng lượng và giảm chấn. Và sau đó chuyển sang lý thuyết âm nhạc (vòng tròn thứ năm) để giải thích việc kinh doanh phím đen, phím trắng. Sau đó chuyển sang lý thuyết âm nhạc nhiều hơn trước khi chơi một quy mô.
S.Lott

3
@ S.Lott: Ehhhhh ... đừng mua cái đó. Tôi có thể viết một chương trình kiểu "hello world" trong lắp ráp mà không phải lo lắng về bóng bán dẫn. Người ta không cần phải là một nhà thiết kế chip để trở thành một lập trình viên. Kiến thức mà bạn đang nói đến sẽ là nền tảng để xây dựng hoặc sửa chữa đàn piano, vốn chỉ liên quan đến con trỏ khi chơi đàn.
John

3
@ John tại CashCommons: "xây dựng hoặc sửa chữa đàn piano". Đó là sự tương tự với trình biên dịch chương trình. Một tầm thường "hello world" trong lắp ráp có thể được viết, nhưng nó cuộc gọi API chỉ OS - có hiệu lực bỏ qua tất cả các chi tiết kinh hoàng của lắp ráp. Để viết trình điều khiển I / O, trình biên dịch là cần thiết. Tương tự như cách búa và giảm chấn là về xây dựng và bảo trì, không thực hiện.
S.Lott

1
@ S.Lott: Hmmmm ... Tôi đoán bộ hướng dẫn cụ thể không phụ thuộc vào chip, phải không? Điểm tốt.
John

7

Tôi không nghĩ đó là một ý tưởng tồi tệ, nhưng bạn sẽ cung cấp cho những sinh viên này phức tạp đến mức nào? Hội mất nhiều công việc hơn. Có thể ổn khi bắt đầu chúng với những thứ rất cơ bản và sau đó chuyển chúng sang thứ gì đó dễ làm việc hơn, một khi họ đã nhận được sự đánh giá cao khi làm việc ở cấp thấp hơn. Sinh viên lần đầu đôi khi có ý tưởng trong đầu, họ sẽ viết mã Halo, hoặc MS Office hoặc AutoCAD tiếp theo hoặc một cái gì đó, và khi họ thấy có bao nhiêu công việc đi vào một ngôn ngữ lắp ráp đơn giản , họ có thể sợ hãi, vì vậy hãy làm rõ rằng có những thứ tốt hơn lắp ráp và sau đó chuyển chúng sang đó một khi họ đã nhìn thấy các khái niệm. Bạn cũng có thể thử dạy đồng bộ với những thứ khác như C.

Ngoài ra, ngôn ngữ lắp ráp nào? Tôi phần nào nhớ lại MIPS tương đối dễ làm việc và tôi nghĩ nó chạy trong trình giả lập nên không có nguy cơ gây ra sự cố cho máy thật , mặc dù có thể có nhiều công cụ tốt hơn bây giờ.

Điều này có thể hoạt động tốt, nếu nó được thực hiện đúng. Hãy cẩn thận ...


+1 cho sự phức tạp của vấn đề. Phiếu bầu của tôi sẽ tương phản với một vài triển khai trình biên dịch so với triển khai ngôn ngữ cấp cao hơn. Và có thể sử dụng trình biên dịch 68000 trong trình giả lập thay vì x86 - Tôi không biết trình biên dịch x86 / amd64 đã phát triển như thế nào, nhưng 68000 đã sạch hơn và dễ dàng hơn để làm việc với hơn 8086 trước đó. Cũng có thể đáng xem xét - một trình biên dịch máy ảo như bạn có thể nhận được với LLVM. Không giống như trình biên dịch thực sự, nhưng nó chia sẻ rất nhiều nguyên tắc tương tự, và có lẽ phù hợp hơn.
Steve314

Dạy ASM đồng thời với C nghe có vẻ là một ý tưởng khá hay
Anto

@ Steve314: Tôi không sử dụng trình biên dịch x86, nhưng có vẻ như nó phức tạp hơn 8086.
David Thornley

@David - Tôi mong đợi như vậy, nhưng nó có thể đã đơn giản hơn theo một số cách. Trong 8086 ngày, phạm vi các chế độ địa chỉ khả dụng phụ thuộc vào đăng ký cụ thể mà bạn đang sử dụng, cũng như hướng dẫn. Trên 68000, đã có (cho hầu hết các mục đích) các thanh ghi dữ liệu và các thanh ghi địa chỉ, với mỗi loại được sử dụng khá đồng đều, không có rắc rối nào là chỉ số-hoặc-một-cơ sở-con trỏ-cơ sở-con trỏ. Theo thời gian, có lẽ điều đó đã thay đổi? 68000 cũng có nhiều thanh ghi hơn, tiết kiệm một số bộ nhớ di chuyển vào và ra. Dù sao, bạn không cần phải học các công cụ SIMD để có được các nguyên tắc biên dịch cơ bản.
Steve314

@David - Tôi không thể tin rằng tôi đã quên (bị kìm nén) địa chỉ được phân đoạn. Điều này là đủ xấu trong một ngôn ngữ cấp cao. Hiện tại đã phân đoạn địa chỉ một lần nữa, nhưng đó là một điều khác, liên quan đến bộ nhớ ảo, v.v., mà các lập trình viên cấp ứng dụng không cần phải lo lắng.
Steve314

7

Hội là ngôn ngữ đầu tiên chúng ta học ở trường điện tử (từ những năm 1900) và nó dường như là một lựa chọn tự nhiên. Chúng tôi đã làm việc theo cách của chúng tôi thông qua các khóa học của chúng tôi từ các thành phần riêng biệt, đến logic bóng bán dẫn điện trở, cổng logic, mạch tích hợp, bộ xử lý và để lập trình trong lắp ráp. Rất nhiều học sinh trong các lớp này chưa bao giờ lập trình bằng bất kỳ ngôn ngữ nào trước đó và họ đã chọn nó ngay.

Vì vậy, lắp ráp có thể là một lựa chọn tốt cho ngôn ngữ đầu tiên nếu nền tảng phù hợp được đặt ra cho học sinh. Tuy nhiên, đối với bất kỳ ai có mục tiêu trở thành một ứng dụng hoặc nhà phát triển Web, tôi nghĩ rằng việc lắp ráp có lẽ là điểm khởi đầu quá thấp.


7

Một điều chắc chắn là, nếu mọi người, học hội trước, làm cho nó, họ sẽ là những lập trình viên tuyệt vời.

Điều này nhắc nhở tôi khi tôi học lái xe. Mẹ tôi khăng khăng

Tìm hiểu trên một chiếc xe tự động cho đến khi bạn có được sự tự tin, và sau đó bạn có thể lái những chiếc xe thủ công của chúng tôi.

Lý do là cô ấy không muốn tôi bị phân tâm nhiều hơn tôi cần, tất cả cùng một lúc.

Áp dụng điều đó vào việc học cách lập trình, có cần thiết phải ném tất cả mọi thứ vào người học cùng một lúc không? Họ tìm hiểu một biến là gì đồng thời họ học được bao nhiêu dữ liệu họ có thể lưu trữ trong loại đăng ký nào?

Hơn một nửa lớp học của tôi đã thất bại lớp lắp ráp của chúng tôi, và đây là một nhóm người, vào thời điểm đó, đã tự coi mình là người am hiểu về lập trình trong hơn 2 năm.

Sở thích cá nhân của tôi, nếu tôi phải học lại mọi thứ, sẽ là bắt đầu với một ngôn ngữ càng nhiều càng tốt cho tôi. Sau đó, khi tôi học, di chuyển ngược về phía các ngôn ngữ cấp thấp hơn.


1
Tôi nghĩ rằng đây là lời khuyên tốt và đúng đắn. Tại một số điểm, điều quan trọng là phải nhận biết bit và byte và bộ xử lý làm gì với chúng nhưng bắt đầu với chúng là một nỗ lực vô cùng lãng phí vì chúng ta có các ngôn ngữ như ruby ​​và python hoàn hảo cho người mới bắt đầu và khuyến khích các nguyên tắc kỹ thuật phần mềm tuyệt vời.
davidk01

1
Bạn đã xem xét khả năng người hướng dẫn đã làm một công việc ít xuất sắc hơn là dạy lớp ngôn ngữ lắp ráp chưa?
John R. Strohm

Tôi nghĩ anh ấy đã làm một công việc tuyệt vời.
CrazyPenguin

3

Đó có phải là một ý tưởng thực tế, ít nhất là với những người đã sẵn sàng để nỗ lực thêm?

Không

nhưng người ta sẽ hiểu rõ về máy

Tại sao đó là lợi thế? Bạn có thể cung cấp một ví dụ hoặc một gợi ý về việc làm thế nào điều này có thể có giá trị?

Ưu điểm và nhược điểm?

Ưu điểm: Không có.

Nhược điểm:

  • Một mớ hỗn độn của những câu đố ngẫu nhiên về cờ và trạng thái và các thanh ghi và các sơ đồ địa chỉ bộ nhớ phức tạp và các thiết bị I / O và DMA và các ngắt và chu kỳ đồng hồ và các thứ. Không ai trong số đó giúp hiểu các ngôn ngữ và máy tính dựa trên VM hiện đại.

  • Ngắt kết nối với giải quyết vấn đề thực tế mà máy tính thực sự được áp dụng.

  • Một cuộc ly hôn với người dùng cuối và dữ liệu thực tế và xử lý các vấn đề họ cần giải quyết.

  • Một loạt các giải thích không cần thiết về máy và máy ảo, trình biên dịch và phiên dịch và toàn bộ rùa đang giữ thế giới.

  • Rất nhiều chi tiết "đây là sự thực thi vật lý của một" đối tượng "trong ngôn ngữ cấp cao hơn mà cuối cùng họ đến.

  • Rất nhiều chi tiết "đây là cách các hàm phương thức được gửi đi" bằng ngôn ngữ cấp cao hơn mà cuối cùng chúng đến.

  • Rất nhiều giải thích "điều này không áp dụng cho 80386 nhưng không áp dụng cho các giải thích về chipset 80586".

  • Rất nhiều lệnh gọi API hệ điều hành cấp thấp để tạo chương trình ASM làm bất cứ điều gì có vẻ tương tự như hữu ích bởi ai đó.

Quan điểm của ngôn ngữ lập trình đầu tiên là không làm chủ chipset.

Điểm của ngôn ngữ lập trình đầu tiên là

  1. Hiểu cách nghĩ về điện toán.

  2. Hiểu cách làm xử lý dữ liệu hữu ích.

  3. Hiểu làm thế nào để hoàn thành một cái gì đó. Thiết kế - mã - kiểm tra.


1
@ S.Lott - Chắc chắn, đó không phải là điểm của câu hỏi ban đầu của tôi, nhưng có thể có lợi khi có những câu hỏi này trước khi bạn đi đến các ngôn ngữ cấp cao hơn. Đừng hiểu sai ý tôi, bạn đưa ra quan điểm hợp lệ.
Anto

3
-1 Rất nhiều nhược điểm của bạn, tôi xem xét lợi thế. Tốt hơn là nên biết làm thế nào mức thấp hoạt động, trước khi bạn sử dụng nó từ trên. Nền tảng là quan trọng.
Orble

1
Trình biên dịch như một ngôn ngữ lập trình, giúp bạn hiểu rõ hơn về cấu trúc dữ liệu, logic và nền tảng cấp thấp hơn so với các ngôn ngữ cấp cao hơn. Cả hai đều có một vị trí, trình biên dịch có thể dễ hiểu hơn các ngôn ngữ cấp cao hơn, miễn là bạn không cố gắng đạt được bất cứ điều gì quá phức tạp. Mọi người không nên cố gắng làm những việc phức tạp lúc đầu.
Orble

4
Ưu điểm của trình biên dịch chương trình là trình diễn cách một máy tính thực sự hoạt động. Bạn biết. Điều mọi thứ thực sự chạy trên .
Paul Nathan

1
@ S.Lott - Không, nhưng điều đó có nghĩa là bạn rất có thể sử dụng hầu hết các kiến ​​thức cũ mà bạn đã thu thập và bổ sung kiến ​​thức mới theo thời gian. Hãy nhìn xem, các ngôn ngữ cấp cao như Python đi kèm với các phiên bản mới theo thời gian, nhưng kiến ​​thức cũ vẫn có thể sử dụng được (và thực tế, Python đã phá vỡ khả năng tương thích ngược với v3)
Anto

3

Nếu tôi được giao nhiệm vụ thiết kế một chương trình giảng dạy, tôi sẽ có hai khóa học chạy cùng lúc trong học kỳ đầu tiên: asm + tổ chức / kiến ​​trúc máy tính cơ bản và một khóa học dựa trên SICP được thành lập tại Scheme. Học kỳ thứ hai sẽ được định hướng xung quanh các cấu trúc dữ liệu và các thuật toán cơ bản trong Đề án.

Năm thứ hai sẽ là một dự án dài cả năm sử dụng một trong Delphi, C ++ hoặc C #, tập trung vào thiết kế phần mềm hiện đại (thiết kế OO, một số thiết kế chức năng, kỹ thuật phần mềm, kiểm soát phiên bản, v.v.).

Hiệu quả sẽ là đưa ra một nền tảng mạnh mẽ trong cả trừu tượng và thực tế, dẫn đến các khóa học chuyên sâu trong năm thứ ba và thứ tư.


3

Tôi đã từng tham gia các lớp học khoa học máy tính giới thiệu TA và tôi nghĩ đó là một ý tưởng tồi.

  1. Hội sử dụng cả logic (nếu goto này) và các bản dịch rất khó giữa các khái niệm và số. Các sinh viên CS giới thiệu thường phải vật lộn với logic (các vòng lặp, nếu / khác, các biểu thức boolean) và thực sự cần phải xử lý vấn đề này trước khi họ cũng lo lắng về những con số nào có nghĩa là biểu thức logic nào. Sử dụng các ngôn ngữ cấp cao hơn trừu tượng hóa logic này cho những sinh viên chưa có lý do để nghĩ theo cách đó trước đây.
  2. Các lớp CS giới thiệu không nhất thiết chỉ được thực hiện bởi các chuyên gia CS, những người sẽ tiếp tục với CS. Thông thường, chúng cũng được thực hiện bởi các chuyên ngành kỹ thuật và phi chuyên ngành khác, những người chỉ "lưu diễn" một chủ đề thú vị cho một môn tự chọn. Hội là tuyệt vời cho một nền tảng cho các sinh viên CS cam kết, cứng rắn, nhưng không cung cấp một cái nhìn tổng quan rất tốt về những gì lập trình thường dành cho sinh viên xem xét chuyên ngành hoặc những người sẽ không bao giờ học chuyên ngành mà muốn giới thiệu về lĩnh vực này ; Nó cũng không hữu ích lắm trong hầu hết các lĩnh vực.
  3. Các ngôn ngữ cấp cao hơn làm cho cốt lõi của lập trình thực tế hoạt động minh bạch hơn. Hội đánh vào một số chủ đề nền tảng chính - khái niệm bộ nhớ cơ bản, khái niệm hiệu suất cơ bản, v.v. - nhưng không thực sự tạo ra một thiết kế có thể đọc được, có thể đọc được, điều quan trọng hơn ngày nay, IMO. Các sinh viên ban đầu dường như thường có các ý tưởng "Lập trình viên thực sự viết mã" lỗi thời, không ai khác có thể xử lý ", và dạy một ngôn ngữ cấp cao hơn giúp dạy rằng mã hóa là một nhiệm vụ hợp tác chứ không chỉ là xuất sắc.

Phải nói rằng, tôi nghĩ rằng lắp ráp / phần cứng máy tính nên là một lớp rất sớm - lý tưởng, quý đầu tiên trong chuyên ngành. Yêu cầu học sinh có một ngôn ngữ cấp cao trong vành đai của mình, sau đó nhảy vào công cụ phần cứng cấp thấp ngay trước khi chuyển sang cấu trúc dữ liệu - lý tưởng là ngôn ngữ yêu cầu quản lý bộ nhớ.


Rất tốt nói - Tôi đồng ý. Khóa học đầu tiên cần đi đến điểm, cho thấy sự hữu ích từ đầu đến cuối của các kỹ năng được học và khơi dậy trí tưởng tượng: "Trời ạ! Tôi có thể lập trình? Bây giờ tôi có thể làm gì khác với kỹ năng mới này ..." Đồng ý rằng thời gian tốt nhất cho ngôn ngữ lắp ráp là sau một ngôn ngữ cấp cao hơn. Điều đó thúc đẩy việc tìm kiếm "dưới mui xe" về cách máy tính thực sự hiểu những thứ cấp cao hơn. Nhìn thấy ngôn ngữ lắp ráp lần đầu tiên sau khi ngôn ngữ cấp cao hơn để lại tác động mạnh mẽ khác: học sinh gặp thiết bị điện tử, chip, cảm biến, v.v.
Assad Ebrahim

3

Hội là ngôn ngữ thứ hai của tôi, ngay sau BASIC. Tuy nhiên, khi tôi đang học thì đó là một khoảng thời gian khác. Hàng hóa 64 của tôi có sẵn các ngôn ngữ khác, nhưng nếu bạn muốn mọi thứ có vẻ nhanh hoặc muốn làm nhiều việc một lúc, bạn cần học ngôn ngữ lắp ráp và cách làm việc với các ngắt. Hệ điều hành môi trường đồ họa (GEOS) đã cung cấp cho hệ thống cửa sổ hàng hóa cũng là tất cả lắp ráp. Đó là API lắp ráp tốt nhất mà tôi từng thấy. Đó cũng là nền tảng duy nhất tôi sử dụng để bạn có thể tạo kiểu cho mã của mình. Đúng vậy, bạn có thể sử dụng chữ nghiêng và các cỡ chữ khác nhau - thứ gì đó tỏ ra hữu ích để đọc các bình luận.

Tôi đã học được rất nhiều về cách thức hoạt động của Commodore, nhưng chip Motorolla có bộ opcode rất đơn giản. Không quá khó để giữ ít hơn 255 opcodes tách biệt với nhau. Tôi không thể đưa trải nghiệm của mình lên chip Motorolla 6510 để lập trình cho Intel 8086. Các kiến ​​trúc chip và hệ thống quá khác nhau. Tôi tưởng tượng rằng tôi cũng sẽ gặp rắc rối tương tự khi chuyển sang chip Motorolla 68000 của Amiga.

Nói tóm lại, tôi phải hết lòng không đồng ý với bất kỳ ai nói hội là một ngôn ngữ tốt đầu tiên. Đây là lý do tại sao:

  • Bạn không có cấu trúc vốn có, không có cách phổ biến để phá vỡ chức năng trong một ứng dụng. Đây là điều làm cho các ngôn ngữ cấp cao trở nên hữu ích.
  • Bạn phải biết những thứ vô dụng như làm thế nào để gọi một phương thức trong thư viện một cách chính xác. Khi thư viện được tạo bởi C có nghĩa là thao tác ngăn xếp (tốt hơn là lấy mọi thứ theo đúng thứ tự), nhưng trong ngôn ngữ khác, nó có thể có nghĩa là thiết lập các thanh ghi. Đây là tất cả những thứ được trình biên dịch hoặc trình thông dịch quan tâm - và bạn không thể tối ưu hóa chúng.
  • Mã của bạn không thể được sử dụng trên một con chip khác và rất có thể sẽ bị hỏng với một nền tảng phần cứng khác.

Ngày nay, ngôn ngữ lắp ráp được sử dụng để tăng tốc một số hành động hữu hạn nhất định trong đó lắp ráp thủ công sẽ nhanh hơn lắp ráp trình biên dịch. Cấu trúc chính của ứng dụng được thực hiện bằng ngôn ngữ cấp cao hơn như C, C ++, v.v ... Tất nhiên, lập trình lắp ráp sẽ trở nên rất quan trọng nếu bạn bắt đầu viết trình biên dịch. Có bao nhiêu người trong chúng ta làm điều đó?


1

Tôi đã lắp ráp vào năm cuối của trường trung học. Tôi đã tham gia các lớp học về Java, Pascal, C và C ++ và không thành thạo bất kỳ ai trong số họ và tôi thực sự say mê hội - là người duy nhất tham gia lớp học trong chương trình đào tạo từ xa tại trường cao đẳng cộng đồng, đưa tôi một một hoặc hai tháng trước khi bất cứ ai thậm chí có thể có được trình biên dịch làm việc cho tôi.

Tôi không nghĩ rằng việc học ngôn ngữ lắp ráp trước là cần thiết hay khôn ngoan, nhưng sẽ rất thông minh khi học những thứ họ dạy cho bạn trong vài tuần đầu lắp ráp, về cách bộ xử lý hoạt động và một số thủ thuật gỡ lỗi. Những thứ đó tôi thấy rất thú vị và khai sáng như một tân sinh viên.


0

Tôi không thấy lý do tại sao nó không thể được thực hiện, mặc dù ý tưởng đó hoàn toàn tốt như thế nào phụ thuộc vào đám đông mà bạn cũng sẽ dạy nó. Ai đó có mục tiêu cuối cùng là trở thành nhà phát triển web có thể sẽ chán và có thể bỏ việc vì điều đó sẽ không mang lại cho họ sự hài lòng ngay lập tức khi tạo ra thứ gì đó mà Python, Ruby, v.v. Nếu cuối cùng họ muốn làm việc trên phần cứng hoặc các dự án cấp thấp khác thì tôi nghĩ rằng đó sẽ là một khởi đầu ổn (với điều kiện bạn cung cấp đủ nền tảng kiến ​​trúc máy tính cho nó có ý nghĩa). Tôi nghĩ rằng nó có thể giúp mọi người viết mã tốt hơn trong tương lai, mặc dù tôi nghĩ nó sẽ khó hơn so với việc học các ngôn ngữ khác để bắt đầu.


0

Tôi nghĩ rằng ngôn ngữ lắp ráp sẽ chỉ có ý nghĩa nếu bạn tập trung vào những thứ như:

  • Kỹ thuật quản lý bộ nhớ
  • HW IO (đặc biệt là những thách thức liên quan đến thời gian và hiệu suất)
  • Các tính năng của CPU - đặc biệt là các tính năng bảo mật

Không tập trung vào lĩnh vực này, nó chỉ là một ngôn ngữ đơn giản sẽ có xu hướng dạy các thói quen tổ chức xấu. Mã hóa cấp độ máy là tốt để có trong bộ công cụ để biết mọi thứ hoạt động như thế nào, nhưng nó không phải là ngôn ngữ đầu tiên tốt.

Tôi sẽ khiến ai đó quan tâm đến một ngôn ngữ cấp cao hơn. Sau đó dạy C ++; sau đó tập hợp với trọng tâm về cách trình biên dịch C ++ tạo mã lắp ráp. Hiểu các bảng v và các tính năng ngôn ngữ cấp cao khác sẽ giúp cho nhà phát triển suy nghĩ về cách ngôn ngữ thực sự hoạt động thay vì chỉ gửi thông tin theo 'ma thuật'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.