To nie jest pytanie z kategoryczną odpowiedzią tak lub nie. Pozwól mi ważyć się z anegdotą.
Przykład 1
Miałem za zadanie przeniesienie gry napisanej w Javie do Flasha, AS3. Na powierzchni może to przebiegać stosunkowo płynnie. W końcu możesz uznać takie zadanie za bardziej przejrzyste niż praca przeciętnego klienta, ponieważ masz już całkowicie wbudowaną specyfikację funkcjonalną w postaci gry źródłowej. Java i AS 3 są językami wysokiego poziomu, a AS3 ma wiele wspólnych cech z Javą, takich jak struktury pakietów, dziedziczenie pojedyncze / wiele interfejsów, silne wpisywanie (opt-in) oraz pojęcia zmiennej publicznej / chronionej / prywatnej i deklaracje funkcji. W tym czasie byłem bardzo zielony w Javie i zupełnie nowy w oryginalnej bazie kodu źródłowego. Więc po prostu zanurkowałem, żeby zobaczyć, co mogę znaleźć, mając nadzieję, że będzie to szybkie i łatwe.
Jak się okazało, autor kodu próbował stworzyć abstrakcyjny silnik, który można by przenieść z Javy do jakiegoś nieokreślonego innego środowiska. To dało mi nadzieję, że przeniesienie będzie proste. Niestety, zamiast tego odkryłem, że patrzę na perspektywę ponownego wynalezienia samego Flasha na Flash, bez korzyści z Wątków. Jak się okazało, dosłowny port byłby po prostu złym pomysłem ... koszmarem wydajności. Poza tym gra zaimplementowała własny niestandardowy zewnętrzny język skryptowy, co oznaczałoby utworzenie parsera i leksykonu dla tego języka, gdybym miał nadzieję korzystać ze wszystkich oryginalnych źródłowych plików danych.
Ostatecznie, biorąc pod uwagę ograniczenia czasowe i budżetowe, oryginalny kod źródłowy nie bardzo pomógł. Najbardziej pomocne było to, że wiedziałem, jak dokładnie naśladować kontrolę nad logiką gry ... ale czy naprawdę potrzebowałem do tego oryginalnego źródła? Prawdopodobnie nie.
Ale ten przykład może nie być tak istotny, ponieważ jest swego rodzaju odwrotnością twojej sytuacji. Miałem nadzieję, że użyję bazy kodu, której nie napisałem, w języku, który nie znałem w tym czasie, aby przyspieszyć rozwój w środowisku, które dobrze znałem. Oto inny przykład
Przykład 2
Zwracając uwagę na to, co robił programista Java, próbując stworzyć przenośną bazę kodów, postanowiłem zrobić coś podobnego dla siebie w pracy z Flashem ... pisząc kod, który nie polegał tak bardzo na rozszerzeniu klas flash.display. * i używając kompozycji do tworzenia widoków. Nie polegam tak mocno na flash.event. * I zamiast tego piszę własny, lekki system przekazywania wiadomości, niepowiązany szczególnie z językiem ani platformą. Niedawno skończyłem grę używając wspomnianego frameworka i chciałem przekonać się, czy łatwo byłoby go przenieść na C # (język, który znam tak bardzo, jak jest podobny do Java i AS3) jako projekt Unity 3D. Jak się okazuje, było to o wiele bardziej udane! Ponieważ myślę płynniej w AS3 niż w C #, posiadanie już napisanych algorytmów oszczędza mnóstwo czasu. Wszystko, co musiałem zrobić, to po prostu zmienić składnię, co nie jest
Tak więc, z własnego doświadczenia, nie mogę powiedzieć, że odpowiedź zawsze brzmi „tak” lub „nie”. Powinieneś wziąć pod uwagę, w jakim stopniu jesteś zależny od określonych idiomów językowych w wybranym języku wysokiego poziomu i czy ponowne ich utworzenie będzie łatwe czy trudne w C.