Nackdelar med Python:
– En stor nackdel med både Python och Java är att de är minnesintensiva. Även om både Java- och Python-språken har flera implementeringar är C++ fortfarande det mest populära valet för programmering av inbyggda system, vilket innebär att det blir svårare att hitta någon som kan programmera i Python eller Java än att hitta någon som vet hur man programmerar i C++.
– Medan en del kod skriven på båda språken kan köras på vilken plattform som helst på grund av deras användning av bytekod eller virtuella maskiner, finns det vissa skillnader mellan hur olika plattformar tolkar instruktionerna. Till exempel, även om Java har ett extra steg att kompilera innan du faktiskt kör en specifik kodrad, säkerställer denna process att ditt program körs strikt som det är tänkt oavsett vilket operativsystem du använder (eftersom varje enskild maskin använder sin egen instruktion uppsättning). Tyvärr är detta inte fallet med Python eftersom det finns olika versioner av språket som tolkar kod på olika sätt (det finns till exempel en version av Python för Windows och en annan för Linux), vilket innebär att koden som skrivs kan fungera olika beroende på på vilket OS den körs igenom.
– Because of how strict Java is about types, there are no issues with the language recognizing who and what something is (for example, you can quickly tell whether or not a variable contains an integer or floating-point number). While this makes storing data easier and much more accurate, it also goes through much more processing to accomplish this kind of feat. On the other hand, Python does allow for variables to hold an object of multiple different types within them, which may make it harder to go back and change something that needs to be updated since you would have no idea as to what’s stored in each piece of data unless the context was provided. Furthermore, even though all objects in Python are handled by reference so they can all use up memory without needing to be allocated, the lack of strict type enforcement will make for a much larger footprint on your computer’s working set memory (where data is stored in RAM).
– På grund av hur strikt Java är när det gäller typer finns det inga problem med att språket känner igen vem och vad något är (till exempel kan du snabbt avgöra om en variabel innehåller ett heltal eller flyttal). Även om detta gör lagring av data enklare och mycket mer exakt, går den också igenom mycket mer bearbetning för att åstadkomma denna typ av bedrift. Å andra sidan tillåter Python variabler att hålla ett objekt av flera olika typer inom dem, vilket kan göra det svårare att gå tillbaka och ändra något som behöver uppdateras eftersom du inte skulle ha någon aning om vad som lagras i varje del av data om inte sammanhanget angavs. Dessutom, även om alla objekt i Python hanteras genom referens så att de alla kan använda upp minne utan att behöva tilldelas, kommer avsaknaden av strikt typtillämpning att ge ett mycket större fotavtryck på din dators arbetsuppsättningsminne (där data lagras i BAGGE)
Nackdelar med Java:
– Java är långsammare än C++ på grund av dess användning av en virtuell Java-maskin. På grund av hur många instruktioner det finns för att skapa ett program tar det längre tid att köra det första gången än när man använder C++ (som är kompilerbart direkt till maskinkod).
– Ett annat problem med Java är att det inte har någon ”en sann IDE.” Även om det inte ser ut som en stor sak, kan det orsaka betydande problem om du arbetar i ett team och halva gruppen föredrar en typ av redaktör medan andra vill ha något annat. Till exempel, Eclipse, IntelliJ IDEA, Netbeans, etc., har alla sina fördelar men är inte kompatibla med varandra, vilket innebär att byte från en till en annan kommer att ta tid under mjukvaruutvecklingsprocessen. Detta är den kritiska anledningen till att spelutvecklare som använder Java tenderar att hålla sig till IntelliJ (även om det inte är öppen källkod som Eclipse, vilket gör det svårt att anpassa).
– Sist men absolut inte minst, att skriva allt i sin helhet kan bli väldigt tråkigt när man skriver kod på grund av hur omfattande Java är. På grund av detta kommer många som arbetar på ett projekt med andra att använda genvägar eller förkortningar (detta är vanligtvis inte ett problem om du bara arbetar ensam eftersom det inte kommer att behövas något annat). Till exempel, i Visual Studio kan jag skriva ”snart sem.” och tryck på fliken två gånger efter kolon för att stänga ett if..else-uttalande utan att jag tittar tillbaka på mitt arbete för att se till att det matchar originalet. Men om jag skulle göra detta i Java skulle jag behöva skriva ”if (x > 0) { soon(sem); } annat { sem = null; }”. Lyckligtvis finns det tillgängliga genvägar men de kan vara ganska svåra att memorera, så de flesta håller sig till traditionella kodningsmetoder.
– En annan nackdel som specifikt gäller spelutveckling beror på hur strikt Java är med typer. Eftersom allt måste vara ett objekt i Java måste extra bearbetning ske när man kontrollerar vad något är. Till exempel kan du snabbt avgöra om en variabel innehåller antingen ett heltal eller flyttal i C++ utan att behöva köra igenom hela koden för att ta reda på vad det är. Men i Java skulle detta behöva inträffa när man kontrollerar om något är en int eller flytande på grund av att vissa typer är mer exakta än andra. Detta innebär att data som kunde ha lagrats på stacken istället för högen kommer att allokeras dit istället på grund av hur specifika heltal behandlas istället för dubblar (som bara är korrekta inom sju siffrors precision). Detta möjliggör också sophämtning under körning, vilket kan orsaka problem om du försöker förutsäga hur mycket minne som kommer att vara tillgängligt eftersom objekt ska tas bort kort efter att de inte längre behövs.