De meeste gesprekken van ontwikkelaars die machine learning (ML) inzetten, gaan over het bouwen van AI-applicaties en de tools om die te maken: TensorFlow, PyTorch, Scikit-learn, enzovoorts. Maar er is een andere manier waarop ML software-ontwikkeling verandert, met nieuwe ontwikkelaarstools die het gebruiken om programmeren makkelijker en productiever te maken. Hier volgen vijf projecten (drie commercieel, twee experimenteel) die ML inzetten voor ontwikkelaars tijdens het softwareschrijfproces.
1. Kite
Kite is een auto-aanvultool, beschikbaar voor de meeste editors, die machine learning inzet om code aan te vullen terwijl je aan het tikken bent. Het model dat door Kite wordt gebruikt is publieke code die op GitHub staat. Kite destilleert uit al die code een abstracte syntaxisboom en gebruikt die als basis voor het model. Volgens de makers levert dit contextafhankelijke auto-suggestie en autoaanvullen op die dus kijkt naar de bedoeling van de code, niet alleen de tekst.
Momenteel werkt Kite alleen voor Python-ontwikkelaars, maar er wordt gewerkt aan de ondersteuning van Go. Hoewel dit oorspronkelijk alleen beschikbaar was voor gebruikers van Windows en macOS, ondersteunt het nu ook Linux.
Misschien ken je Kite nog van de ophef twee jaar geleden over de manier waarop het project gebruikersdata hanteerde en het aanpassen van het Atom autocomplete-python
package. Het bedrijf heeft beide klachten aangepakt en zegt dat Kite niet langer code van gebruikers terugstuurt naar de cloudservers en alle verwerking nu lokaal doet. Ook wordt nu expliciet vermeld dat autocomplete-python
een door Kite gesponsorde package is.
2. Codota
Dit lijkt aan de buitenkant op Kite: Codota gebruikt ook een machine learning-model, getraind op Java en Kotlin, om auto-aanvullen te verzorgen voor deze talen terwijl je typt. Ook dit project baseert zich op de syntaxisboom van de desbetreffende taal, niet uitsluitende op de regels code, als brondata om modellen te bouwen.
In tegenstelling tot het aangepaste Kite, gebruikt Codota een cloudgebaseerde dienst om voorspellingen te genereren en weer te geven. Maar volgens de documentatie stuurt Codota geen gebruikersgegevens naar de server, maar enkel 'minimale contextuele informatie van de bestanden die op dat moment worden verwerkt om voorspellingen te baseren op de huidige lokale scope'.
Codota is beschikbaar voor Windows, macOS en Linux, maar ondersteuning van editors is beperkt tot IntelliJ, Android Studio en Eclipse (Luna of later). Dat is logisch gezien de focus op Java en Kotlin. Het bedrijf merkt op dat er ondersteuning voor andere talen aankomt, met JavaScript voorop. Er is al bètaondersteuning voor WebStorm, de JetBrains JavaScript-IDE. De gratis versie gebruikt vrij beschikbare code, de Enterprise-versie (prijs op aanvraag) traint ook op eigen repo's van privécode.
3. DeepCode
DeepCode neemt geautomatiseerd code door om te zoeken naar potentiële beveiligingsissues. Net als Kite en Codota is DeepCode getraind op code in publieke repo's om veelvoorkomende problemen te herkennen. Het verschil is dat DeepCode deze patronen gebruikt om kwetsbaarheden te identificeren.
DeepCode richt zich op 'taint analysis' waarbij wordt gekeken wat er gebeurt met input van gebruikers voordat het een voor beveiliging kritiek punt bereikt. Data die van een gebruiker bijvoorbeeld naar een SQL-query gaat zonder dat er wordt geverifieerd of het veilig is om door te sturen wordt gezien als 'tainted' en levert een waarschuwing op.
De kritieke bugs die DeepCode zou opmerken bevatten veelvoorkomende beveiligingsissues in web-apps, zoals XSS, SQL-injectie, remote code execution en path-traversal aanvallen. De analyses zijn beschikbaar voor repository's op GitHub en Bitbucker en zijn gratis voor open source projecten of privéprojecten met maximaal 30 developers. DeepCode is verder beschikbaar voor scans van on-prem code (bijvoorbeeld met GitHub Enterprise) en de prijs daarvan is beschikbaar op aanvraag.
4. Microsoft PROSE
PROSE staat voor 'PROgram Synthesis using Examples'. Dit project van Microsoft is een SDK om code te genereren van voorbeelden van input en output. PROSE is daarmee een toolkit die kan worden gebruikt om voorspellende code-tools te maken, in plaats van een tool die zelf code voorspelt.
Potentiële toepassingen van PROSE zijn bijvoorbeeld het aanpassen van tekst aan de hand van voorbeelden (een eigen implementatie hiervan is "snel aanvullen" in Microsofts eigen Excel) het genereren van data uit tekstbestanden (neem log-analytics) en voorspellende bestandsbewerkingen (bijvoorbeeld het delen van tekst in kolommen naar voorbeeld).
5. pix2code
Dit idee klinkt als sciencefiction: vind een screenshot van een grafische interface en pix2code genereert code die deze GUI rendert. Het gebruikt daarvoor een deep learning-model, die getraind is op een dataset die wordt geleverd met de software, om GUI's te produceren in Android XML, iOS Storyboard en HTML/CSS-formaten. Dit is een experimenteel onderzoeksproject ("alleen gedeeld voor educatieve doeleinden") dus werk dat ermee wordt gedaan zou het project moeten gebruiken enkel als springplank voor latere ontwikkeling.
Reageer
Preview