2009-07-30 28 views
8

Tôi đọc bài viết này, các bộ phận của "Intellisense" và "Tạo Mã":Bạn có nghĩ rằng VS và Intellisense khiến chúng tôi bị dumber không?

http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

Bạn có nghĩ của tác giả là đúng?

Tôi không đồng ý rằng Intellisense là soooo xấu cho các lập trình viên. VS cho C# sử dụng để "ẩn" các sự kiện của điều khiển trong một tệp khác, nhưng bạn có thể tìm thấy chúng nếu bạn biết đủ về ngôn ngữ và bạn có thể sửa đổi chúng bằng tay. Và với VS tôi không cần phải ghi nhớ tất cả các lớp Net tôi sử dụng. Tôi nghĩ rằng nó không quan trọng nếu bạn sử dụng một IDE hoặc notepad nhưng, nếu công cụ RAD thsese tồn tại và được tự do ... Tại sao không sử dụng chúng?

+6

Bạn chỉ câm như bạn muốn. Công cụ không làm cho người ta chết. Sự lười biếng và thiếu lái xe làm. –

+1

Không - nhưng nó giúp bạn tiết kiệm từ việc phải học tấn của crap bằng trái tim! :) –

+0

Thật kỳ quặc, marc_s, những gì bạn gọi là crap là các chi tiết tạo nên hệ thống. Bỏ qua chúng, và bạn * sẽ * viết một số phần mềm xấu. Chỉ là một ý nghĩ ... –

Trả lời

32

Không, tôi rất không đồng ý với điểm này.

Có, tôi đồng ý rằng intellisense cho phép tôi giữ ít đối tượng ngày càng tăng số lượng thành viên trong đầu. Tôi nghĩ rằng tôi thường biết ít hơn về các chi tiết phức tạp của các dự án mà tôi sử dụng intelliSense rất nhiều.

Ví dụ, tôi có thể rattle off tất cả các thành viên của các loại C++ tôi sử dụng với độ chính xác tuyệt vời. Tôi có xu hướng là một anh chàng duy nhất VIM cho các dự án C++ của tôi và do đó không thực sự sử dụng intellisnsee. Trong các dự án C# và VB.Net mặc dù tôi không thể rattle ra khỏi các thành viên với độ chính xác giống như tôi dựa vào intellisense thường xuyên hơn.

Nhưng có giao dịch tắt. Giữ tất cả các thành viên trong đầu của tôi đi kèm với một chi phí. Khi viết mã, thay vì tập trung vào thuật toán, tôi tập trung vào các thành viên. Tôi phải liên tục nghĩ về quy ước đặt tên của một loại cụ thể, hoặc danh sách tham số, byref hoặc val là gì, khi viết ra một thuật toán trong C++. Trong C#/VB.Net tôi tự do hơn để suy nghĩ về thuật toán khi IDE chăm sóc tìm kiếm các thành viên cho tôi.

Điều này có nghĩa là tôi là dưa chuột? Không có nghĩa đơn giản là tôi có thể tập trung vào vấn đề tôi thực sự đang cố giải quyết. Tôi cảm thấy điều này làm cho tôi hiệu quả hơn và do đó thông minh hơn không phải là dumber.

23

Nó không làm cho mọi người thông minh ngớ ngẩn hơn, nhưng nó khiến người ta câm trông thông minh hơn

+6

Tôi không thể đồng ý hơn. Trong tay của một lập trình thông minh, một công cụ chỉ là một công cụ. Trong tay của một người câm, một công cụ có thể trở thành một cái nạng. –

16

Không, công cụ lập trình hiện đại và ngôn ngữ giúp các lập trình viên tập trung ít hơn vào những điều nhỏ nhặt và nhiều hơn nữa trên bức tranh lớn.

Mục tiêu chính là thiết kế phần mềm vững chắc. Nếu một lập trình viên không phải lo lắng về việc ghi nhớ mọi phương thức của một lớp, họ có thể dành nhiều thời gian hơn cho việc xây dựng sản phẩm.

+1

Có, hình ảnh lớn như trong những gì quan trọng đối với doanh nghiệp cuối cùng. –

+0

