Czy początkujący powinni korzystać z autouzupełniania IDE (Intellisense)? [Zamknięte]

35

Często się z tym spotykam, kiedy pomagam komuś, kto jest nowy w programowaniu i uczę się go po raz pierwszy. Mówię o naprawdę nowych początkujących, wciąż uczących się o OOness, konstruowaniu obiektów, wywoływaniu metod i tym podobnych. Zwykle mają klawiaturę, a ja po prostu udzielam wskazówek.

Z jednej strony funkcja autouzupełniania IDE pomaga przekazać opinię, że robią to dobrze i szybko polubią i na nich polegają.

Z drugiej strony obawiam się, że wczesna zależność od autouzupełniania IDE sprawiłaby, że tak naprawdę nie rozumieliby pojęć lub nie mogliby funkcjonować, gdyby pewnego dnia znaleźli się tylko z prostym edytorem.

Czy ktoś z większym doświadczeniem w tym zakresie może podzielić się swoją opinią? Co jest lepsze dla początkujących, autouzupełniania lub pisania ręcznego?

Aktualizacja

Dziękujemy za wkład wszystkim!

Wydaje się, że wiele odpowiedzi koncentruje się na głównym użyciu autouzupełniania, takim jak uzupełnianie metod, wyszukiwanie metod i dokumentacji itp. Ale IDE w dzisiejszych czasach są o wiele bardziej podobne.

  • Podczas tworzenia obiektu typu List IDE automatycznie uzupełnia nową ArrayList po prawej stronie. Dla początkującego może nie być jasne, dlaczego nie może to być nowa lista, ale hej, to działa, więc idą dalej.
  • Parametry metody wypełniania oparte na zmiennych lokalnych w kontekście.
  • Wykonywanie rzutów obiektów
  • Automatyczne dodawanie instrukcji „import” lub „using”

i wiele więcej. Mam na myśli takie rzeczy. Pamiętaj, że mówię o ludziach, którzy programują 101, naprawdę dopiero zaczynają. Widziałem, jak IDE robi te rzeczy, o których nie mają pojęcia, ale po prostu kontynuują.

Można argumentować, że pomaga im to skoncentrować się na przepływie programu i zrozumieniu rzeczy przed głębszym zrozumieniem niuansów języka, ale nie jestem pewien.

codinguser
źródło
1
Wydaje mi się, że należy to do ogólnego nakazu: użyj narzędzia. Nie bądź wystarczająco leniwy, aby używać go na ślepo.
Alex Feinman
Myślę, że powinni używać „na standardowy edytor tekstu” ... gnu.org/fun/jokes/ed.msg
JoelFan
Podsumowałem to, czego się nauczyłem tutaj w poście na blogu: codinguser.com/2011/01/abstraction-is-good-magic-is-bad
codinguser

Odpowiedzi:

11

Myślę, że korzystanie z IDE pomaga w procesie uczenia się. Metody, właściwości, parametry, przeciążenia i tym podobne są wykrywalne. Dzięki przytłaczająco ogromnym bibliotekom Intellisense pomaga pozyskać wiedzę o JIT. W dzisiejszym środowisku kodowania niemożliwe jest nauczenie się wszystkiego z góry, a uczenie się JIT jest często jedynym praktycznym sposobem na szybkie osiągnięcie produktywności.

Rozumiem, że używanie IDE może być kulą, jeśli używasz go na ślepo, ale myślę, że korzyści znacznie przewyższają negatywy.

Z drugiej strony korzystanie z szablonów bez zrozumienia tego, co zostało wcześniej przygotowane, stanowi większy problem. Myślę, że można ich użyć jako narzędzia do nauki, jeśli programista poświęci trochę czasu na przeczytanie kodu wzorcowego. Ale większość ludzi nie zawraca sobie głowy. Może to być świetne narzędzie do nauki.

Mark Freedman
źródło
JIT? Nie masz na myśli .NET FCL? =) Tak, zgadzam się ... Przez lata inteligencja okazała się dla mnie narzędziem do nauki, dowiedziałem się o niej mnóstwo nowszych klas, metod i właściwości.
gideon
1
Miałem na myśli naukę JIT - nie kompilację JIT;) Tyle się trzeba nauczyć, próba nauczenia się wszystkiego z góry jest nierealistyczna, tak długo, jak rozumiesz koncepcje, nauka specyfiki implementacji może być wykonana „na czas”.
Mark Freedman
75

