Người mới có nên sử dụng IDE autocomplete (Intellisense) không? [đóng cửa]


35

Tôi thường gặp phải điều này khi tôi giúp đỡ một người mới lập trình và học nó lần đầu tiên. Tôi đang nói về những người mới thực sự mới, vẫn đang tìm hiểu về OOness, xây dựng các đối tượng, các cuộc gọi phương thức và những thứ tương tự. Thông thường, họ có bàn phím và tôi chỉ cung cấp hướng dẫn.

Một mặt, tính năng tự động hoàn thành của các IDE giúp cung cấp cho họ thông tin phản hồi rằng họ đang làm đúng và họ nhanh chóng thích và dựa vào nó.

Mặt khác, tôi sợ rằng việc phụ thuộc sớm vào tự động hoàn thành IDE sẽ khiến họ không thực sự hiểu các khái niệm hoặc có thể hoạt động nếu một ngày nào đó họ chỉ thấy mình với một trình soạn thảo đơn giản.

Bất cứ ai có nhiều kinh nghiệm hơn về vấn đề này xin vui lòng chia sẻ ý kiến ​​của họ? Cái nào tốt hơn cho người mới, tự động hoàn thành hoặc gõ thủ công?

Cập nhật

Cảm ơn các đầu vào tất cả mọi người!

Nhiều câu trả lời dường như tập trung vào việc sử dụng chính của tự động hoàn thành, như hoàn thành các phương thức, cung cấp các phương thức tra cứu và tài liệu, v.v. Nhưng các IDE ngày nay làm được nhiều hơn như thế.

  • Khi tạo một đối tượng thuộc loại Danh sách, IDE sẽ tự động hoàn thành ArrayList mới ở phía bên tay phải. Nó có thể không rõ ràng ngay lập tức với người mới tại sao nó không thể là Danh sách mới, nhưng hey nó hoạt động, vì vậy họ tiếp tục.
  • Điền các tham số phương thức dựa trên các biến cục bộ trong ngữ cảnh.
  • Thực hiện phôi đối tượng
  • Tự động thêm câu lệnh 'nhập' hoặc 'sử dụng'

và nhiều hơn nữa. Đây là những điều tôi muốn nói. Hãy nhớ rằng tôi đang nói về những người đang làm Lập trình 101, thực sự chỉ mới bắt đầu. Tôi đã xem IDE làm những điều mà họ không biết, nhưng họ cứ tiếp tục.

Người ta có thể lập luận rằng nó giúp họ tập trung vào dòng chảy chương trình và hiểu rõ mọi thứ trước khi đi sâu và hiểu các sắc thái của ngôn ngữ, nhưng tôi không chắc chắn.


1
Tôi nghĩ rằng điều này rơi vào một lệnh chung: Sử dụng một công cụ. Đừng lười biếng đủ để sử dụng nó một cách mù quáng.
Alex Feinman

Tôi nghĩ rằng họ nên sử dụng " trình soạn thảo văn bản tiêu chuẩn '... gnu.org/fun/jokes/ed.msg
JoelFan

Tôi đã tóm tắt những gì tôi đã học được ở đây trong một bài đăng trên blog : odinguser.com/2011/01/abstraction-is-good-magic-is-bad
viết mã

Câu trả lời:


11

Tôi nghĩ việc sử dụng IDE sẽ giúp ích trong quá trình học tập. Phương thức, tính chất, tham số, quá tải và tương tự là có thể khám phá. Với các thư viện khổng lồ, Intellisense giúp thu nhỏ kiến ​​thức JIT. Trong môi trường mã hóa ngày nay, không thể học mọi thứ trước mắt và học JIT thường là cách thực tế duy nhất để nhanh chóng trở nên hiệu quả.

Tôi hiểu rằng việc sử dụng IDE có thể là một cái nạng nếu bạn sử dụng nó một cách mù quáng, nhưng tôi nghĩ lợi ích vượt xa những tiêu cực.

Sử dụng các mẫu mà không hiểu những gì đã được xây dựng trước cho bạn, mặt khác, lại là một vấn đề. Tôi nghĩ rằng những thứ đó có thể được sử dụng như một công cụ học tập nếu nhà phát triển dành thời gian để đọc qua mã templated. Nhưng hầu hết mọi người không bận tâm. Nó có thể là một công cụ học tập tuyệt vời, mặc dù.


