Po co uczyć się Perla, Pythona, Ruby, skoro firma używa C ++, C # lub Java jako języka aplikacji?
Zastanawiam się, dlaczego programista C ++, C #, Java chce nauczyć się dynamicznego języka?
Zakładając, że firma nie zmieni swojego głównego języka programowania z C ++/C #/Java na język dynamiczny, jaki jest pożytek z języka dynamicznego?
Jakie zadania pomocnicze mogą być wykonane przez języki dynamiczne szybciej lub najlepiej po kilku dniach studiów niż z językiem statycznym, którego używasz przez kilka lat?
Aktualizacja
>
Po zapoznaniu się z kilkoma pierwszymi odpowiedziami staje się jasne, że są dwa problemy.
Moim głównym zainteresowaniem jest to, co pracodawca uzasadnia jako koszt.
To znaczy, szukam dla pracodawcy pretekstu do finansowania nauki dynamicznego języka. Poza oczywistym, że pracownik będzie miał szersze spojrzenie,
pracodawcy zwykle szukają „prawdziwych” korzyści.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
25 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
vbscript
), a następnie załaduj go do bazy danych, a następnie utwórz program Java/C #, aby to zrobić, lub zrób to ręcznie.
Ponadto, ze względu na łatwość, z jaką większość języków dynamicznych analizuje tekst, doskonale nadają się do generowania kodu. Oczywiście twój ostateczny projekt powinien być w C #/Java/Transact SQL, ale zamiast wycinania i wklejania 100 razy, znajdowania błędów oraz wycinania i wklejania 100 razy, często (ale nie zawsze) łatwiej jest po prostu użyć kodu generator.
Niedawnym przykładem pracy jest sytuacja, w której musieliśmy pobrać dane z jednego systemu księgowego do naszego systemu księgowego. System ma format importu, ale stary system miał zupełnie inny format (stała szerokość, chociaż niektóre rzeczy trzeba było uzgodnić). Wyzwaniem nie jest stworzenie programu do ciągłego przesyłania danych. Chodzi o umieszczanie danych w naszym systemie, a następnie utrzymywanie ich tam w przyszłości. Dlatego, mimo że jesteśmy sklepem C # i SQL Server, użyłem Pythona do konwersji danych do formatu, który nasza aplikacja może zaimportować. Ostatecznie nie ma znaczenia, że użyłem Pythona, liczy się to, że dane są w systemie. Mój szef był pod wielkim wrażeniem.
Tam, gdzie często widzę języki dynamiczne używane do testów. O wiele łatwiej jest stworzyć program w Pythonie/Perlu/Ruby, aby powiązać się z usługą internetową i wrzucić do niej jakieś dane, niż stworzyć równoważny program Java. Możesz także użyć Pythona, aby trafić w programy wiersza poleceń, wygenerować mnóstwo niepotrzebnych (ale nadal ważnych) danych testowych itp.
Inną rzeczą, w której języki dynamiczne są bardzo silne, to generacja kodu. Tworzenie kodu C #/C ++/Java. Poniżej znajdują się przykłady:
Pierwszy kodeks generowania kodu, które często widzę, są ludzie używającymi języków dynamicznych, aby utrzymać stałe w systemie. Zamiast ręcznego kodowania ENAMS, możesz użyć języka dynamicznego, aby dość łatwo zdemontować plik tekstowy i utwórz kod Java/C # za pomocą ENAMS.
SQL to zupełnie inna gra w piłkę, ale często uzyskuje się lepszą wydajność, wycinając i wklejając 100 razy zamiast próbować wykonać funkcję (z powodu buforowania planu wykonania lub złożonej konstrukcji funkcji logicznej, która zmusza cię do przejścia wiersz po wierszu, a nie w zestawie ). W rzeczywistości bardzo przydatne jest użycie definicji tabeli do automatycznego tworzenia określonych procedur składowanych.
Zawsze najlepiej jest uzyskać wpisowe na generator kodu. Ale nawet jeśli tego nie zrobisz, czy fajniej byłoby spędzać czas na wycinaniu/wklejaniu, czy może fajniej byłoby utworzyć skrypt Perl/Python/Ruby raz, a następnie wygenerować kod? Jeśli przesłanie kodu zajmie Ci kilka godzin, ale mniej czasu na stworzenie generatora kodu, to nawet jeśli użyjesz go raz, zaoszczędzisz czas, a tym samym pieniądze. Jeśli utworzenie generatora kodu trwa dłużej niż jednorazowe przesłanie kodu, ale wiesz, że będziesz musiał wielokrotnie aktualizować kod, nadal może to mieć sens. Jeśli przekazanie kodu zajmie ci 2 godziny, 4 godziny na stworzenie generatora, ale wiesz, że będziesz musiał przekazać równoważny kod 5 lub 6 razy więcej, niż oczywiście lepiej jest utworzyć generator.
Ponadto niektóre rzeczy są łatwiejsze w przypadku języków dynamicznych niż Java/C #/C/C ++, w szczególności przychodzą na myśl wyrażenia regularne. Jeśli zaczniesz używać wyrażeń regularnych w Perlu i zdasz sobie sprawę z ich wartości, możesz nagle zacząć używać biblioteki wyrażeń regularnych Java, jeśli nie robiłeś tego wcześniej. Jeśli tak, to może być coś innego.
Zostawię wam ostatni przykład problemu, który byłby świetny dla dynamicznego języka. Mój partner roboczy musiał wziąć katalog pełen plików i nagrać je na różnych płytach CD dla różnych klientów. Było kilku klientów, ale dużo plików i trzeba było do nich zajrzeć, żeby zobaczyć, czym są. Wykonał to zadanie ręcznie… Java/C # i zaoszczędziłby czas, ale za jednym razem i przy całym narzucie programistycznym nie jest tego warte. Jednak spoliczkowanie czegoś w Perl/Python/Ruby prawdopodobnie byłoby tego warte. Spędził nad tym kilka godzin. Utworzenie skryptu Pythona w celu sprawdzenia każdego pliku, dopasowania do klienta, do którego ma trafić, a następnie przeniesienia pliku w odpowiednie miejsce, zajęłoby mniej niż jeden. Ponownie, nie jest to część standardowego przypisania. Ale zadanie zostało ustawione jako jednorazowe. Lepiej zrobić to samemu, poświęcić więcej czasu na uzyskanie języka Java/C # w celu wykonania zadania lub spędzić znacznie mniej czasu na robieniu tego w Pythonie/Perlu/Ruby. Jeśli używasz C lub C ++, jest to jeszcze bardziej dramatyczne ze względu na dodatkowe problemy programistyczne w C lub C ++ (wskaźniki, sprawdzanie granic tablicy itp.).
Anonimowy użytkownik
Potwierdzenie od:
Języki, którymi się posługujemy (i które programujemy) decydują o tym, jak myślimy. Może się to zdarzyć na podstawowym poziomie, takim jak c ++, javascript lub lisp, lub na poziomie implementacji, gdzie konstrukcja ruby zapewnia moment eureki na rozwiązanie w „prawdziwej pracy”.
Mówiąc o twojej rzeczywistej pracy, jeśli rynek się załamie i twój pracodawca zdecyduje się cię zatrudnić, jak myślisz, jak przeciwstawisz się facetowi, który jest elastyczny, ponieważ napisał oprogramowanie w dziesiątkach języków, a nie twoją ograniczoną ekspozycję? Biorąc pod uwagę wszystkie inne rzeczy, myślę, że odpowiedź jest jasna.
Wreszcie, programujesz na całe życie, ponieważ kochasz programowanie ... prawda?
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Po odrobinie nauki i eksperymentowaniu z ruby lub perl, powinieneś być w stanie napisać kilka skryptów do manipulacji wyrażeniami regularnymi, które mogą zmieniać formaty danych lub pobierać informacje z dzienników. Przykładem małego skryptu ruby / perl, który można szybko napisać, byłby skrypt analizujący bardzo duży plik dziennika i zgłaszający tylko kilka interesujących zdarzeń, w formacie czytelnym dla człowieka lub w formacie csv.
Ponadto doświadczenie z różnymi językami programowania powinno pomóc w znalezieniu nowych sposobów rozwiązywania problemów w językach bardziej ustrukturyzowanych, takich jak Java, C ++ i C #.
Anonimowy użytkownik
Potwierdzenie od:
Lub jeśli chcesz przeanalizować zawartość plików dziennika i potrzebujesz więcej plików niż jest to dostępne w przypadku grep, sed itp.
Ponadto używanie innych języków, takich jak Ruby, które nie wymagają dużych kosztów konfiguracji, pozwoli Ci szybko prototypować pomysły przed wdrożeniem ich w C ++, Javie itp.
HTH
owacja,
Obrabować
Anonimowy użytkownik
Potwierdzenie od:
http://www.paulgraham.com/pypar.html
http://www.paulgraham.com/pypar.html
)
Zasadniczo, niezależnie od tego, czy nowy język jest zgodny z obecną metodologią firmy, nauka nowego języka oznacza naukę nowych pomysłów. Każdy, kto chce nauczyć się języka, który nie jest uważany za „klasę biznesową”, oznacza, że interesuje go programowanie, a nie tylko zarabianie pieniędzy.
Cytując miejsce Paula:
A ludzie nie uczą się Pythona, ponieważ
da im pracę; uczą się tego
ponieważ naprawdę lubią programować
i nie są zadowoleni
języki, które już znają.
Co sprawia, że są dokładnie tym, czym są
programistów, których firmy powinny chcieć
zatrudnić. Stąd fakt, że z braku lepszego
Imię i nazwę Python Paradox: Jeśli
firma postanawia napisać swój
stosunkowo ezoteryczne oprogramowanie
język, który może zatrudnić
najlepszych programistów, bo tak będzie
przyciągać tylko tych, którym zależało wystarczająco
przestudiuj to. I dla programistów
paradoks jest jeszcze bardziej oczywisty:
język do nauki, jeśli chcesz się go nauczyć
dobra praca to język, którym ludzie
uczyć się nie tylko po to, by znaleźć pracę.
Jeśli pracodawca byłby skłonny pokryć koszty nauki nowego języka, są szanse, że osoby, które zgłosiły się na ochotnika do nauki (zakładając, że nie jest to wymagana klasa), byłyby tymi samymi osobami, które są już na „szybkiej ścieżce”.
Anonimowy użytkownik
Potwierdzenie od:
- Wayne Gretsski.
Nasza branża nieustannie się zmienia. Żaden język nie może być wiecznie mainstreamowy. Dla mnie Java, C ++, .Net to teraz podkładka. A python, ruby, perl to miejsce, w którym będzie podkładka. Zdecyduj sam, czy chcesz być dobry, czy wspaniały!
Anonimowy użytkownik
Potwierdzenie od:
paradoks
http://www.paulgraham.com/pypar.html
Python .
Anonimowy użytkownik
Potwierdzenie od:
Co więcej, odkryłem, że nauka Pythona uczyniła mnie znacznie lepszym programistą Java; ponieważ nauczyłem się wielu tych samych pojęć w innym języku, czuję, że rozumiem je znacznie lepiej. A jeśli chodzi o to, co sprawia, że Python jest łatwiejszy niż Java, możesz sprawdzić to pytanie:
Java -> Python?
https://coderoad.ru/49824/
Anonimowy użytkownik
Potwierdzenie od:
Edit:
Napisałem to przed przeczytaniem aktualizacji oryginalnego pytania. Zobacz moją drugą odpowiedź, aby uzyskać lepszą odpowiedź na zaktualizowane pytanie. Zostawię to jako ostrzeżenie przed byciem najszybszą bronią na Zachodzie =)
Ponad dekadę temu, kiedy studiowałem sposób działania komputera, starzy mędrcy z brodami wyjaśnili, że C i C ++ to narzędzia przemysłu. Nikt nie używał Pascala, a tylko lekkomyślni ryzykowali swoje firmy asemblerowe.
I oczywiście,
nikt nawet nie wspomniałby o strasznej powolnej brzydkiej rzeczy zwanej Javą
... Nie będzie to poważne narzędzie biznesowe.
Więc zastąp języki w powyższej historii, a być może uda ci się przewidzieć przyszłość. Albo może nie. Chodzi o to, że Java nie będzie ostatnim językiem programowania i prawdopodobnie również zmienisz pracodawcę. Przyszłość dodaje energii 24 godziny na dobę. Bądź gotów.
Nauka nowych języków jest dla Ciebie dobra. Ponadto, w niektórych przypadkach, może dać ci prawo do przechwałek przez długi czas. Mój pierwszy kurs uniwersytecki miał pewien schemat. Więc kiedy ludzie rozmawiają ze mną o czymś nowym
language du jour
moja odpowiedź brzmi mniej więcej tak: „Funkcje pierwszej klasy? Tak było w zeszłym wieku”.
I oczywiście masz
więcej rzeczy zrobionych
używając języka wysokiego poziomu.
Anonimowy użytkownik
Potwierdzenie od:
Być może jedyną natychmiastową korzyścią krótkoterminową jest to, że programiści uczą się rozróżniać gwoździe, które potrzebują młotka Python/Perl/Ruby. A jeśli są dobrzy, mogą się trochę więcej nauczyć (może online!) I stać się prawdziwymi ekspertami.
Łatwiej sobie wyobrazić długoterminowe korzyści:
Anonimowy użytkownik
Potwierdzenie od:
Pokaż swojemu szefowi demo typu „Hej, zrobiłem to i oszczędza mi to dużo czasu [lub jeszcze lepiej, tak dużo pieniędzy], wyobraź sobie, że gdyby każdy mógł z tego skorzystać, ile pieniędzy byśmy zaoszczędzili”
A potem, po tym, jak się zgadzają, wyjaśnij, jak to jest inna technologia i warto wydawać pieniądze, aby uzyskać więcej uczenia się i szkolenia dla innych, jak to zrobić lepiej.
Anonimowy użytkownik
Potwierdzenie od:
1) Kiedy przełączasz się między tymi językami, każdy z nich ma własne konstrukcje i filozofie stojące za problemami, które próbują rozwiązać. To pomoże ci znaleźć
odpowiednie narzędzie do pracy
lub
obszary problemowe
.
2)
rola kompilatora
(lub tłumacz w przypadku niektórych języków) staje się bardziej widoczny. Dlaczego system typów Rubiego różni się od systemu .Net/C #? Jakie problemy rozwiązuje każdy z nich? Przekonasz się, że masz niższy poziom zrozumienia konstrukcji kompilatora i ich wpływu na język
3) przełączanie się między Rubim i C # naprawdę pomogło mi lepiej zrozumieć
wzorce projektowe
... Sugeruję implementację typowych wzorców projektowych w języku takim jak C #, a następnie w języku takim jak Ruby. To często pomogło mi dostrzec filozofię określonego wzorca podczas niektórych ceremonii kompilacji.
4) inne
społeczność
... C #, Java, Ruby, Python itp. Wszystkie mają różne społeczności, które mogą pomóc Ci wykorzystać swoje umiejętności. To świetny sposób, aby przenieść swoje rzemiosło na wyższy poziom.
5) wreszcie, bo nowe języki są fajne :)
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Są chwile, kiedy obecność śrubokręta lub szczypiec sprawia, że trudny problem staje się banalny.
Nikt nie pyta wykonawców, Płotnikowa itp .: "Po co uczyć się posługiwać śrubokrętem, skoro już mam młotek?" Naprawdę dobrzy wykonawcy/stolarze mają mnóstwo narzędzi i wiedzą, jak dobrze z nich korzystać. Wszyscy programiści muszą zrobić to samo, nauczyć się korzystać z nowych narzędzi i dobrze z nich korzystać.
Ale zanim użyjemy jakichkolwiek elektronarzędzi, zacznijmy
poświęć chwilę, aby porozmawiać o bezpieczeństwie sklepu. wymagany
przeczytaj, zrozum i przestrzegaj wszystkich
instrukcje bezpieczeństwa dostarczone z
elektronarzędzia. To znacznie zmniejszy
Ryzyko zranienia. I pamiętaj : koniec ważnej zasady
w co się ubrać: okulary ochronne
- Norm
Anonimowy użytkownik
Potwierdzenie od:
Krótkie czasy cykli projekt-kod-test sprawiają, że języki dynamiczne są idealne do tworzenia prototypów, narzędzi i szybkich & amp; brudne skrypty jednorazowe. IMHO, ostatnie dwa mogą mieć ogromny wpływ na produktywność programistów. Zdumiewa mnie, jak wiele osób radzi sobie ręcznie, zamiast złożyć narzędzie, które zrobi to za nich. Myślę, że to dlatego, że nie mają czegoś takiego jak Perl w swoim zestawie narzędzi.
Możliwość interakcji z niemal wszystkim (innymi programami lub językami, bazami danych itp.) Ułatwia ponowne wykorzystanie istniejącej pracy i automatyzację zadań, które w innym przypadku musiałyby być wykonywane ręcznie.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
https://stackoverflow.com/ques ... 84112
https://coderoad.ru/76364/
Uczenie się nowych języków polega na utrzymywaniu otwartego umysłu i uczeniu się nowych sposobów działania.
Anonimowy użytkownik
Potwierdzenie od:
Tymczasowe skrypty, które nie pozostaną na miejscu, nie zajmują dużo czasu.
Jestem leniwy, ale oczywiście dobrze jest po prostu nauczyć się jak najwięcej i zobaczyć, jakie funkcje istnieją w innych językach. Wiedza więcej nigdy nie zaszkodzi przy przyszłych zmianach zawodowych :)
Anonimowy użytkownik
Potwierdzenie od:
Jeśli chodzi o zadania, Python/Lua/Ruby/Perl świetnie nadają się do małych prostych zadań, takich jak znajdowanie niektórych plików i zmiana ich nazw. Świetnie sprawdzają się również w połączeniu z frameworkami (np.Rails, Django, Lua dla Windows), aby szybko tworzyć proste aplikacje. Heck, 37Signals polega na budowaniu prostych, ale bardzo przydatnych aplikacji Ruby na Railsach.
Anonimowy użytkownik
Potwierdzenie od:
Masz również tę zaletę, że znajomość dodatkowych języków rozszerza twoje umiejętności, a nauka rozwiązywania problemów w innych językach może być równie cenna jak sam język.
Wreszcie, języki skryptowe są bardzo przydatne w dziedzinie rozszerzeń. Weźmy jako przykład LUA. Możesz dołączyć interpreter Lua do swojej aplikacji z bardzo niewielkim narzutem, a teraz masz sposób na tworzenie bogatych funkcji skryptowych, które można ujawnić użytkownikom końcowym lub zmodyfikować i szybko rozprowadzić bez konieczności przebudowywania całej aplikacji. Jest to wykorzystywane z doskonałym efektem w wielu grach, zwłaszcza w World of Warcraft.
Anonimowy użytkownik
Potwierdzenie od:
Mam skrypty do szybkiego odwracania tego, na co wskażę, skrypty do uruchamiania skryptów kompilacji, skrypty do czyszczenia danych i porównywania danych.
Oczywiście, że to ja
mógłby
zrobiłby to wszystko za pomocą skryptów java lub może powłoki (mam ich też kilka), ale kto chce skompilować klasę (upewniając się, że ścieżka klas jest ustawiona poprawnie itp.), Kiedy potrzebujesz czegoś szybkiego i brudnego. Znajomość języka skryptowego może usunąć 90% tych nudnych/powtarzalnych zadań ręcznych.
Anonimowy użytkownik
Potwierdzenie od:
Ale
z językami takimi jak Python, które pozwalają osadzić standardowe C/C ++/Java lub odwrotnie, możesz przyspieszyć naprawdę krytyczne bity, ale pozostawić je sklejone elastycznością dynamicznego języka.
.. iw ten sposób uzyskasz to, co najlepsze z obu światów. Jeśli chcesz to uzasadnić, dlaczego więcej osób powinno się uczyć tych języków, po prostu wskaż, o ile szybciej możesz opracować to samo oprogramowanie i o ile bardziej niezawodne rozwiązanie (ponieważ debugowanie/naprawianie problemów w językach dynamicznych, z mojego doświadczenia, dużo łatwiej!).