BeamSearch in code generation
In the previous article devoted to full-line code completion, we looked into the vocabulary that the neural net of our full line completion plugin uses for Python. However, just having 16384 tokens like self., or, s.append(, return value, and others described in the article is not enough to generate even a single line. We need a way to combine these tokens together to write chunks of code. In today’s article, we will discuss how the algorithm constructs longer phrases using the elements of the vocabulary. The first idea that deserves mentioning is autoregression. Autoregression Autore
Looking at Python through the eyes of a neural net
The JetBrains full line code completion plugin for Python is now available as a public beta. We would like to talk about some of the technologies and algorithms used to create the plugin and share statistics about Python programming that we’ve collected in the process. What is “full line code completion?” You are probably already familiar with code completion, the kind that suggests the next word the user is typing. If you are not, we have covered it in a series of articles (one, two, three, four). Full line code completion extends the service by suggesting larger fragments of code.
Code Completion, Episode 4: Model Training
The previous articles from the series covered the following topics: In the first episode, we discussed general code completion scenarios.The second episode was devoted to the difficulties of heuristics-based implementation and explaining the necessity of machine learning.In the third episode, we described the data we collect from IDEs to train the completion ranking algorithm. We would like to talk about the difficulties specific to our task and share the ways to overcome them that we found. Due to the data protection requirements described in the third article, everything we collect
Code Completion, Episode 3: Where Is the Dataset?
As we discovered in the second installment of this series, a modern code completion system needs machine learning to rank the suggestions most effectively. Machine learning has one thing in common with human learning: it requires data to extract knowledge. There are many aspects to that process. We use so-called supervised learning for code completion, and that involves feeding the algorithm a set of example problems for which the correct action is known. The algorithm then finds common patterns and dependencies and learns to take the proper actions even in situations it hasn’t already seen
Code Completion, Episode 2: Why Machine Learning?
Why not order by what’s logical? I don’t understand.From a bug report In episode 1, we learned about the principal components of the code completion system and discussed its usage patterns and quality requirements. Today, let’s look into what reasons we have to employ machine learning aside from just following the hype. It’s a tough decision to make to replace “code that works” with a machine-generated binary that uses extra memory, may slow down the performance, and is difficult to interpret. Previously, we used a set of heuristics. They worked well unless they conflicted with each
Code Completion, Episode 1: Scenarios and Requirements
JetBrains 8th Annual Hackathon: Home Edition
It is that time of year again! 48 hours of limitless freedom to play, create, and test out ideas that may go nowhere – or that might just change the world. Following the spirit of Hackathons, this year, we adapted and evolved, and borne our first JetBrains Hackathon: Home Edition, something it turns out that not many of our community members have tried. Our Hackathons bring together people that may not have otherwise cooperated before. Working in 10 cities across 7 countries with time zones as much as 5 hours’ difference, 48 teams made up of 155 participants set out to bring their projects to life.
Software Development the JetBrains Way: Dogfooding and Other Key Principles
JetBrains has turned 20, and over the years, we've honed methods for development that match the style, values, and needs of our company. These processes work so well for us that we want to share them with others. Dogfooding, for example, has always played a central role in the development of our products, and with this video we want to share its role in our creative process with you. In the software development industry, dogfooding is the practice of testing your products within your company, using them as the end users would. Effectively, you have to eat your own dog food to ensure that yo
JetBrains 20th Birthday Round-up
On February 5th we celebrated JetBrains 20th birthday with our beloved community online and in the special section of JetBrains 2019 Annual Highlights. Thank you for the heartfelt and warm birthday greetings that we received. We appreciate the love and would like to share a few of the many birthday wishes that hit home! @RobEden on TwitterCongratulations on 20 years, JetBrains! Your tools have made me a better developer. I love how, even as the company has grown, it's always been clear that my feedback matters. #JB20Bday @CalvinNrnha on TwitterStarted using @androidstudio and a
JetBrains 7th Annual Hackathon: Arranged Differently
Arranging a new hackathon The arrangement With the expansion of JetBrains this year and the move into our new offices, we had to push back this year’s hackathon a little bit. But, if anything, this ignited the drive to develop new ideas in our team. So here is a rundown of what went down this year. The rules were simple: The Hackathon began Wednesday, September 18th, at noon sharp CEST and ran for 48 hours. The last commit was allowed no later than Friday, September 20th, noon CEST. Presentations needed to be provided to the Org.Committee by this time as well. 5-minute presenta
JetBrains 6th Annual Hackathon: Shiftius Altius Ctrlius
The Hackathlon “Don’t put a limit on anything. The more you dream, the further you get.” — Michael Phelps, winner of 23 Olympic gold medals Faster. Higher. Stronger. The stage was set for the event of the year; the coveted JetBrains hackathon. The rules were very simple: The Hackathon starts on Wednesday, June 27, at noon sharp CEST and runs for 48 hours. The last commit is allowed no later than Friday, June 29 noon CEST. Presentations must be provided to the Org.Committee by this time as well. 5-minute presentations will start 1 hour later, at 13:00 CEST on the same Friday.
JetBrains 5th Annual Hackathon: Logged in History 1st Prize to Ideolog
Looking back at Hackathon 5 “People who are crazy enough to think they can change the world are the ones who do.” - Steve Jobs. In two days that is exactly the attitude a determined few embraced. With JetBrains’ 5th Internal Hackathon innovation, hard work, and determination the start of some incredible projects have been dreamed up, explored and discovered with already promising results. 48 hours Two days, 52 submissions, and 40 successful projects. The atmosphere in JetBrains was charged by the 99 participants who gathered on Wednesday, May 31st, ready to make their ideas come to life.