JIT? Ý bạn là .NET FCL? =) Đúng, tôi đồng ý ... Trong nhiều năm qua, intellisense đã chứng minh một công cụ học tập cho tôi, tôi đã học về hàng tấn các lớp học, phương pháp và tính chất mới hơn với nó.
gideon

1
Ý tôi là học JIT - không phải biên soạn JIT;) Có rất nhiều thứ để học, cố gắng học mọi thứ ở phía trước là không thực tế, miễn là bạn hiểu các khái niệm, học các chi tiết cụ thể có thể được thực hiện "chỉ trong thời gian".
Mark Freedman

75

Hiểu các khái niệm và ghi nhớ hàng chục hàng trăm lớp và phương thức thư viện ngu ngốc là hai điều hoàn toàn khác nhau. Intellisense giúp loại bỏ hoàn toàn những kiến ​​thức vô dụng khỏi tâm trí bạn, và bạn càng làm sớm thì càng tốt. Để lại nhiều không gian hơn cho các khái niệm hữu ích, đừng lãng phí tài nguyên giới hạn của bạn trên API.

Để trả lời một phần cập nhật của câu hỏi: chi tiết cú pháp nhỏ, bố cục tệp, trình biên dịch và lời gọi liên kết cũng không quan trọng so với các khái niệm lập trình chung. Một khi họ đã hiểu một người mới không còn có thể hiểu sâu hơn về cách thức các công cụ cấp thấp thực sự hoạt động. Sẽ tốt hơn để làm điều đó khi bạn đã biết những điều cơ bản, nếu không, rất có thể bạn sẽ nhận được một số mê tín ma thuật nguy hiểm.

Ví dụ, DrScheme IDE có thành tích tuyệt vời trong giảng dạy lập trình và thành công của nó chủ yếu nhờ vào khả năng giúp tập trung vào những gì thực sự quan trọng.


30
+1. Tôi thực sự đã có các cuộc phỏng vấn trước đó khi họ yêu cầu tôi trích dẫn danh sách các tham số cho một số chức năng API Win32. Không bao giờ có thể hiểu những gì liên quan mà kiến ​​thức có thể được.

4
@codinguser: và đó cũng không phải là vấn đề. Tôi thường không thể nhớ ngay cả một cú pháp của ngôn ngữ mà tôi hiện đang sử dụng (ngay cả khi tôi tự thiết kế nó). Có nhiều điều quan trọng cần nhớ hơn so với các câu lệnh nhập hoặc cách viết một cặp getter / setter. Và các IDE đang làm những việc hữu ích hơn - ví dụ như hiển thị các loại trong chú giải công cụ.
SK-logic

4
@Josh K, bạn đã bao giờ nghe từ "trừu tượng" chưa? Bạn có biết tại sao có mức độ trừu tượng khác nhau? Chú ý đến bất cứ điều gì dưới mức độ trừu tượng của miền vấn đề hiện tại của bạn là ngu ngốc và phản tác dụng. Và từ bỏ thói quen hủy hoại này sớm trong sự nghiệp là một thảm họa. Phải mất hơn mười năm để tôi phục hồi một phần.
SK-logic

3
@Josh K, bạn có khăng khăng muốn hiểu những gì đang diễn ra trên đường xuống các tòa nhà và xa hơn không? Không có giá trị gia tăng trong cách hiểu này. Tất nhiên một lập trình viên giỏi phải có khả năng hoạt động ở tất cả các cấp độ, bao gồm cả mã máy, nhưng một lập trình viên giỏi cũng có thể hoàn toàn trừu tượng khỏi một thứ không liên quan.
SK-logic

3
@ SK-logic: Tôi đồng ý, và nhập khẩu và các lệnh gọi hàm mà bạn đang sử dụng trực tiếp không phải là thứ gì đó để trừu tượng hóa.
Josh K

16

Sử dụng tự động hoàn thành không phải là một điều xấu.

Nó chỉ đơn giản là tốc độ, và đối với tôi sẽ là dấu hiệu của một người bắt đầu nắm bắt được IDE và sử dụng nó tốt.

Tôi không hiểu làm thế nào KHÔNG sử dụng nó sẽ giúp họ học OO chẳng hạn.