Zrozumienie pojęć i zapamiętanie dziesiątek setek głupich klas i metod bibliotecznych to dwie zupełnie różne rzeczy. Intellisense pomaga całkowicie wyrzucić z pamięci całą tę bezużyteczną wiedzę, a im wcześniej to zrobisz, tym lepiej. Zostaw więcej miejsca na przydatne koncepcje, nie marnuj swoich ograniczonych zasobów na interfejsy API.

Aby odpowiedzieć na zaktualizowaną część pytania: małe szczegóły składni, układ plików, wywołanie kompilatora i linkera są również nieistotne w porównaniu do ogólnych pojęć programistycznych. Po ich zrozumieniu początkujący nowicjusz nie może głębiej zrozumieć, jak naprawdę działają rzeczy niskiego poziomu. Lepiej to zrobić, gdy znasz już podstawy, w przeciwnym razie istnieje szansa, że ​​zbierzesz wiele niebezpiecznych przesądów magicznych.

Na przykład, DrScheme IDE ma duże doświadczenie w nauczaniu programowania, a jego sukces wynika głównie z jego zdolności do koncentracji na tym, co jest naprawdę ważne.

SK-logika
źródło
30
+1. Miałem wtedy wywiady, w których prosili mnie o cytowanie listy parametrów niektórych funkcji Win32 API. Nigdy nie mogłem zrozumieć, jak istotna może być ta wiedza.
4
@codinguser: i to też nie stanowi problemu. Często nie pamiętam nawet składni języka, którego obecnie używam (nawet jeśli sam go zaprojektowałem). Należy pamiętać o wiele ważniejszych rzeczach niż instrukcje importu lub jak napisać parę getter / setter. IDE robią bardziej przydatne rzeczy - na przykład wyświetlają typy w etykietach narzędzi.
SK-logic
4
@Josh K, czy słyszałeś kiedyś słowo „abstrakcja”? Czy wiesz, dlaczego istnieją różne poziomy abstrakcji? Zwracanie uwagi na wszystko, co jest poniżej poziomu abstrakcji bieżącej domeny problemowej, jest głupie i przynosi efekt przeciwny do zamierzonego. A nałożenie tego destrukcyjnego nawyku na początku kariery jest katastrofą. Częściowe odzyskanie zajęło mi ponad dziesięć lat.
SK-logic
3
@Josh K, czy nalegasz na zrozumienie, co się dzieje aż do syscalls i dalej? To zrozumienie nie ma wartości dodanej. Oczywiście dobry programista musi być zdolny do działania na wszystkich poziomach, łącznie z kodami maszynowymi, ale dobry programista powinien także być w stanie całkowicie oderwać się od nieistotnych rzeczy.
SK-logic
3
@ SK-logic: Zgadzam się, a importowanie i wywoływanie funkcji , których używasz bezpośrednio, nie jest czymś, z czego można się oderwać.
Josh K
16

Korzystanie z autouzupełniania wcale nie jest takie złe.

To po prostu szybkość, a dla mnie byłby to znak, że ktoś zaczyna chwytać IDE i dobrze go używa.

Nie rozumiem, w jaki sposób NIE użycie go pomogłoby im na przykład nauczyć się OO.

ozz
źródło
1
Jestem za autouzupełnianiem, kiedy opanujesz podstawy. Prędkość jest dobra, gdy wiesz, co przyspieszasz. Ale kiedy IDE automatycznie wypełnia parametr oparty na zmiennej lokalnej tego samego typu lub dodaje instrukcję importu, to po prostu działa, a niektórzy nowi gracze tak naprawdę tego nie rozumieją.
codinguser
Przeczytałem twoją edycję, ale chciałbym myśleć, że zatrudnieni przez nas pracownicy to mądrzy ludzie, którzy będą patrzeć na to, co jest wypełnione, przesłuchiwać ich i rozumieć. To, czy dzieje się tak w praktyce, jest oczywiście innym pytaniem.
ozz
13

Po nauczeniu i szkoleniu studentów, którzy są nowicjuszami w programowaniu, stwierdzam, że autouzupełnianie / inteligencja czasami powoduje więcej szkody niż pożytku. Tak, mogą napisać program, używając go. Tak, kompiluje się i uruchamia, a może nawet zrobić to, o co poprosiliśmy. Ale nie rozumieją, co robią.