Hoặc hình ảnh lớn như trong những gì chương trình cuối cùng làm. –

11

Giáo sư vật lý của chúng tôi luôn nói lý do tại sao ghi nhớ điều gì đó bạn có thể tra cứu. Anh ấy luôn liệt kê các công thức cần thiết trên bảng trong các kỳ thi. Có vẻ là intellisense là ý tưởng tương tự. Thay vì nhớ nếu đối tượng sử dụng thuộc tính Đếm hoặc Độ dài, hãy để VS cho tôi biết.

+0

Nhận một bản sao của Richard Feynman "Chắc chắn bạn đang nói đùa, ông Feynman", và đọc chương về bản đồ của một con mèo. Cùng một nguyên tắc chính xác. –

+1

tôi nghĩ rằng bạn có thể đã có cùng một prof vật lý như tôi. Ông Kramer? Không? Ồ, tất cả các giáo sư vật lý đều như thế này? hmm .. – Jason

+1

@ Jason: rõ ràng đây là hành vi phổ biến cho profs vật lý. Giáo viên vật lý trường trung học của tôi cũng vậy. Anh ta cũng là một giáo sư đại học. – IAbstract

4

Không, nó cho phép chúng tôi viết mã nhanh hơn tôi nghĩ. Bất cứ điều gì để làm cho quá trình mã hóa nhanh hơn, dễ dàng hơn và đơn giản hơn là một bước đi đúng hướng theo ý kiến ​​của tôi.

2

Tôi sử dụng mã intellisense và được tạo để tăng tốc độ phát triển, không phải vì tôi không biết mình đang làm gì. Vì vậy, tôi không thể đồng ý rằng việc sử dụng chúng làm cho bạn bị dumber.

Tôi là loại người sẽ cố gắng tìm hiểu càng nhiều về một ngôn ngữ càng tốt trước khi cố gắng sử dụng các công cụ tạo điều kiện phát triển bằng ngôn ngữ đó. Về vấn đề đó, tôi phải đồng ý với bình luận của Matthew Jones rằng "các công cụ không làm cho người ta bị chết ... lười biếng và thiếu lái xe."

0

Điều kiện duy nhất với IntelliSense mà tác giả dường như có là tự động hoàn tất khi bạn nhấn thanh dấu cách, dường như anh ta không nhận ra bạn có thể tắt trong menu Tùy chọn.

Mặc dù, ông tuyên bố rằng mã hóa "đã trở thành một hộp thoại liên tục với IntelliSense" ... mà không có ý nghĩa bởi vì bạn vẫn phải chọn các phương pháp chính xác từ danh sách! Không có nó, bạn chỉ cần tìm kiếm trực tuyến tên của phương thức thay vì tìm kiếm tức thì.

Thật thú vị làm sao tác giả bỏ qua mà IntelliSense không thể cho bạn biết liệu để sử dụng một StringBuilder hay String vv

1

Tôi không nghĩ như vậy.

Intellisense làm cho những thứ như đánh vần nhạy cảm với chữ thường dễ dàng hơn.

Có phải MyArray.Count() hoặc MyArray.Size() hoặc Length (MyArray) ...? Loại trả về nào là phương thức cụ thể, một lần nữa? Intellisense tiết kiệm cho tôi một vài phút mỗi ngày trên Google cho những thứ như thế này.

0

Không hề. Khi danh sách intellisense bật lên, một lập trình viên tìm kiếm thông qua toàn bộ danh sách mỗi lần để tìm ra hàm họ đang tìm kiếm? Có lẽ lúc đầu, nhưng thông thường bạn tiếp tục gõ cho đến khi intellisense thu hẹp danh sách xuống đến mức nó nhanh hơn để sử dụng các mũi tên lên/xuống và tab để hoàn thành.

Nếu không có intellisense, nó sẽ mất một ít lâu hơn để mã cho rằng bạn có kinh nghiệm với các lớp học mà bạn đang sử dụng và lâu hơn rất nhiều cho rằng bạn không. Nó chỉ phục vụ như một công cụ tốc độ và tài liệu nhanh chóng của tất cả mọi thứ có sẵn.

4