1
Tôi hoàn toàn tự động hoàn thành khi bạn nắm vững kiến ​​thức cơ bản. Tốc độ là tốt khi bạn biết những gì bạn đang tăng tốc. Nhưng khi IDE tự động điền một tham số dựa trên biến cục bộ cùng loại hoặc thêm câu lệnh nhập, nó chỉ hoạt động và một số người mới không thực sự hiểu nó.
viết mã

Tôi đã đọc bản chỉnh sửa của bạn, nhưng tôi muốn nghĩ rằng những người mà chúng tôi đang thuê là những người thông minh, họ sẽ xem xét những gì được điền vào, đặt câu hỏi cho họ và hiểu họ. Cho dù điều đó xảy ra trong thực tế tất nhiên là một câu hỏi khác.
ozz

13

Đã dạy và dạy cho những sinh viên mới biết lập trình, tôi thấy rằng tự động hoàn thành / intellisense đôi khi gây ra nhiều tác hại hơn là tốt. Vâng, họ có thể viết một chương trình bằng cách sử dụng nó. Vâng, nó biên dịch và chạy và thậm chí có thể làm điều chúng tôi yêu cầu họ làm. Nhưng họ không hiểu những gì họ đang làm.

Khi họ không hiểu chuyện gì đang xảy ra, nó sẽ trở nên ít lập trình hơn và hack nhiều giải pháp cùng nhau để có được điểm. Tôi thấy điều đó đã xảy ra rất nhiều với các sinh viên khi những gì chúng tôi yêu cầu họ làm trở nên khó khăn hơn, họ chỉ hack cho đến khi có một cái gì đó hoạt động. Điều này luôn trở nên rõ ràng khi giữa kỳ xuất hiện và các sinh viên được yêu cầu viết các phương pháp đơn giản bằng tay ... họ không thể.

Có tự động hoàn thành / intellisense giúp chúng tôi (nhà phát triển chuyên nghiệp) rất nhiều b / c nó tăng tốc cho chúng tôi. Chúng ta không cần phải ghi nhớ tất cả các phương pháp và danh sách tham số khác nhau, nhưng đồng thời chúng ta cũng có thể đoán được tham số nào mà phương thức sẽ đưa ra mà chúng ta có kinh nghiệm về lập trình để biết.

Người mới thì không. Họ sẽ đợi IDE của họ đưa ra một danh sách các phương thức, họ sẽ cuộn qua danh sách đó cho đến khi họ tìm thấy một phương thức có thể là thứ họ cần, họ sẽ xem xét các tham số cần thiết và xem liệu họ có đưa chúng vào không .. .. và cuối cùng, họ sẽ hack một cái gì đó với nhau mà họ có thể đưa vào.

Và, vào cuối khóa học khi họ vượt qua, họ sẽ rời khỏi lớp lập trình của mình với một chiến thắng nông cạn, nhiều người không bao giờ học thêm một lớp CS nữa vì họ không hiểu bất cứ điều gì họ làm hoặc tại sao họ làm nó


2
Tôi sẽ hoài nghi và nói rằng luôn có loại sinh viên đó trong CS. Nếu họ muốn học Intellisense, chỉ cần giúp họ thực hiện mọi việc nhanh hơn, thay vì dành thời gian tìm kiếm từng tên chức năng trong Google hoặc một cuốn sách
user151019

4
@Mark, tôi đồng ý. Tôi đoán tôi đã làm cho câu trả lời của tôi quá rộng trong phạm vi ngụ ý tất cả các sinh viên. Nhưng tôi sẽ nói điều này, sau khi giới thiệu và IDE tự động hoàn thành môi trường phát triển của khóa học, số lượng sinh viên không hiểu khi nào cũng có số lần thất bại trong giữa kỳ đầu tiên. Số lượng câu hỏi tôi nhận được giảm đi rất nhiều, nhưng tôi đã học được rằng không phải sinh viên hiểu rõ hơn, nhưng họ có thể khiến các chương trình hoạt động mà không mất thời gian để hiểu.
Tyanna

students were asked to write simple methods by hand...they couldn't.Nó phụ thuộc vào những gì bạn đang cố gắng dạy chúng. Khái niệm lập trình chung, hay cú pháp ngôn ngữ cụ thể?
gingerbreadboy

9

Vấn đề với IDE và môi trường phát triển nói chung không phải là quá nhiều thứ như tự động hoàn thành như việc sử dụng các giải pháp templated (tệp | mới | dự án) trong đó rất nhiều điều "thú vị" đã được thực hiện cho bạn và ở các mức độ khác nhau, ẩn .

