Ein Überblick über KDevelop



Ähnliche Dokumente
Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Die Invaliden-Versicherung ändert sich

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Qt-Projekte mit Visual Studio 2005

Das Handbuch zu KAppTemplate. Anne-Marie Mahfouf Übersetzung: Burkhard Lück

Was meinen die Leute eigentlich mit: Grexit?

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Zeichen bei Zahlen entschlüsseln

Grundbegriffe der Informatik

Die Post hat eine Umfrage gemacht

Online Newsletter III

Anleitung über den Umgang mit Schildern

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Was ich als Bürgermeister für Lübbecke tun möchte

Wir machen neue Politik für Baden-Württemberg

SharePoint Demonstration

Objektorientierte Programmierung. Kapitel 12: Interfaces

4 Aufzählungen und Listen erstellen

Java Kurs für Anfänger Einheit 5 Methoden

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Gezielt über Folien hinweg springen

5.2 Neue Projekte erstellen

FULFILLMENT VON ALLYOUNEED

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

! " # $ " % & Nicki Wruck worldwidewruck

Primzahlen und RSA-Verschlüsselung

Version 0.3. Installation von MinGW und Eclipse CDT

Internet Explorer Version 6

Excel Funktionen durch eigene Funktionen erweitern.

Screening for Illustrator. Benutzerhandbuch

Informationen zur Verwendung von Visual Studio und cmake

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Professionelle Seminare im Bereich MS-Office

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

WordPress. Dokumentation

SEMINAR Modifikation für die Nutzung des Community Builders

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

IntelliRestore Seedload und Notfallwiederherstellung

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Wie funktioniert automatisierte Übersetzung? Prof. Josef van Genabith (Deutsches Forschungszentrum für Künstliche Intelligenz)

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Durchführung der Datenübernahme nach Reisekosten 2011

Der monatliche Tarif für ein Handy wurde als lineare Funktion der Form f(x) = k x + d modelliert (siehe Grafik).

Java Entwicklung für Embedded Devices Best & Worst Practices!

Kurzanleitung zu XML2DB

Workshop: Eigenes Image ohne VMware-Programme erstellen

Fotos in Tobii Communicator verwenden

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Also heißt es einmal mehr, immer eine eigene Meinungen bilden, nicht beeinflussen lassen, niemals von anderen irgend eine Meinung aufdrängen lassen.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Hex Datei mit Atmel Studio 6 erstellen

Leit-Bild. Elbe-Werkstätten GmbH und. PIER Service & Consulting GmbH. Mit Menschen erfolgreich

Sichern der persönlichen Daten auf einem Windows Computer

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

teischl.com Software Design & Services e.u. office@teischl.com

Multicheck Schülerumfrage 2013

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Installationsanleitungen

Projekt- Management. Landesverband der Mütterzentren NRW. oder warum Horst bei uns Helga heißt

Einführung in PHP. (mit Aufgaben)

Grundlagen von Python

Elexis-BlueEvidence-Connector

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Inkrementelles Backup

Liferay 6.2. Open Source IT-Dienstleister. Ein modernes Open Source Portal System. forwerts solutions GmbH, Gabriele Maas

SSI WHITE PAPER Design einer mobilen App in wenigen Stunden

Urlaubsregel in David

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

e LEARNING Kurz-Anleitung zum Erstellen eines Wikis 1. Wiki erstellen

bagfa ist die Abkürzung für unseren langen Namen: Bundes-Arbeits-Gemeinschaft der Freiwilligen-Agenturen.

SMART Newsletter Education Solutions April 2015

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Das Leitbild vom Verein WIR

BELIEBIG GROßE TAPETEN

Anwendungsbeispiele Buchhaltung

Tevalo Handbuch v 1.1 vom

SEP 114. Design by Contract

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Advolux Konsolen- und Unattended-Installation

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Software- und Druckerzuweisung Selbstlernmaterialien

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

MSDE 2000 mit Service Pack 3a

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Kompilieren und Linken

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Netzwerkeinstellungen unter Mac OS X

Transkript:

Inhalt KDevelop? Was ist das eigentlich?

Inhalt KDevelop? Was ist das eigentlich?

Was ist KDevelop 4.x? im Kern: C++-IDE basierend auf KDE- und Qt-Bibliotheken Komplettes Rewrite von Version 3 erstes 4.0-Release war 2008

Was ist KDevelop 4.x? (2) weitere Sprachen können über Plugins integriert werden derzeit: PHP Python ohne Release aber gut: ruby in den Anfängen: QML / JS, Java Editor: KTextEditor, bekannt aus kate, kwrite, kile etc.

Was heißt eigentlich KDE? KDE im Volksmund: Anwendungen (kate, amarok, konqueror,... ) Desktop (plasma-desktop, KWin,... ) eigentlich: Community; auch: Satz von Bibliotheken (kdelibs) basierend auf Qt plus viele Anwendungen (deshalb seit 4.4 auch KDE SC ) KDevelop hat technisch gesehen nichts mit dem KDE Desktop zu tun Abhängigkeiten sind nicht der Rede wert

Inhalt KDevelop? Was ist das eigentlich?

Philosophie von KDevelop keine (signifikanten) Projektdateien Projekt = Verzeichnis keine direkte Interaktion mit Compiler stattdessen: Unterstützung für seperate Build-Systeme wie CMake keine Bindung an IDE Fokus: hervorragende Code-Tools

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Inhalt KDevelop? Was ist das eigentlich?

... KDevelop? Was ist das eigentlich? KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente KDevelop und KDevPlatform KDevPlatform Framework für das Schreiben einer IDE Basis für Sprach- und andere Plugins KDevelop auf KDevPlatform basierende IDE Eigentliche Anwendung (sehr klein) + Sammlung von Plugins für KDevPlatform C++ Sprachunterstützung gdb-debugger-plugin CMake-Projektmanager

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Die Definition-Use-Chain (duchain) für IDE relevante Informationen über Code in jeder Programmiersprache sehr ähnlich entsprechend: Abstraktion möglich zwei wohl wichtigste Klassen: Definition und Use deshalb: DUChain -Framework in KDevPlatform für Informationen über Code, unabhängig von der Sprache

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Abbildung : Ein sehr einfaches Beispiel für eine Definition-Use-Chain

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Abbildung : Eine Verwendung ( Use ) eines Objekts (Variable, Funktion etc.) weiß, zu welchem Objekt ( Definition ) sie gehört

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Abbildung : Für Klassen funktioniert das genauso.

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Abbildung : Ein kompliziertes Beispiel. Gelb: So geht das Sprach-Plugin intern vor.

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Die Definition-Use-Chain (duchain) (2) wird beim Öffnen eines Projekts für alle Dokumente berechnet bei jeder Änderung eines Dokuments wird die DUChain für dieses Dokument neu berechnet KDevPlatform sorgt für persistentes Caching ($HOME/.cache/kdevduchain)

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Sprach-Plugins Hauptaufgabe: bekommt Text aus Editor, soll Definition-Use-Chain berechnen Übliches Vorgehen: Text Parser AST 1 Declaration / Context /... Builder DUChain Declaration / Context /... Builder: verbindet KDevPlatforms API mit sprach-spezifischem Visitor 1 AST steht für Abstract Syntax Tree

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Beispiel: Wie funktioniert das beim Python-Plugin? Erstes Statement: Zuweisung visitassignment(...) Berechne Typ der rechten Seite: int Erstelle eine Definition für my_var Setze Typ von my_var auf Instanz von int Zweites Statement: Zuweisung visitassignment(...) Berechne Typ der rechten Seite: Durchsuche aktuellen Kontext nach einer Definition für my_var Erstelle eine Definition für another_var Setze Typ von another_var auf Instanz von int Erstelle eine Use für my_var

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Editor-Komponente derselbe Editor wie in Kate, KWrite, Kile,... vi-eingabemodus! skriptbar, z. B. Snippets

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Beispiel für skriptbare Snippets

