Wie finde ich heraus, in welcher Programmiersprache eine Anwendung geschrieben ist?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du musst Reverse Engineering betreiben - bei Skriptsprachen wie Python, PHP, Ruby, etc. ist das sehr einfach - man braucht nur die Datei öffnen, die Skripte werden nicht kompiliert, sondern zur Laufzeit interpretiert (ausgeführt). 

Java, C, C++, Swift, Objective-C,... sind die Sprachen, die in den Maschinecode kompiliert und dann ausgeführt werden. Java macht etwas anderes, nämlich wird der Code in den Maschinencode, der im JVM (Java Virtual Machine) ausgeführt werden kann und weil JVM auf allen Plattformen gleich implementiert ist, ist binäre Javacode plattformunabhängig. 

Das in Java geschriebenes Programm sehr häufig mit .jar (das ist ein Container) und dort liegen die kompilierten Sources. Es gibt einige Decompiler Tools, mit dem Du zurück compilen kannst - ob es so gut funktioniert, kann ich nicht sagen, ich habe damit nicht beschäftigt. 

Die in C, C++, etc. geschriebene Programme kann man nicht so schnell erkennen - man braucht mehr Verständnis in die Maschinecode, um die typische Ausdrücke ableiten zu können. 

Für Windows Anwendungen wird meist C# oder C++ (Visual Studio) genommen. Für Android Java (Android Studio, JetBrain IntelliJ IDEA) - für iOS Objective-C oder Swift (Xcode). 

Und eine kleine Anmerkung noch:

 *.txt für Html ~> das stimmt nicht. *.txt steht für eine Textdatei, also ohne Struktur - einfach nur Text. HTML Dokumente enden meist  mit *.html oder (früher) *.htm.

Bestimmt weisst du das schon, aber trotzdem: HTML / HTML5 ist keine Programmiersprache - es ist nur ein Dokument so wie XML Dokument oder Word Dokument. Mit dem HTML kannst du die Dokument mit einem Struktur aufbauen. Die HTML Datei wird vom Webbrowser interpretiert und dargestellt. HTML kann JavaScript beinhaltet und das ist eine Skriptsprache, die von Webbrowser JavaScript Engine ausgeführt wird. 

Welche Editoren zu welchen Sprachen:

Es steht jedem frei, welches Editor man dafür nimmt. Man braucht einen Interpreter und eventuell einen Compiler dazu. Manche nehmen gerne einfaches schlankes Editor - ohne die ganze Komplexität eines IDEs mitschleppen zu müssen. Ein schlankes Editor nehme ich sehr gerne, um kleinere Skripte zu schreiben - es geht schnell. Programm öffnen, neue Datei und dann loslegen. Ich mache das gern mit vim oder halt Sublime Text bzw. Atom. 

Wenn es um grössere Projekte geht, dann nehme ich schon ein IDE. 

Für Java/Scala: IntelliJ IDEA (Ultimative)

Für Python: vim / Sublime Text (mit netten Plugins für Pythonentwicklung z.B. API, Syntaxvalidierung, etc...)

Für PHP: PHPStorm / Zend Studio

C/C++: Je nach Plattform (Visual Studio, Xcode oder halt vim / Editor) man muss dann selbst Compiler bzw. Linker konfigurieren und ausführen. 

Swift: Xcode

Und wenn man Grundverständnis vom Programmieren hat, dann fällt einem leichter, auf andere Sprachen zu wechseln. Man muss Grundlagen verstehen, z.b. was ist objektorientierte Programmierung, funktionale Programmierung (was die Idee dahinter ist), etc. diverse Entwurfmuster sollte man kennen - jede Platform hat eigenes API und dafür muss man Zeit nehmen, das ganze API näher kennenzulernen - mit einem Projekt lernt man es am besten und dadurch kriegt man die Expertise. Einfach so auswendig lernen, hilft kaum. 

Viel Glück!

Vielen Dank für die ausführliche Antwort, das werd ich mir erst mal auf der zunge zergehen lassen und einige Begrifflichkeiten näher anschauen ;)

0
@FabianHolmes

Vielen Dank ;) klar, interessiere ich mich für sowas und kann gar nicht genug Stoff aufsaugen.

0

Um das herauszufinden, musst du die Dateien auseinander nehmen.

Wenn du z.B. eine Android Datei anguckst. Das ist ja eine .apk

Das apk ist aber noch nicht die Programmiersprache, sondern nur die Aplikation, also die App. Die Programmiersprache dahinter kann alles mögliche sein, Java, C etc.

Um das herauszufinden muss man die .apk mit nem Programm, z.B. WinRar öffnen und einen genaueren Blick reinwerfen.

Die Dateien dort können dann ausschlaggeben sein, welche Programmiersprache genutzt wurde.

Bei anderen Geräten ist das ähnlich.

Allerdings ist bei Minecraft ja z.B. die Datein .jar und .java , da ist das relativ einfach rauszufinden womit das gemacht wurde ;)

Wenn der Quellcode vorliegt erkennt man das oft an den Endungen: .c .cpp .py .java .js usw.

Oder ein Blick in die Doku, da steht wie man es kompiliert - und da steht oft auch die Compiler-Aufrufe und Version drin.

Bei den IDEs bin ich bei Jetbrains und seiner Familie gelandet (ok, kostet Geld sind aber gut). Alternativ: eclipse (an ide for everything and nothing in particular).

Hey, ja Eclipse hatte ich mal kurz getestet wegen Java und für welche Programmiersprache benutzt man Jetbrains?

0
@Starjuice

Jetbrains:

IntelliJ - Java

PhpStorm - PHP

WebStorm - JavaScript

PyChram - Python

RubyMine - Ruby

AppCode - iOS Entwicklung

CLion - C und C++

DataGrip - SQL und Datenbanken

ReShaper - VisualStudio Extensions für .NET

ReShaper C++ - VisualStudio Extensions für C++

und noch einige andere Tools rund um Entwicklung und Source Verwaltung

1
@LeCux

Was sind die Vorteile von AppCode gegenüber xCode? Ich entwickle nur nebenbei für iOS, komme aber mit xCode ganz gut klar. Wie ist die Integration mit CocoaPods?

0
@heilwigkenner

Alles eine Frage des persönlichen Geschmacks. Man kann für Java ja Eclipse, Netbeans, VI oder IntellJ nehmen. Ich finde die Integration bei IntelliJ einfach am besten.

0
@heilwigkenner

Die richtige Schreibweise von Xcode ist "Xcode" und nicht "xCode". AppCode bringt die alten Gewohnheiten mit (aus JetBrain Produkte wie IntelliJ, so dass Autocompletion, Klassen Templates, etc. wie gewohnt funktionieren, damit man gleich produktiv Code schreiben kann) es hat natürlich auch Nachteile z.b. Core Data Editor fehlt oder nicht vollständig, sowie Storyboard Editor ... Ich würde auch auf Xcode setzen, denn Xcode bringt alles mit, was für iOS Entwicklung möglich ist. 

1