Đối với một người, nói rộng ra, hiểu những gì đang diễn ra bên dưới mui xe thì điều này rất hữu ích - nhưng đối với ai đó học những gì họ cần thì lại ít hơn.

Ngoài ra còn có câu hỏi về thời gian để khởi động một IDE nặng ...

Do đó, tôi nghĩ rằng việc sử dụng một cái gì đó có trọng lượng nhẹ hơn và có thể chạy các ứng dụng mà bạn đã tự viết mọi dòng mã có giá trị đáng kể - đặc biệt là khi sử dụng trình soạn thảo văn bản và trình biên dịch chứng minh điểm quan trọng mà bạn không cần IDE v.v. để viết phần mềm nhưng điều đó không có nghĩa là tôi muốn sử dụng trình soạn thảo văn bản lâu dài và điều đó đặt ra những thách thức về mặt gỡ lỗi - bạn muốn có thể thực hiện các điểm dừng và bạn muốn có thể thực hiện từng bước thông qua mã vì điều này sẽ giúp dễ hiểu những gì đang diễn ra.

Tất nhiên chúng ta có thể nhầm lẫn thêm vấn đề bằng cách xem xét những thứ như Python nơi bạn có dòng lệnh "trực tiếp" ...

Câu hỏi hay, không có câu trả lời hay - ngoại trừ việc bạn muốn học tiến bộ và bắt đầu với trình soạn thảo văn bản và trình biên dịch (hoặc trình thông dịch dòng lệnh) sẽ cho phép bạn tập trung vào các khái niệm cơ bản về cú pháp và logic trước khi bạn tiến bộ hơn những thứ phức tạp sẽ dễ dàng thực hiện hơn với môi trường phát triển mạnh mẽ hơn.


2
Thành thật mà nói, tôi thấy thời gian để kích hoạt IDE là không đáng kể. Tôi dành hàng chục giờ để sử dụng IDE của mình trong khi kích hoạt nó. Nó chắc chắn tiết kiệm hơn 30-45 giây thời gian cần thiết để bắt đầu chỉ trong việc hoàn thành mã một mình trong khoảng thời gian đó.
EricBoersma

@Eric - trong bối cảnh của bạn? Có, 100%. Trong bối cảnh của câu hỏi tức là người mới bắt đầu hoàn thành? Tôi nghi ngờ IDE sẽ được mở và đóng thường xuyên hơn cho các phiên ngắn hơn và nói chung, bất cứ điều gì cản trở là một sự nản lòng.
Murph

Tôi cảm thấy như vậy về các ORM, người mới bắt đầu cơ sở dữ liệu không được phép sử dụng chúng vì họ không hiểu đủ về phát triển cơ sở dữ liệu để sử dụng chúng tốt. Công cụ tuyệt vời cho những người biết những gì họ đang làm, thảm họa cho người mới.
HLGEM

@HLGEM Tôi sẽ đề nghị rằng nó phức tạp hơn thế một chút ... nhưng tôi không nghĩ rằng tôi thậm chí còn đủ điều kiện từ xa để nhận xét về người mới bắt đầu và cơ sở dữ liệu nữa) -: (Và, cho rõ ràng, bởi vì tôi vẫn tìm hiểu các ngôn ngữ và khung công tác mới Tôi nghĩ rằng tôi có thể nhận xét về vấn đề IDE - Tôi có những ký ức cụ thể về việc có các vấn đề ban đầu với .NET và Visual Studio làm quá nhiều)
Murph

4

Học một cách khó khăn thường ở lại với bạn.

Là người mới, xin vui lòng KHÔNG sử dụng IDE. Sử dụng dòng lệnh, học hỏi từ những sai lầm của bạn. Điều này cũng giúp bạn hiểu các tùy chọn trình biên dịch và trình liên kết chặt chẽ hơn.

Vậy khi nào bạn sử dụng IDE? Khi bạn đang thiết kế một cái gì đó khổng lồ hoặc làm việc trên một cơ sở mã lớn với vô số các lớp, phương thức và biến.


7
Điểm nào trong việc hiểu các tùy chọn trình biên dịch và trình liên kết nếu bạn chưa biết trình biên dịch là gì? Nó thường kết thúc trong một mớ hỗn độn. Tôi đã dành hơn một thập kỷ để dọn dẹp mớ hỗn độn của chính mình được tạo ra bởi sự tiếp xúc quá sâu và quá thấp ngay từ đầu (MACRO32, Fortran, DCL ...).
SK-logic