Kiedy nie rozumieją, co się dzieje, staje się mniej programowania i więcej hakowania rozwiązania, aby uzyskać oceny. Przekonałem się, że zdarzyło się to często z uczniami, ponieważ to, o co poprosiliśmy, stało się trudniejsze, po prostu hakowali, aż coś zadziałało. To zawsze stawało się jasne, gdy zbliżał się termin i uczniowie byli proszeni o pisanie prostych metod ręcznie ... nie mogli.

Tak, autouzupełnianie / intellisense pomaga nam (profesjonalnym programistom) bardzo często przyspieszać. Nie musimy zapamiętywać wszystkich różnych metod i list parametrów, ale jednocześnie możemy zaryzykować zgadnięcie, jakie parametry przyjmie metoda, o której wiemy, że mamy doświadczenie w programowaniu.

Początkujący nie. Będą czekać, aż IDE pobierze listę metod, będą przewijać tę listę, dopóki nie znajdą takiej, która może być tym, czego potrzebują, sprawdzą parametry, których potrzebuje i zobaczą, czy mają ją przekazać. .. i na koniec zhakują razem coś, co mogą oddać.

I pod koniec kursu, kiedy dostaną przepustkę, odejdą z klasy programistycznej z płytkim zwycięstwem, wielu nigdy więcej nie podejmie kolejnej klasy CS, bo nie rozumieli nic, co zrobili ani dlaczego to.

Tyanna
źródło
2
Będę cyniczny i powiem, że w CS zawsze był taki uczeń. Jeśli chcą się nauczyć Intellisense, po prostu pomagają im robić rzeczy szybciej, zamiast spędzać czas na wyszukiwaniu nazw poszczególnych funkcji w Google lub książce
użytkownik151019
4
@ Mark, zgadzam się. Wydaje mi się, że moja odpowiedź była zbyt szeroka, aby sugerować wszystkich studentów. Ale powiem to, po wprowadzeniu i środowisku IDE z funkcją autouzupełniania w środowisku programistycznym kursu, liczba studentów, którzy nie rozumieli, kiedy rośnie, podobnie jak liczba niepowodzeń pierwszego semestru. Liczba pytań, które otrzymałem, znacznie się zmniejszyła, ale dowiedziałem się, że studenci nie rozumieli lepiej, ale mogli uruchomić programy bez poświęcania czasu na zrozumienie.
Tyanna
students were asked to write simple methods by hand...they couldn't.Wszystko sprowadza się do tego, czego próbujesz ich nauczyć. Ogólne koncepcje programowania lub składnia specyficzna dla języka?
gingerbreadboy
9

Problem z IDE i środowiskami programistycznymi ogólnie nie polega na autouzupełnianiu, ale na zastosowaniu rozwiązań szablonowych (plik | nowy | projekt), w których wiele „interesujących” rzeczy zostało już dla Ciebie zrobionych i są w różnym stopniu ukryte .

Jest to pomocne dla kogoś, kto na ogół rozumie, co dzieje się pod maską - ale dla kogoś, kto potrzebuje tego, czego potrzebuje, jest mniej.

Jest też kwestia czasu potrzebnego na odpalenie ciężkiego IDE ...

Dlatego uważam, że używanie czegoś lżejszego i możliwość uruchamiania aplikacji, w których sam napisałeś każdy wiersz kodu, ma spore zalety - zwłaszcza, że ​​użycie edytora tekstu i kompilatora pokazuje ważną kwestię, że nie potrzebujesz IDE itp. Do pisania oprogramowania, ale to nie znaczy, że chcę używać edytora tekstów przez długi czas i to stwarza wyzwania w zakresie debugowania - chcesz być w stanie robić punkty przerwania i możesz być w stanie przejść krok po kroku przez kod ponieważ ułatwi to zrozumienie, co się dzieje.

Oczywiście możemy jeszcze bardziej pomylić ten problem, rozważając takie rzeczy jak Python, w którym masz wiersz poleceń „na żywo” ...

Dobre pytanie, żadna dobra odpowiedź - z wyjątkiem tego, że chcesz uczyć się progresji i zacząć od edytora tekstów i kompilatora (lub interpretera wiersza poleceń) pozwoli ci skoncentrować się na podstawach składni i logiki, zanim przejdziesz do dalszych złożone rzeczy, które łatwiej będzie zrobić w bardziej rozbudowanym środowisku programistycznym.