Không ngớ ngẩn hơn, nó làm cho chúng ta nhanh hơn :)

2

Lập trình chỉ được di chuyển về phía trước để làm cho cuộc sống dễ dàng hơn cho các lập trình viên và làm cho anh ta năng suất cao hơn. Nó sẽ giống như phàn nàn rằng chúng tôi không viết mã lắp ráp nữa ... điều quan trọng là phải biết các khái niệm và ý tưởng lớn đằng sau nó, nhưng làm việc với nó sẽ là lạ (trong hầu hết các trường hợp).

0

Nó không làm cho chúng tôi dumber; nó là điều cần thiết.

Quay lại trong ngày (MS BASIC dành cho tôi), không cần phải có sự intellisense. Phạm vi của ngôn ngữ đã đủ hạn chế để một lập trình viên nhớ tất cả các từ khóa và chức năng.

Chuyển đến ngày hôm nay, intellisense là một yêu cầu tuyệt đối. Lấy ví dụ .Net. Đơn giản là không có cách nào để nhớ hoặc khám phá ra hàng ngàn loại, thuộc tính và phương thức. Oh chắc chắn, đối với một dự án rất nhỏ, bạn có thể biết một loạt (100s?) Của các mặt hàng. Nhưng hãy trung thực - không có cách nào một lập trình viên làm việc hiện đại có thể tồn tại mà không có nó.

1

Ghi nhớ chi tiết không phải là kỹ năng quan trọng nhất trong phát triển phần mềm. Tốt hơn là có kỹ năng giải quyết vấn đề và khả năng tìm thông tin bạn cần. Nếu bạn đầu tư nhiều thời gian hơn vào chi tiết bạn sẽ bị mất khi ngôn ngữ lớn nhất tiếp theo được sinh ra, nhưng các thuật toán và mẫu sẽ vẫn có liên quan.

0

Thêm hai xu của tôi ở đây.

Từ kinh nghiệm của riêng tôi và như đã đề cập trong TFA, tôi sẽ nói rằng nhược điểm duy nhất tôi gặp phải là khi bạn học ngôn ngữ bạn có thể nhận thói quen xấu. Sử dụng ArrayLists thay vì List chỉ vì bạn không biết về việc thay đổi các mệnh đề sử dụng cho phép có thể cung cấp cho bạn một số kiểu dữ liệu khác.

Tác giả than phiền rằng anh ta nhận được các kiểu dữ liệu sai khi nhập một số kiểu dữ liệu nhất định. Trong khi một số bạn có thể nhận được giấy phép, vũ khí và bắt đầu săn người, tôi thấy rằng sử dụng quy ước đặt tên là cách tuyệt vời để buộc intellisense hoạt động theo cách của tôi, đặc biệt khi làm việc trong các biểu mẫu chuyên sâu GUI-Control & đồ đạc.

1

Câu hỏi là dĩ nhiên .... Intellisense có làm cho lập trình ít hơn của một nghề có kỹ năng không?

+0

Tôi không nghĩ vậy. Intellisense không làm logic. –

+0

Đó là quan điểm của tôi. Intellisense chỉ làm cho mọi việc nhanh hơn và dễ dàng hơn một chút. Nó không làm cho chúng tôi bất kỳ dumber. – LiamGu

1

Có, tôi đồng ý với tác giả. Intellisense (và nhiều tính năng khác của Visual Studio) thực sự là "làm cho chúng tôi dumber" vì những lý do được đề cập trong bài viết.

Đó không phải lúc nào cũng là điều xấu. Đôi khi, điều mong muốn hơn là là hiệu quả hơn hơn là trở nên thông minh hơn. Thách thức là làm nổi bật sự cân bằng phù hợp. :)

0

Không nhiều hơn so với máy tính được thực hiện cho các nhà toán học và vật lý nghèo hơn. Chắc chắn, sử dụng một quy tắc trượt buộc bạn phải giữ một mô hình tinh thần về thứ tự độ lớn của mọi thứ, nhưng nó thực sự chỉ là một công cụ ... và các công cụ tốt hơn cho phép bạn làm việc tốt hơn.

0