2
Đã đồng ý. Chẳng có nghĩa gì khi học lắp ráp trước khi học Python hay C #, chẳng hạn - nó chỉ làm bạn nản lòng hơn. Nói chung, bạn học các khái niệm cấp cao và sau đó lọc xuống các khái niệm cấp thấp hơn hoặc các thứ khó chịu khác.
DMan

4

Tôi sẽ là người đầu tiên nói rằng IDE là một lợi ích cho năng suất, ngay cả khi tôi thường phàn nàn về những điều kỳ quặc của họ. Tuy nhiên, tôi đã học BASIC, C, C ++, Java, Python, Perl, PHP và một số ngôn ngữ khác mà không cần gì ngoài trình soạn thảo tô sáng văn bản và trình biên dịch / trình thông dịch cho ngôn ngữ. Tôi thực sự đã học Java trong Notepad!

Học một IDE đề xuất "ma thuật" - ý tưởng rằng "nó hoạt động; không quan trọng bằng cách nào." Trừu tượng là tốt; ma thuật là xấu Một lập trình viên nên biết, hoặc có thể tìm hiểu, mọi thứ đang diễn ra trong một dự án. Một IDE tốt được thiết kế để đảm nhiệm công việc bảo vệ, không kiểm soát dự án. Sử dụng đúng cách nó là một công cụ tuyệt vời. Nhưng những gì thợ thủ công bắt đầu sử dụng một bộ định tuyến CNC?

Tôi nghĩ rằng cách tôi học (phải gõ mọi thứ và biết rõ trình biên dịch để xây dựng dự án) đã giúp tôi vô cùng khi cuối cùng tôi đã bắt đầu sử dụng IDE. Chẳng hạn, một dự án Java không phải là một thư mục nhỏ trong dự án Eclipse, mà là một tập hợp các lớp trong cấu trúc gói với một số tệp XML cho các đường dẫn, cấu hình và triển khai. Tôi không muốn xây dựng một ứng dụng doanh nghiệp lớn mà không có IDE, nhưng tôi có thể xây dựng một ứng dụng nhỏ. Điều đó giúp dễ hiểu cấu trúc của các cấu trúc lớn hơn và khi tôi muốn có một hành vi cụ thể trong quá trình xây dựng, tôi biết cách javac hoạt động, vì vậy tôi có thể điều chỉnh lời nhắc xây dựng thực tế thay vì cố gắng tìm ra sự kết hợp kỳ diệu đó không ' t tồn tại trong cấu hình xây dựng. Tôi cũng tin rằng tôi hiểu sâu hơn về các thông báo lỗi và cách tìm và sửa chúng.

Tôi sẽ không dạy bằng IDE. Tôi nghĩ rằng các dự án ban đầu đủ nhỏ để các đối số cho việc quản lý sự phức tạp là không cần thiết. Nếu bạn đang dạy Java chẳng hạn, bạn có thể đặt tất cả các lớp của mình vào cùng một thư mục và javac *.java. Bạn không cần một IDE cho điều đó! Điều này lập luận cho việc giữ cho các dự án nhỏ, ít hơn nhiều so với các khái niệm bằng chứng. Giảm thiểu chi phí, và tập trung vào việc giảng dạy khái niệm mà sinh viên cần. Các dự án lớn hơn trong đó IDE sẽ hữu ích thuộc về các lớp SE nâng cao hơn hoặc các dự án chuyên dụng.

Đối với trợ giúp tìm kiếm các lớp và nghiên cứu API, một lần nữa, tôi tin rằng đây là việc cần thiết nếu các dự án được giữ nhỏ. Một lần nữa trong Java, javadoc rất dễ đọc. Dù sao đi nữa, không ai có thể giữ toàn bộ API trong đó và sẽ là lúc bạn cần nghiên cứu một API mà không có lợi ích của IDE. Giống như, trong các ngôn ngữ khác, hoặc nếu điều khiển từ xa vào máy chủ nơi bạn không thể mở IDE. Dạy cách tìm tài liệu, không phải "bấm '.' và bạn có thể thấy các phương thức của đối tượng là gì. "