Murph
źródło
2
Szczerze mówiąc, uważam, że czas potrzebny na uruchomienie IDE jest znikomy. Spędzam kilkadziesiąt godzin, używając swojego IDE między uruchomieniem go. Z pewnością oszczędza to więcej niż dodatkowe 30-45 sekund czasu potrzebnego do uruchomienia samego samego uzupełniania kodu w tym okresie.
EricBoersma
@Eric - w twoim kontekście? Tak, 100%. W kontekście pytania tj. Kompletni początkujący? Podejrzewam, że IDE będzie częściej otwierane i zamykane na krótsze sesje i ogólnie wszystko, co przeszkadza, to zniechęcenie.
Murph
Tak myślę o ORM, początkujący bazy danych nie powinni mieć możliwości korzystania z nich, ponieważ nie rozumieją wystarczająco dużo na temat rozwoju baz danych, aby dobrze z nich korzystać. Świetne narzędzia dla ludzi, którzy wiedzą, co robią, katastrofy dla początkujących.
HLGEM
@HLGEM Chciałem zasugerować, że jest to trochę bardziej skomplikowane ... ale nie sądzę, żebym nawet miał kwalifikacje do komentowania początkujących i baz danych) -: (I, dla jasności, ponieważ wciąż uczyć się nowych języków i ram Myślę, że mogę skomentować problem IDE - Mam szczególne wspomnienia o wczesnych problemach z .NET i Visual Studio, które robią za dużo)
Murph
4

Uczenie się na własnej skórze zwykle pozostaje przy tobie.

Jako początkujący NIE używaj IDE. Użyj wiersza poleceń, ucz się na własnych błędach. Pomoże to również lepiej zrozumieć opcje kompilatora i linkera.

Kiedy więc używasz IDE? Kiedy projektujesz coś wielkiego lub pracujesz na ogromnej bazie kodu z mnóstwem klas, metod i zmiennych.

Fanatyk 23
źródło
7
Po co rozumieć opcje kompilatora i linkera, jeśli jeszcze nie wiesz, co to jest kompilator? Zwykle kończy się to bałaganem. Spędziłem ponad dekadę, sprzątając swój własny bałagan powstały na skutek zbyt głębokiej i zbyt niskiej ekspozycji na początku (MACRO32, Fortran, DCL ...).
SK-logic
2
Zgoda. Na przykład nauka montażu w języku Python lub C # nie ma sensu - po prostu bardziej Cię frustruje. Zasadniczo uczysz się koncepcji wysokiego poziomu, a następnie filtrujesz w dół do koncepcji niższego poziomu lub innych podejrzanych rzeczy.
DMan
4

Jako pierwszy powiedziałbym, że IDE są dobrodziejstwem dla produktywności, nawet jeśli często narzekam na ich dziwactwa. Jednak nauczyłem się BASIC, C, C ++, Java, Python, Perl, PHP i kilku innych języków bez niczego poza edytorem podświetlania tekstu oraz kompilatorem / interpretatorem języka. Właściwie nauczyłem się Java w Notatniku!

Nauka IDE podpowiada „magię” - idea, że ​​„to działa; nie ważne jak”. Abstrakcja jest dobra; magia jest zła. Programista powinien wiedzieć lub być w stanie dowiedzieć się wszystkiego, co dzieje się w projekcie. Dobre IDE ma za zadanie zajmować się księgowością, a nie kontrolowaniem projektu. Właściwie użyte to świetne narzędzie. Ale jaki rzemieślnik zaczyna od korzystania z routera CNC?

Myślę, że sposób, w jaki się nauczyłem (pisanie wszystkiego i znajomość kompilatora, aby zbudować projekt) pomógł mi niezmiernie, kiedy w końcu zacząłem używać IDE. Na przykład projekt Java nie jest małym folderem w projekcie Eclipse, ale zbiorem klas w strukturze pakietu z niektórymi plikami XML do ścieżek, konfiguracji i wdrażania. Nie chciałbym budować aplikacji dla dużych przedsiębiorstw bez IDE, ale mogę budować małe. Ułatwia to zrozumienie struktury dużych, a kiedy chcę określonego zachowania w kompilacji, powiedzmy, wiem, jak działa javac, więc mogę dostosować rzeczywistą monit kompilacji, zamiast próbować znaleźć magiczną kombinację, która nie działa istnieją w konfiguracji kompilacji. Uważam również, że lepiej rozumiem komunikaty o błędach oraz sposoby ich znajdowania i naprawiania.