này có thể được tóm tắt vào câu hỏi truyền thống:

Có hiểu biết thêm về các chi tiết giúp đỡ hoặc tổn thương?

Theo quy tắc, kỹ sư và thợ thủ công giàu kinh nghiệm nói, trợ giúp. Nhưng biết các chi tiết cũng cho phép bạn biết khi nào các chi tiết không quan trọng, đó là những gì Visual Studio/Intellisense cung cấp. (Tôi chắc chắn có một câu tục ngữ có thể nói ở đây, nhưng tôi không cảm thấy nghĩ đến một câu châm ngôn).

0

Câu hỏi thú vị. Chắc chắn tôi tìm thấy Intellisense trong một số ý nghĩa làm cho công việc dễ dàng hơn, nhưng nó giống như tiền. Bạn càng có nhiều, bạn càng chi tiêu nhiều, không nhất thiết phải dựa trên những thứ bạn cần. Tôi đã học cách lập trình vào khoảng năm 62, và bằng cách nào đó tôi đã đi cùng mà không có Intellisense trong một thời gian dài. Những gì Intellisense làm cho tôi bây giờ là giúp tôi nhớ rất nhiều các lớp học và các thành viên mà ít nhất là 4 năm trước đây tôi không bao giờ biết tôi cần thiết.

Có một xu hướng tôi đã thấy trong phần mềm không bao giờ bị lỗi. Thiên nhiên ghét chân không. Máy móc lớn hơn, vì vậy hãy đoán xem, phần mềm nào lớn hơn (nhưng không phải lúc nào cũng tốt hơn). Máy sẽ nhanh hơn, vì vậy phần mềm sẽ chậm hơn. Giờ đây mọi người có thể nhận trợ giúp nhập tên dài, vì vậy mã sẽ thực sự tiết lộ. Bây giờ mọi người nhận được sự giúp đỡ ghi nhớ rất nhiều lớp học, vì vậy hãy đoán xem, có rất nhiều lớp học cần nhớ. Điều này đi một chặng đường dài để giúp phần mềm trở nên lớn hơn và chậm hơn.

Tôi thực hiện rất nhiều điều chỉnh hiệu suất và nguyên nhân chính gây ra suy thoái là gì? Đó là tính tổng quát phi mã gây ra bởi overdesign với cấu trúc dữ liệu quá nhiều, quá nhiều lớp, và quá nhiều lớp trừu tượng. Trong một từ, "sưng lên". Here is just a small example.

0

Dumb & Lười biếng.

0

Tôi thấy các công cụ của Visual Studio có lợi cho nhiều thử nghiệm hơn. Khi bạn đang đối phó với API Win32 trong C (ví dụ), bạn có thể không thực sự poke xung quanh quá dễ dàng.Khi bạn đang làm việc với C#, thật dễ dàng để khám phá xung quanh một thư viện và tìm hiểu những gì nó thực hiện mà không cần phải thoát ra khỏi MSDN hoặc một trình tháo rời cho toàn bộ buổi tối.

Nếu bạn là một lập trình viên tò mò tự nhiên, Intellisense sẽ không thay đổi điều đó. Nếu không, Intellisense sẽ không thay đổi điều đó. Để diễn giải một trong những đồng nghiệp của tôi "Tôi nghĩ rằng đó là một sự lãng phí thời gian tìm kiếm thông qua các cuốn sách lớn khi bạn chỉ có thể thực hiện một từ web và chuyển sang điều tiếp theo".

Dù sao thì đó cũng là một đối số cũ, trước Intellisense. BASIC có thối tâm trí khi viết trong x86 không? Biết một thuật toán bên trong có liên quan khi mọi ngôn ngữ lập trình duy nhất bạn sẽ sử dụng trong vai trò của bạn có thư viện đã thử và thử nghiệm không?

Tôi thấy rằng những người xem xét lập trình sở thích hoặc kỹ năng có khuynh hướng hiểu và điều tra. Những người coi nó là công việc ban ngày thì không. Bất kể có bất kỳ điều gì xung quanh nó, nó là nhiều hơn về tư duy của lập trình viên so với những gì được tạo sẵn.

Các vấn đề liên quan