Bất kỳ lập trình viên nào cũng có thể học IDE, nhưng biết IDE không giúp bạn trở thành một lập trình viên giỏi. Đen hài hước sang một bên, "ma thuật" không bao giờ là một từ tốt cho một lập trình viên sử dụng.


Học với văn bản nổi bật ... punk may mắn. Một số người trong chúng ta chỉ có một danh sách các từ khóa và lời nhắc.
Matthew Whited

@Matthew: Java Tôi đã bắt đầu với notepad ... :)
Michael K

LOL ... Tôi đã bắt đầu trên Apple IIc với Applesoft BASIC được tích hợp vào ROM. : o)
Matthew Whited

Wow, tôi cảm thấy may mắn khi có QBasic!
Michael K

4

Có lẽ một người mới nên đơn giản là làm việc với các vấn đề dễ dàng hơn trước. Và không, những vấn đề đó không nên yêu cầu hoặc khuyến khích sử dụng IDE để hoàn thành nhiệm vụ. Có nhiều hơn để đạt được lâu dài bằng cách hiểu các khái niệm cơ bản. Các công cụ nên đến sau.

Không một thợ thủ công chế biến gỗ nào sẽ nhảy thẳng vào sử dụng máy bào bề mặt mã lực cao mà không hiểu được sự phức tạp của cả loại gỗ và mặt phẳng tay trước.

(Lưu ý: autocomplete và intellisense là hai thứ rất khác nhau).

Intellisense, bản thân nó, không phải là xấu. Nó chỉ tệ khi nó được sử dụng một cái nạng để đoán chức năng mà không đọc hoặc hiểu tài liệu cơ bản hoặc thực hiện.

Điểm phụ: Nếu ngôn ngữ yêu cầu IDE mã hóa cho bạn, ngôn ngữ có thể ở mức độ trừu tượng sai đối với các vấn đề mà bạn đang cố gắng giải quyết.


2
+1 cho điểm phụ. Tôi là người thích học nhiều ngôn ngữ, vì vậy bạn biết khi nào một ngôn ngữ không phù hợp với nhiệm vụ.
Michael K

3

Khi chúng ta lớn lên, chúng ta không được bảo rằng chúng ta phải hiểu các quy tắc phức tạp của ngôn ngữ tiếng Anh trước khi chúng ta có thể nói. Chúng tôi không được nói rằng chúng tôi phải hiểu đầy đủ việc sử dụng đúng giới từ, liên từ và để tránh các đoạn câu. Chúng tôi học bằng cách làm. Chúng ta học hỏi thông qua thành công và thất bại.

Một IDE với tính năng tự động hoàn thành giúp lập trình viên mới có được sự tự tin bằng cách tạo điều kiện cho việc tạo chương trình, trong khi không phải vật lộn với việc nhớ mọi chức năng của vô số thư viện.

Nếu một người thực sự ngoại suy quan điểm rằng tự động hoàn thành làm tổn thương lập trình viên mới bởi vì nó làm cho họ quá dễ dàng, thì bạn có thể lập luận rằng các sách tham khảo không nên được sử dụng trong khi lập trình, vì các khái niệm bên trong nên được cam kết trước tiên, vì không có chúng ghi nhớ làm chậm chúng, và không cho phép chúng hiểu đầy đủ các khái niệm trước.

Autocomplete là một công cụ, nó được sử dụng để làm cho lập trình viên làm việc hiệu quả hơn. Giống như việc học một ngôn ngữ lần đầu tiên, sau khi chúng ta có được sự tự tin và mức độ thành công với những gì chúng ta đang học, sau đó chúng ta làm việc để cải thiện kiến ​​thức của mình.


Đó là một lập luận tuyệt vời cho việc sử dụng IDE. Điều đó dường như bị phá vỡ trong CS, bởi vì dường như (với tôi) rằng nhiều người không vượt ra ngoài việc 'học nói'. Điều đó đòi hỏi chương trình giảng dạy phải được cấu trúc lại để dạy một cách rõ ràng những điều mà IDE ẩn giấu.
Michael K

2

Ban đầu, thật khó để xây dựng một cái gì đó hoạt động, vì vậy bất cứ điều gì giúp thương hiệu noobie tốt hơn. Một lập trình viên mới sẽ cần một người cao cấp hơn để khiến họ suy nghĩ về việc liệu danh sách ràng buộc mảng hoặc danh sách được liên kết sẽ phù hợp hơn cho vấn đề trong tay. Họ đều có điểm mạnh và điểm yếu.