Nie nauczałbym używając IDE. Myślę, że początkowe projekty są na tyle małe, że argumenty za zarządzaniem złożonością są dyskusyjne. Jeśli uczysz na przykład języka Java, możesz umieścić wszystkie swoje klasy w tym samym folderze i javac *.java. Nie potrzebujesz do tego IDE! To przemawia za tym, aby projekty były małe, niewiele więcej niż weryfikacja koncepcji. Zminimalizuj koszty ogólne i skoncentruj się na nauczaniu koncepcji, której potrzebują uczniowie. Większe projekty, w których przydatne byłoby IDE, należą do bardziej zaawansowanych klas SE lub projektów dedykowanych.

Jeśli chodzi o pomoc w znalezieniu klas i badań API, ponownie uważam, że jest to dyskusyjne, jeśli projekty są utrzymywane na małym poziomie. Również w Javie javadoc jest bardzo łatwy do odczytania. Zresztą nikt nie może utrzymać całego interfejsu API i będzie czas, kiedy będziesz musiał zbadać API bez korzyści dla IDE. Na przykład w innych językach lub w przypadku zdalnego przesyłania na serwer, na którym nie można otworzyć IDE. Naucz, jak znaleźć dokumentację, a nie „naciśnij”. i możesz zobaczyć, jakie są metody obiektu ”.

Każdy programista może nauczyć się IDE, ale znajomość IDE nie czyni z ciebie dobrego programisty. Pomijając czarny humor, „magia” nigdy nie jest dobrym słowem dla programisty.

Michael K.
źródło
Nauczył się z podświetlania tekstu ... szczęśliwy punk. Niektórzy z nas mają po prostu listę słów kluczowych i monit.
Matthew Whited
@Matthew: Java Zacząłem od notatnika ... :)
Michael K
LOL ... Zacząłem na Apple IIc z Applesoft BASIC, który był wbudowany w ROM. : o)
Matthew Whited
Wow, mam szczęście, że mam QBasic!
Michael K
4

Być może początkujący powinien po prostu najpierw pracować nad łatwiejszymi problemami. I nie, te problemy nie powinny wymagać ani zachęcać do korzystania z IDE do wykonania zadania. W dłuższej perspektywie można zyskać więcej dzięki zrozumieniu podstawowych pojęć. Narzędzia powinny przyjść później.

Żaden rzemieślnik do obróbki drewna nie skoczyłby prosto do użycia strugarki o dużej mocy bez uprzedniego zrozumienia zawiłości zarówno rodzaju drewna, jak i płaszczyzny ręcznej.

(Uwaga: autouzupełnianie i inteligencja to dwie drastycznie różne rzeczy).

Intellisense samo w sobie nie jest złe. Jest to złe tylko wtedy, gdy używa się kuli do zgadywania funkcjonalności bez czytania lub rozumienia podstawowej dokumentacji lub implementacji.

Punkt boczny: jeśli język wymaga IDE do kodowania dla ciebie, prawdopodobnie język ma niewłaściwy poziom abstrakcji dla problemów, które próbujesz rozwiązać.

Ryan McGeary
źródło
2
+1 za punkt boczny. Jestem fanem nauki wielu języków, więc wiesz, kiedy język nie nadaje się do zadania.
Michael K
3

Kiedy dorastamy jako dziecko, nie mówi się nam, że musimy zrozumieć zawiłe zasady języka angielskiego, zanim będziemy mogli mówić. Nie powiedziano nam, że musimy w pełni zrozumieć właściwe użycie przyimków, spójników i unikać fragmentów zdań. Uczymy się przez działanie. Uczymy się przez sukces i porażkę.

IDE z autouzupełnianiem pomaga nowemu programiście zdobyć zaufanie, ułatwiając tworzenie programów, nie zmagając się z zapamiętywaniem wszystkich niezliczonych funkcji ogromnej liczby bibliotek.

Gdyby ktoś naprawdę ekstrapolował pogląd, że autouzupełnianie szkodzi nowemu programistowi, ponieważ sprawia, że ​​jest to dla nich zbyt łatwe, można argumentować, że nie należy używać podręczników podczas programowania, ponieważ zawarte w nim pojęcia należy najpierw zapisać w pamięci, ponieważ brak ich zapamiętania spowalnia je i nie pozwala im w pełni zrozumieć pojęć.

