Ulemper ved Python:
– En stor ulempe ved både Python og Java er, at de kræver meget hukommelse. Selvom både Java og Python-sprog har flere implementeringer, forbliver C++ det mest populære valg til programmering af indlejrede systemer, hvilket betyder, at det vil være sværere at finde nogen, der kan programmere i Python eller Java, end det ville være at finde nogen, der ved, hvordan man programmerer i C++.
– Mens noget kode skrevet i begge sprog kan køre på enhver platform på grund af deres brug af bytecode eller virtuelle maskiner, er der nogle forskelle mellem, hvordan forskellige platforme fortolker instruktionerne. For eksempel, selvom Java har et ekstra trin med kompilering, før det faktisk kører en bestemt linje kode, sikrer denne proces, at dit program kører nøjagtigt som tilsigtet, uanset hvilket operativsystem du bruger (da hver maskine bruger sin egen instruktionssæt). Desværre er dette ikke tilfældet med Python, da der er forskellige versioner af sproget, der fortolker kode på forskellige måder (for eksempel er der en version af Python til Windows og en anden til Linux), hvilket betyder, at den skrevne kode kan udføre sig forskelligt afhængigt af det OS, den køres igennem.
– På grund af hvor streng Java er om typer, er der ingen problemer med, at sproget genkender, hvem eller hvad noget er (for eksempel kan du hurtigt se, om en variabel indeholder et heltal eller et flydende punkt). Selvom dette gør opbevaring af data lettere og meget mere præcis, går det også igennem meget mere bearbejdning for at opnå denne form for præcision. På den anden side tillader Python variabler at indeholde et objekt af flere forskellige typer inden i dem, hvilket kan gøre det sværere at gå tilbage og ændre noget, der skal opdateres, da du ikke ville have nogen idé om, hvad der er gemt i hvert stykke data, medmindre konteksten blev angivet. Desuden, selvom alle objekter i Python håndteres via reference, så de alle kan bruge hukommelse uden behov for tildeling, vil manglen på streng typehåndhævelse resultere i et meget større fodspor på din computers arbejdssæt-hukommelse (hvor data opbevares i RAM).
– Java har mere dokumentation tilgængelig med bedre forklaringer, mens Python-programmer har masser af information, der let kan findes gennem en hurtig Google-søgning. Fordi begge sprog har deres fordele og ulemper, kommer det hele ned på personlig præference, når man leder efter hvilket sprog man skal bruge. Mens det ene sprog muligvis giver en løsning, som det andet ikke kan, betyder det ikke, at det modsatte sprog ikke ville have opnået det nødvendige, hvis det blev brugt korrekt. Kort sagt, antag ikke simpelthen, at det ene sprog er bedre end det andet, for i sidste ende kommer det hele ned på, hvordan nogen bruger dem.
Ulemper ved Java:
– Java er langsommere end C++ på grund af brugen af en Java virtual machine. På grund af det store antal instruktioner, der går ind i oprettelsen af en applikation, tager det længere tid at køre den første gang end ved brug af C++ (som kan kompileres direkte til maskinkode).
– Et andet problem med Java er, at det ikke har en “one true IDE” (Integrated Development Environment). Selvom det ikke ser ud til at være en stor ting, kan det forårsage betydelige problemer, hvis du arbejder i et team, og halvdelen af gruppen foretrækker en type redaktør, mens andre vil have noget andet. For eksempel har Eclipse, IntelliJ IDEA, Netbeans osv. alle deres fordele, men er ikke kompatible med hinanden, hvilket betyder, at skift fra den ene til den anden vil tage tid under softwareudviklingsprocessen. Dette er den afgørende grund til, at spiludviklere, der bruger Java, har tendens til at holde sig til IntelliJ (selvom det ikke er open source som Eclipse, hvilket gør det svært at tilpasse).
– Sidst men ikke mindst kan det være meget kedeligt at skrive alt fuldt ud, når du skriver kode på grund af, hvor udførlig Java er. På grund af dette vil mange mennesker, der arbejder på et projekt med andre, bruge genveje eller forkortelser (dette er normalt ikke et problem, hvis du kun arbejder alene, da der ikke vil være behov for andet). For eksempel kan jeg i Visual Studio skrive “soon sem.” og trykke på tabulatortasten to gange efter kolon for at afslutte en if..else-erklæring uden at skulle kigge tilbage på mit arbejde for at sikre, at det matcher originalen. Hvis jeg derimod gjorde dette i Java, ville jeg skulle skrive “if (x > 0) { soon(sem); } else { sem = null; }”. Heldigvis er der genveje tilgængelige, men de kan være ret svære at huske, så de fleste holder sig til traditionelle kodemetoder.
– En anden ulempe, der specifikt vedrører spiludvikling, skyldes, hvor streng Java er om typer. Fordi alt skal være et objekt i Java, skal der foretages ekstra bearbejdning, når der kontrolleres, hvad noget er. For eksempel kan du hurtigt se, om en variabel indeholder enten et heltal eller et flydende punkt i C++ uden at skulle køre gennem al koden for at finde ud af, hvad det er. Men i Java skulle dette ske, når du kontrollerer, om noget er en int eller en float på grund af visse typer, der er mere præcise end andre. Dette betyder, at data, der kunne være blevet gemt på stakken i stedet for heapet, vil blive tildelt der på grund af, hvordan specifikke heltal behandles i stedet for doubles (som kun er nøjagtige inden for syv ciffer af præcision). Dette tillader også affaldsindsamling under kørslen, hvilket kan medføre problemer, hvis du forsøger at forudsige, hvor meget hukommelse der vil være tilgængelig, da objekter skal fjernes kort tid efter, at de ikke længere er nødvendige.