Cho dù người mới có IDE hay họ đang duyệt các tài liệu API trực tuyến, sẽ không có bất kỳ sự khác biệt thực sự nào giữa mã họ tạo. Mặc dù đối phó với nỗi đau của việc viết lỗi cú pháp có thể là một kinh nghiệm học tập, có quá nhiều thứ để học để lo lắng về điều đó ngay từ đầu.

Bạn không học cách đi dây bằng cách đi thẳng lên dây cao mà không cần lưới. Bạn bắt đầu bằng cách đi bộ một sợi dây cách mặt đất vài inch. Tôi muốn nói rằng hầu hết chúng ta làm việc với IDE và một số loại kịch bản xây dựng (kịch bản xây dựng của Visual Studio được tạo bởi IDE nhưng nó ở đó). Hầu hết chúng ta không xây dựng các lớp bằng tay với trình soạn thảo văn bản và sau đó gọi trình biên dịch bằng tay. Tại sao chúng ta nên áp đặt điều đó lên một người mới có nhiều thứ để học?


2

Tôi không thấy cần phải chịu đựng nỗi đau của các công cụ đã nói ở trên, ngay cả khi nhà phát triển đang học. Tôi tin rằng sẽ có thêm thời gian và công sức để viết mã mà không có công cụ sẽ tốt hơn khi học cách viết bài kiểm tra đơn vị và gỡ lỗi. Khi người dùng biết cách kiểm tra mã của họ và thực hiện theo mã khi nó chạy, họ sẽ tìm hiểu nhiều về những gì nó thực sự làm.

Ngoài ra, nó không giống như sử dụng IDE có nghĩa là mã tự viết. Một nhà phát triển mới hoặc người mới bắt đầu sẽ viết mã không hoạt động cho dù họ có sử dụng IDE hay không.

Tôi chỉ thấy IDE là một mức độ trừu tượng khác khi mã hóa. Nếu tôi đang viết Java, tôi thường không cần phải hiểu cách mã byte mà nó tạo ra hoạt động. Nếu một lập trình viên mới đang sử dụng các lib Java, họ không cần biết họ đang ở gói nào nếu IDE có thể tự động thêm nó cho họ. Trong cả hai trường hợp nếu một lỗi hoặc sự cố ở cấp thấp hơn có thể phát sinh (ví dụ: xung đột tên lớp) gây ra lỗi, thì đã đến lúc nhà phát triển xem xét thủ công.


0

Rất nhiều câu trả lời hay khác vì vậy đừng coi đây là một câu trả lời hoàn chỉnh, nhưng nó tốt cho người mới cũng như người dùng có kinh nghiệm để xem một bức tranh hoàn chỉnh về những chức năng mà họ có theo ý của họ.

Trong Delphi tôi có thể nhấn ctrl-j và tôi sẽ thấy một danh sách mọi điều có thể tôi từng mong đợi về mặt cú pháp có thể hoạt động.

Tôi không nhất thiết phải đồng ý, nhưng tôi đã đọc các đối số cho thấy các lập trình viên thậm chí không nên nhìn vào các thành viên lớp riêng của các đối tượng mà họ sử dụng và theo cách này, tự động hoàn thành cung cấp cho mọi người dùng tham chiếu API tức thì.

IDE mới hơn cho phép người dùng và nhà phát triển ngôn ngữ đưa dữ liệu meta vào phần bên trong của họ, điều này giúp tăng cường hơn nữa khả năng đọc và hiểu chức năng làm gì, mà không cần đọc nguồn (dù sao họ cũng không nên làm gì).

Có lẽ, tốt nhất là người mới nên thực sự đọc và hiểu mọi thứ họ thực hiện. Nhưng, có lẽ sẽ là một câu hỏi tốt hơn cho dù người mới có nên được phép bao gồm hoặc nhập bất kỳ không gian tên hoặc đơn vị nào họ muốn mà không cần ghi lại lý do tại sao họ lại đưa nó vào.


0