KDevelop und KDevPlatform Die Definition-Use-Chain (duchain) Sprach-Plugins Editor-Komponente Rekapitulation Verwendung derselben Grund-Datenstrukturen für jede Sprache Aufgabe der Sprach-Plugins: diese Datenstrukturen bevölkern Wer will, kann dank KDevPlatform / KDevelop-Trennung eine neue IDE mit anderer UI, aber demselben Backend schreiben.

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Inhalt KDevelop? Was ist das eigentlich?

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Hauptaufgabe: Möglichst gute Informationen über Code sammeln hat außerdem auch z. B. ein Debugger-Plugin relativ klein (Gesamt 13k SLOC vs. 170k SLOC bei PyDev (Eclipse), Debugger-Plugin 1200 SLOC vs 15k bei PyDev) dank Abstraktion

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Probleme mit Typen in Python (1) Python benutzt Duck Typing Eine Variable kann potentiell mehrere mögliche Typen haben Lösung: unsure types

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Abbildung : Ein einfaches Beispiel für unsure types

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Probleme mit Typen in Python (2) in manchen Situationen aber: keine Chance (z. B. exec() aka eval) auch schwierig: Listen mit dynamischer Länge und unterschiedlichen Typen

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Abbildung : Ein weiteres Beispiel für unsure types

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Probleme mit Bibliotheken Python C-Libraries nicht maschinenlesbar dokumentiert nur in wenigen Spezialfällen (PyQt, PyKDE) konsistent formatierte Informationen, z. B über Rückgabewerte von Funktionen Lösung: unklar, Versuch: Introspection + manuelle Korrekturen

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Code-Vervollständigung (1) neben QuickOpen das wohl wichtigste Feature überhaupt gute Typ-Informationen notwendig

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Code-Vervollständigung (2) benutzt eigenen kleinen Tokenizer und viele Fallunterscheidungen Zeile wird in Expressions zerlegt, die dann einzeln in den großen Analyzer geworfen werden

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Code-Vervollständigung (3) Abbildung : Die Vervollständigung funktioniert auch in komplexen Szenarien korrekt

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Beispiele für Code-Vervollständigung (1)

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Beispiele für Code-Vervollständigung (2)

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Beispiele für Code-Vervollständigung (3)

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Beispiele für Code-Vervollständigung (4)

Überblick Typen in Python C-Bibliotheken Code-Vervollständigung Beispiele für Code-Vervollständigung (5)

Andere Sprachen in KDevelop Fragen! Einige Worte zu KDE als Community Kontakt Inhalt KDevelop? Was ist das eigentlich?

Andere Sprachen in KDevelop Fragen! Einige Worte zu KDE als Community Kontakt Andere Sprachen in KDevelop? Ruby: wird aktiv entwickelt von Miquel, in sehr gutem Zustand kdev-qmljs (QML und JavaScript): nur Syntaxprüfung und ein paar diverse Features Java: total kaputt, aber seit kurzem arbeiten zwei Leute daran

Andere Sprachen in KDevelop Fragen! Einige Worte zu KDE als Community Kontakt Fragen? Danke für Eure Aufmerksamkeit!

Andere Sprachen in KDevelop Fragen! Einige Worte zu KDE als Community Kontakt Einige Worte zu KDE als Community aktive IRC-Channel und Mailinglisten für jedes Projekt einigermaßen einheitliche Technologien und Patterns: kennt man sich in einem Projekt aus, so findet man sich in anderen meist schnell zurecht jeder Entwickler hat Schreibzugriff auf alle KDE-Repositories gute git- Bugtracker- und ReviewBoard-Infrastruktur ist schon da nette Leute kümmern sich um Übersetzung jedes Projekts in dutzende Sprachen Sprints und Konferenzen

Andere Sprachen in KDevelop Fragen! Einige Worte zu KDE als Community Kontakt Kontakt irc.freenode.net #kdevelop KDevelop-Webseite: http://kdevelop.org kdev-python: http://projects.kde.org/kdev-python git: git clone git://anongit.kde.org/kdevelop (oder kdevplatform, kdev-python etc.)