Autouzupełnianie to narzędzie, które służy do zwiększenia produktywności programisty. Podobnie jak w przypadku nauki języka po raz pierwszy, po zdobyciu pewności siebie i poziomu sukcesu z tym, czego się uczymy, pracujemy nad poprawą naszej wiedzy.

Rachunek
źródło
To doskonały argument za użyciem IDE. To wydaje się załamać w CS, ponieważ wydaje mi się (dla mnie), że wielu nie wychodzi poza „naukę mówienia”. Wymagałoby to refaktoryzacji programu nauczania, aby wyraźnie uczyć tego, co kryje IDE.
Michael K
2

Na początku trudno zbudować coś, co działa, więc wszystko, co pomaga marce, tym lepiej. Nowy programista będzie potrzebował kogoś starszego, aby zastanowił się, czy listy powiązane z tablicą lub listy połączone będą lepiej pasować do danego problemu. Każdy z nich ma swoje mocne i słabe strony.

Bez względu na to, czy początkujący ma IDE, czy przegląda dokumenty API online, nie będzie żadnej różnicy między tworzonym przez siebie kodem. Podczas gdy radzenie sobie z bólem związanym z pisaniem błędów składniowych może być doświadczeniem uczenia się, jest zbyt wiele do nauczenia się martwić na samym początku.

Nie uczysz się chodzić po linie, idąc prosto na drut bez siatki. Zaczynasz od chodzenia po linie o centymetrach od ziemi. Zaryzykuję stwierdzenie, że większość z nas pracuje z IDE i jakimś skryptem kompilacji (skrypt kompilacji Visual Studio jest tworzony przez IDE, ale on tam jest). Większość z nas nie buduje naszych klas ręcznie za pomocą edytora tekstu, a następnie ręcznie wywołuje kompilator. Dlaczego powinniśmy narzucać to nowicjuszowi, który ma o wiele więcej do nauczenia się?

Berin Loritsch
źródło
2

Nie widzę potrzeby cierpienia z powodu rezygnacji z narzędzi, nawet gdy programista się uczy. Uważam, że dodatkowy czas i wysiłek, który trzeba by napisać kod bez narzędzi, lepiej byłoby poświęcić na naukę pisania testów jednostkowych i debugowania. Gdy użytkownik będzie wiedział, jak przetestować swój kod i przejść przez niego podczas działania, dowie się wiele o tym, co faktycznie robi.

Poza tym to nie jest tak, że użycie IDE oznacza, że ​​kod sam się pisze. Nieudolny lub początkujący programista napisze kod, który nie będzie działał bez względu na to, czy używa IDE, czy nie.

Po prostu widzę IDE jako kolejny poziom abstrakcji podczas kodowania. Pisząc Javę, generalnie nie muszę rozumieć, jak działa kod bajtowy, który generuje. Jeśli nowy programista korzysta z bibliotek Java, nie musi wiedzieć, w jakim pakiecie się znajduje, jeśli IDE może dla nich dodać je automatycznie. W obu przypadkach, gdy może pojawić się błąd lub problem na niższym poziomie (np. Kolizja nazwy klasy), który powoduje błąd, wtedy nadszedł czas, aby programista spojrzał na niego ręcznie.

Alba
źródło
0

Wiele innych dobrych odpowiedzi, więc nie uważaj tego za kompletną odpowiedź, ale dla początkujących i doświadczonych użytkowników dobrze jest zobaczyć pełny obraz funkcji, jakie mają do dyspozycji.

W Delphi mogę nacisnąć ctrl-j i zobaczę listę wszystkich możliwych rzeczy, których syntaktycznie mogłem się spodziewać.

Niekoniecznie się zgadzam, ale przeczytałem argumenty, że programiści nie powinni nawet patrzeć na członków klasy prywatnej obiektów, których używają iw ten sposób automatyczne uzupełnianie zapewnia każdemu użytkownikowi natychmiastowe odniesienie do interfejsu API.

Nowsze IDE pozwala użytkownikom i programistom języka umieszczać meta-dane w swojej inteligencji, co dodatkowo zwiększa zdolność do czytania i rozumienia, co robią funkcje, bez czytania źródła (co jest czymś, czego i tak nie powinni robić).

Być może dla początkujących najlepiej jest przeczytać i zrozumieć wszystko, co wdrażają. Ale może lepiej byłoby zadać pytanie, czy początkujący powinni mieć możliwość dołączania lub importowania dowolnych przestrzeni nazw lub jednostek bez dokumentacji, dlaczego to robią.