Theo kinh nghiệm của tôi, sử dụng IDE để học những điều cơ bản của OO i vì nó che giấu một số sự phức tạp của việc viết mã thực sự trong khi cho phép nhà phát triển mới tập trung vào logic của chương trình. Tuy nhiên, ngay sau khi học lập trình và các nguyên lý OO cơ bản, tôi đã thông qua khóa học buộc phải hiểu chính xác hơn những phần cần thiết để tương tác với nhau trong các tệp nguồn (không quên các câu lệnh nhập, khởi tạo các lớp đúng, v.v.) bằng một khóa học lập trình nơi chúng tôi phải sử dụng thiết bị đầu cuối chỉ các máy Unix.

Điều này là có thể ở trường bởi vì ai đó có 'quyền hạn' để buộc bạn sử dụng các công cụ lo-fi. Nó sẽ là nhiều hơn khó khăn để đạt được trong một doanh nghiệp hoặc môi trường doanh nghiệp.


0

Tôi có hai suy nghĩ về điều này. Đầu tiên là để thực sự học được điều gì đó tôi tin rằng bạn phải biết những gì đang thực sự xảy ra. Và với việc IntelliSense đã đạt được kết quả tốt như thế nào, nó có thể che giấu một số điều đó cho một nhà phát triển mới. Ví dụ, tôi có một lớp kỹ thuật web ở trường đại học nơi chúng tôi thực sự xây dựng các khung web riêng để xây dựng các ứng dụng cuối cùng của chúng tôi. Tôi đã ra khỏi lớp đó với khả năng thích ứng với hầu hết mọi khung web vì tôi có sự hiểu biết về những gì bên dưới tất cả để bắt đầu. Sử dụng một IDE không hoàn toàn đến mức đó, nhưng tôi vẫn tin rằng vấn đề vẫn còn đó.

Tuy nhiên, sử dụng IDE cũng có thể thực hiện những việc như mở API cho nhà phát triển mới. Khi tôi bắt đầu viết mã một cách nghiêm túc, IDE tôi đã sử dụng giúp tôi rất nhiều vì tôi sẽ làm những việc như gõ vào một đối tượng, sử dụng tự động hoàn thành để xem phương thức nào có, và sau đó nghiên cứu chúng bằng các tài liệu có sẵn. Tất cả điều này được thực hiện trong IDE và là một công cụ học tập tuyệt vời.

Vì vậy, vâng, tôi tin rằng nó ổn khi sử dụng miễn là bạn cũng dành thời gian để hiểu những gì đang xảy ra. Chỉ sử dụng một đối tượng cast mà không hiểu lý do tại sao bạn phải thực sự xấu, nhưng, nếu một nhà phát triển mới thấy rằng bạn có thể sử dụng một đối tượng cast và sau đó xem để xem tại sao tôi thấy không có gì sai.


0

Học tập cần thực hành. Lập trình có thể là một nhiệm vụ rất khó chịu khi bạn không biết bạn có thể làm gì và làm thế nào mọi thứ hoạt động.

Thật không thực tế khi nói rằng, đọc nhiều sách về các nguyên tắc lập trình mà không viết một dòng mã nào; người ta không học được gì theo cách này.

Intellisense rất hữu ích trong việc cung cấp cho các lập trình viên mới sự giúp đỡ họ cần để tiếp tục lập trình, tiếp tục thực hành và do đó học tập.

Như đã nói, học API cụ thể không giống như học các nguyên tắc lập trình. Điều chắc chắn sẽ xảy ra là các lập trình viên mới sẽ mắc lỗi (bất kể Intellisense), và cách họ chọn sửa những lỗi đó là điều sẽ dẫn họ trở thành lập trình viên giỏi hoặc người nghèo.

Nếu bạn đang cố gắng dạy ai đó cách lập trình, tôi sẽ cho họ sử dụng Intellisense và chơi xung quanh cho đến khi họ gặp khó khăn. Đó là khi tôi cố gắng xây dựng một nền tảng bằng cách dạy cho họ lý do họ bị mắc kẹt.


0

IMO, IDE sẽ giúp bạn làm việc hiệu quả hơn. Nhưng đối với người mới bắt đầu, nói chung không nên bắt đầu lập trình với IDE. Trình chỉnh sửa văn bản như notepad ++, notepad, v.v. sẽ là đủ.

Ngoài ra, nói chung không được coi là một ý tưởng tốt để bắt đầu học lập trình với ngôn ngữ cấp cao. Tôi sẽ đề nghị bạn bắt đầu với ngôn ngữ lắp ráp. Điều này sẽ dạy cho bạn những điều cơ bản cũng như sự kiên nhẫn.

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.