Niedawno nauczyłem się C i chcę rozpocząć projekt, który wzmocni moją wiedzę. Postanowiłem stworzyć bardzo prosty edytor tekstu, coś w rodzaju vima. Problem, z którym się zmagam, polega na tym, że naprawdę nie mam pojęcia, jak działa edytor tekstu, i nie wiem, po co google, aby się o tym dowiedzieć.
Googlowanie na ten temat doprowadziło do powstania repozytorium GitHub vima, co jest dla mnie bezużyteczne, ponieważ baza kodów jest ogromna, a kod mnie dezorientuje. Znalazłem również samouczki dotyczące tworzenia edytora tekstów w C, który działa trochę jak vim.
Chociaż myślałem o podążaniu za samouczkami, czuję się jak oszukiwanie. W jaki sposób programiści vim wymyślili, jak napisać vim bez określonych samouczków? Czy też zaczęli od prostszych edytorów tekstu? Jak oni to odkryli na podstawie znajomości języków i ich dokumentacji?
Czego dokładnie potrzebuję, aby rozpocząć pisanie tego edytora tekstu bez bezpośredniego korzystania z samouczka? Innym przykładem, o którym lubię myśleć, jest: w jaki sposób Dennis Ritchie i Ken Thompson kodowali system Unix? Mam pojęcie o tym, jak działa system operacyjny, ale nie mam pojęcia, jak umieścić go w kodzie. Czego mi brakuje? Jak przenieść tę znajomość języka na faktyczne, praktyczne zastosowanie?
Odpowiedzi:
Jeśli to twój pierwszy projekt programistyczny, nawet prosty edytor tekstu może być zbyt skomplikowany. Coś takiego jak vim lub system operacyjny jest całkowicie wykluczone.
Zbliżanie się do problemu
Ogólnie rzecz biorąc, sposób rozpoczęcia jest z grubsza podobny w przypadku większości projektów:
Przykład
Weźmy przykład edytora tekstu.
Chcesz wyświetlić część pliku tekstowego na ekranie, wstawiać i usuwać znaki oraz zapisać bieżącą wersję.
Zacznij od przeczytania pliku i wyświetlenia jego zawartości.
Zidentyfikujesz (między innymi) następujące pod-problemy:
Po osiągnięciu punktu, w którym Twoje wymaganie (załaduj plik i wyświetl go) jest gotowe, możesz zacząć zastanawiać się, jak wyświetlić tylko część, która będzie pasować do ekranu, poruszać się w pliku itp.
Następny krok
Z biegiem czasu, gdy podejmujesz coraz bardziej złożone problemy, zdajesz sobie sprawę, że coraz trudniej jest znaleźć odpowiednie sposoby na ich rozłożenie. Zauważysz również, że zmiana kodu może z czasem stać się nużąca.
W tym momencie nadszedł czas, aby nauczyć się podstawowych koncepcji architektury i projektowania.
źródło
Ty nie.
Jeśli nie masz nawet mglistego pojęcia, jak coś zrobić, to znak, że wykracza to poza twoje obecne umiejętności. Ponieważ jeśli nie masz pojęcia, jak zacząć, na pewno nie będziesz miał pojęcia, jeśli chodzi o najtrudniejszą część aplikacji.
źródło
less
,more
lubview
programów. Udostępniają niektóre aspekty edytorów, bez złożoności zmiennych buforów edycji.Musisz zdecydować, jak ty chcesz swój edytor tekstowy do pracy.
Jest to jedno z najbardziej irytujących i satysfakcjonujących doświadczeń w tworzeniu własnych projektów od początku do końca. Nikt nie wysyła ci wymagań do budowania. Musisz opracować własne wymagania.
Oznacza to, że musisz napisać okropnie dużo pracy projektowej przed napisaniem pierwszego wiersza kodu. Musisz zdecydować, jak wygląda interfejs. Musisz zdecydować, jaką funkcjonalność włączyć. Oba powyższe pytania będą oparte na tym, co czujesz, że jesteś w stanie zrobić. Jeśli myślisz o „idealnej” sytuacji (jak chciałbyś, aby interfejs działał), ale nie czujesz się w stanie go zakodować, to musisz zacząć szukać alternatywnych podejść: Jak mogę to zrobić? Pomaga to skoncentrować się na metodach kodowania, o których możesz chcieć dowiedzieć się więcej.
Jak powiedzieli inni, próba skopiowania vima może nie być najlepszym rozwiązaniem, ponieważ jest to duża i skomplikowana baza kodu. Odmawiasz sobie również pracy projektowej, która moim skromnym zdaniem pomaga dopełnić twoją pozycję jako programisty.
Nie oznacza to, że musisz napisać całą aplikację od początku do końca, zanim napiszesz swój pierwszy wiersz kodu. Wymagania mogą się zmieniać wraz z upływem czasu. Można dodawać nowe funkcje, o których nie myślisz, dopóki nie przetestujesz / nie używasz własnej aplikacji i nie pomyślisz: „Czy nie byłoby miło, gdyby ...” Można zacząć od prostej.
źródło
Pisanie w pełni funkcjonalnego edytora tekstu od zera bez doświadczenia w programowaniu jest głupie: zniechęcisz się i porzucisz go, zanim zaczniesz dużo się uczyć.
Przychodzi na myśl kilka alternatyw:
vim
, spójrz na to i spróbuj zrozumieć coś małego i odizolowanego, na przykład sposób, w jaki reprezentuje dane, lub szuka pojedynczego znaku (f
polecenia).cat
polecenie potemwc
potemgrep
potemsed
na przykład.źródło