Peter Turner
źródło
0

Z mojego doświadczenia wynika, że ​​używanie IDE do nauki podstaw obsługi OO jest świetne, ponieważ ukrywa część złożoności pisania kodu, jednocześnie pozwalając nowemu programistowi skupić się na logice programu. Jednak wkrótce po nauczeniu się programowania i podstawowych zasad OO byłem, poprzez zajęcia zmuszone do dokładniejszego zrozumienia, jakie elementy potrzebne są do interakcji ze sobą w plikach źródłowych (nie zapominając o instrukcjach importu, tworzeniu odpowiednich klas itp.) Przez kurs programowania gdzie musieliśmy używać terminalu tylko maszyn Unix.

Jest to możliwe w szkole, ponieważ ktoś ma „władzę”, aby zmusić cię do korzystania z narzędzi lo-fi. Byłoby o wiele trudniejsze do osiągnięcia w działalności gospodarczej lub środowisku korporacyjnym.

Bryan J Swift
źródło
0

Mam dwie przemyślenia na ten temat. Po pierwsze, aby naprawdę się czegoś nauczyć, uważam, że musisz wiedzieć, co się naprawdę dzieje. Dzięki temu, jak dobry jest IntelliSense, może ukryć niektóre z nich przed nowym programistą. Na przykład miałem klasę inżynierii sieci w college'u, gdzie właściwie zbudowaliśmy własne ramy sieciowe, aby zbudować nasze końcowe aplikacje. Wyszedłem z tej klasy z umiejętnością dostosowania się do prawie każdego frameworka sieciowego, ponieważ miałem zrozumienie tego, co było pod tym wszystkim na początek. Używanie IDE nie jest do tego stopnia, ale myślę, że wciąż jest o co chodzi.

Jednak korzystanie z IDE może także powodować otwieranie interfejsów API dla nowych programistów. Kiedy zacząłem poważnie kodować, używane przeze mnie IDE pomogło mi ogromnie, ponieważ robiłem takie rzeczy, jak pisanie w obiekcie, używaj autouzupełniania, aby zobaczyć, jakie metody on posiada, a następnie badaj je przy użyciu dostępnych dokumentów. Wszystko to zostało wykonane w ramach IDE i było doskonałym narzędziem do nauki.

Tak, uważam, że korzystanie z nich jest OK, o ile poświęcisz czas na zrozumienie, co się dzieje. Samo użycie rzutowania obiektu bez zrozumienia, dlaczego musiałeś to zrobić, jest naprawdę złe, ale jeśli nowy programista zobaczy, że możesz użyć rzutowania obiektu, a następnie zobaczy, dlaczego nie widzę nic złego.

Corv1nus
źródło
0

Uczenie się wymaga praktyki. Programowanie może być bardzo frustrującym zadaniem, gdy nie masz pojęcia, co możesz zrobić ani jak to działa.

Powiedzmy, że niepraktyczne jest czytanie wielu książek o zasadach programowania bez pisania jednego wiersza kodu; niczego się nie uczy w ten sposób.

Intellisense jest bardzo pomocny w udzielaniu nowym programistom pomocy, której potrzebują, aby kontynuować programowanie, ćwiczyć, a tym samym uczyć się.

Jak już powiedziano, uczenie się konkretnych interfejsów API nie jest tym samym, co uczenie się zasad programowania. Niewątpliwie stanie się to, że nowi programiści będą popełniać błędy (niezależnie od Intellisense), a sposób, w jaki zdecydują się naprawić te błędy, doprowadzi ich do zostania dobrymi lub biednymi programistami.

Jeśli próbujesz nauczyć kogoś programowania, zachęcę go do korzystania z Intellisense i zabawy, dopóki się nie utkną. Wtedy próbowałem zbudować fundament, ucząc ich, dlaczego utknęli.

Remus
źródło
0

IMO, IDE sprawi, że będziesz bardziej produktywny. Jednak dla początkujących programowanie w IDE nie jest na ogół dobrym pomysłem. Wystarczyłyby edytory tekstu, takie jak notatnik ++, notatnik itp.

Ponadto ogólnie nie uważa się za dobry pomysł, aby rozpocząć naukę programowania w języku wysokiego poziomu. Proponuję zacząć od języka asemblera. To nauczy Cię podstaw, a także cierpliwości.

NinjaCoder
źródło