What programming language is most liked in Yandex? And is love always mutual

    Today we want to continue a series of posts in which we ask developers from Yandex and Habr users the most pressing questions for any programmer. Today it is a question of which programming language is your favorite.

    In any company where there are developers, disputes arise periodically about whether Perl is terrible or beautiful, is it necessary to know functional languages ​​or not, how motivated is the choice of C ++, which programming language you need to start learning, etc.

    And if there are several thousand employees in this company, the scale of the disaster becomes truly grandiose. When I came to those of my colleagues whom you will see in this post, I thought that their reasons for love and hatred would differ. But it turned out that it was still more interesting.



    Many of those with whom I spoke are familiar to you from the posts on the Yandex blog on Habré: anatolix , kappa , bobuk , yafinder , styskin . Despite the fact that many participants in our survey became leaders, they continue to write code. Under the cut, you can read detailed answers that are not completely included in the video, and tell what you think on the topic.

    Grigory bobuk Bakunov
    Programs for 25 years. Yandex is 10 years old.

    Once I came to work as a system administrator, and now I am the Director for Technology Distribution.



    The question, as always, is obvious. I probably have many favorite programming languages. Most of all I write recently in Python - simply because it is a language that allows me to express what I think about as quickly as possible. But, of course, it is not the only one, and sometimes you have to write a lot of JavaScript. This is not the most pleasant entertainment in my life. Probably the most code and with the greatest pleasure I wrote in Lisp. 

    I never managed to write something well on Erlang, because it makes me a little nauseous. I would not even say that it is a language. Erlang is an environment that is created by one specific company, develops within the framework of one specific company, in which there was such a peculiar cult of personality. Sometimes it’s good, but sometimes it leads to the fact that everything is done in the way that is convenient for one specific person. There is a small group of people who are very similar to the creator of Erlang. Everything is convenient, effective, beautiful for them - and I even know two such people. But in real life for me it is something uncomfortable. It's like sitting in a triangular chair and trying to somehow fit. You sit down and realize that it's not mine at all. And here it hurts, and here it hurts, no matter how you lean back. And it’s impossible to sleep. Here I have a feeling from Erlang. There were approximately similar feelings when I tried to deal with Smalltalk, but the subtlety is that he was a necessary necessity for me and therefore I overpowered myself a little. Apparently, Smalltalk took my form. Well, I do not believe that I took his form. But Erlang did not grow together. 


    Danil stolen Zagoskin
    Programs 16 years. Yandex is the year.

    Developer in the cloud platform interface development team. Danil is engaged in our WebDAV server about which we spoke and which was written on Erlang.



    My favorite language is Erlang, so I write it here. When I thought about how I want to program, I thought, thought and thought up something. And when I started telling my friends about this, they said that I came up with Erlang. So I just took it and began to write on it. 

    With Erlang, you can easily create very competitive applications when many independent threads work, even if they communicate, but in general they are very weakly affecting each other. Erlang allows you not to think when developing that someone will block someone, that due to a fatty task, some small task will not be completed quickly. At the same time, Erlang allows you not to think about such things as data sharing, because each process has its own. And when exchanging data between processes, they are copied (well, or they pretend to be copied). There are no variable variables. This is not always convenient, but it allows you to avoid so many mistakes that arise due to the fact that you changed something in one place and did not take this into account in another.

    I have no favorite languages. There are languages ​​convenient and inconvenient. I think that there are those that are uncomfortable for me, but I cannot call them unloved.


    Sergey svv Vavinov
    Programming 27 years. Yandex is 6 years old.

    I came to Yandex as a developer in Yandex.Video. He was the main one in the development of Music, then - in the service of media services. Made several projects for Yandex.Disk. Now - head of the big data technology group. One of the tasks Sergey is working on is Yandex projects for CERN.



    I'm afraid that my favorite programming language has not yet been created, but I can list the unlovers. I do not like C ++. It is one of those languages ​​that you probably need to know and in which you need to be able to write. That is, how to make money, to fight - you can love, you can not love, but you need to be able to. For many projects, it is useful to know Java. From the point of view of the language itself, it is quite bad and wretched. People who are seriously involved in programming will immediately feel its limitations. But Java is not only a language, but also a platform: a JVM virtual machine, a standard library, a large number of open source libraries. If you understand the advantages and limitations of the platform, this is quite a suitable language for many large projects. It is very important to know some scripting languages ​​- Perl, Python. The first, more likely, from unloved, in the second - from beloved. 

    There are a number of languages ​​that have some prospects and from which really worthy can grow. Now it’s difficult to judge which of them will shoot, but it’s worth watching them to understand what ideas are in them. Of these languages, for example, Rust is the language that is now used for all Mozillian developments. It is quite modern and can potentially fill the niche that C ++ and partially Java currently occupies. It has many ideas from the functional world, many ideas about safe programming. But while this is a research development, Rust is one of those languages ​​that you should follow. 


    Artyom breqwas Kulikov
    Programs 12 years. Yandex is 8 years old.

    Yandex called for parsing data from Blog Search using Pearl. They called not only to scold, but also to work. He did Blog Search for many years, in particular, he was the main developer of the Yandex.Puls service. Now it is developing an advertising network, one of the most critical in terms of fault tolerance services.



    I write programs in the Perl programming language, and I like it. Once upon a time I was interviewed in C ++ and hired. Although I was a student then, I already managed to work somewhere. And here in Yandex, my then boss, whom everyone calls Dryukha, despite the fact that he has a name and surname, asked me: “Do you want to program in C ++?” I replied: "No-no." In response, he said: "Then learn Perl." And I learned it. Since then I have been writing on it, and it’s just fine. He is not trying to explain to me what needs to be done, and I am writing as I want. 

    An unloved programming language is one that causes pain and unhappiness. Usually people don’t write in such languages. What for? There are languages ​​that cause me pain, while the rest do not. For example, we have people (and some of them even sit with me in the same room) who like to write large programs in Shell. This is terrible. Why they do this, I don’t know, but they write them. And I have to read them. It is unpleasant. 


    Andrey Mishchenko has been
    programming for 24 years. Yandex is 9 years old.

    I came to Yandex as a C ++ developer, for a long time I was the head of development of Blog Search. He is currently working on improving search engine learning algorithms.



    My favorite programming language is not for work, but for the soul, it is, of course, Haskell. At least when I found out about him, he made the biggest impression on me. Everything that was before that has faded. I could not imagine that there could be programming languages ​​so harmoniously mathematically. What wonderful type systems are there, what wonderful lazy calculations are there, how one can formulate thoughts conveniently and compactly. But I perfectly understand that for work it is more or less not applicable. It is convenient to write articles on it when you want to talk about some kind of algorithm so that everyone understands it very well, and your story is very short. In such cases, the code is best written in Haskell. Those who need it will understand.

    In general, I started programming with Pascal, then there were C, C ++, a few scripting languages. The language that I know best for work is Perl, but I won’t say that it is my favorite one. It has enough of its shortcomings, so to speak.

    If we talk about unloved languages, then I can probably recall XSL. It is very bulky. That is, there were absolutely wonderful ideas in it, but the way they were embodied scares me. 


    Alexey kappa Kapranov
    Programs 21 years. In Yandex - 3 years.

    Once was the head of Rambler Post . He currently leads the personal services infrastructure group at Yandex. Lyosha told on Habr how we taught Mail to exchange letters on IPv6 and to support SSL encryption.



    My favorite programming language is traditionally old Perl. I began to deal with them in the first years of the institute. Contrary to the requirements of our teachers, I did everything in it laboratory and a diploma. Now I’m not so often involved in direct programming, but still Perl is a tool that I use more often than any other. 

    Once it was the first dynamic, first scripting language that allowed you to very, very quickly translate your ideas and thoughts into reality. After him many followers appeared, but it seems to me that he remained the most boring of all scripting languages. One of its important principles is that any action can be performed in several ways. Often there are really many of these methods, and this allows you to choose from them, sometimes the fastest, sometimes the most elegant, sometimes the shortest, sometimes, perhaps the most understandable to another person who is not familiar with the language. Perl allows you to write the same program in millions of different ways. This is very cool. 

    And I don’t remember a language that would evoke direct negative emotions in me. Unless some very, very verbose languages ​​such as sloppy student Java. 


    Anatoly anatolix Orlov
    Programs 25 years. Yandex is 9 years old.

    The first two years Market wrote. For a long time I was engaged in search - mainly its performance, and then to everyone else. Now he is engaged in various projects in the field of speed, architecture, etc. Deputy Head of Search Services. Included in 2% of people who complete courses on Coursera.



    My favorite programming language is C ++. And my favorite language is C ++ too. Which is strange enough. I love him because he is powerful and you don’t pay for opportunities that you don’t use. But modern programming languages ​​make writing the same things much easier.

    Unfortunately, no more favorite programming language will appear. Now all new languages ​​are conditionally not for those programmers who need to write some kind of high performance, but for Indians who need to clean their memory, because they themselves do not know how. And I want a language, so, roughly speaking, if there was garbage collection, then optional. In some modern languages, you can turn it off, but if your entire standard library is written in concept, when you have a garbage collector, then the moment you turn it off, everything will break. In fact, you need a language without a garbage collector where you can include it. 


    Andrey yafinder Plakhov
    Programs for 24 years. Yandex is 6 years old.

    He came to Yandex as a senior developer. His first task was to create a new type of ranking factors - domain. Now he manages the search functionality service - in particular, he develops search hints.



    C ++. This is such a Swiss knife. This is a bad hammer, a bad knife, a bad spoon, a bad fork, a bad corkscrew and so on. But when you are somewhere in the field, and you don’t have a corkscrew, but there is a Swiss knife, this is wonderful. 

    My least favorite Haskell programming language. It is wonderful, on it you can do exciting things related to the theory of programming languages. And this is somehow surprisingly perpendicular to the production of some meaningful work. 


    Alexey Zakharov
    Programs for 24 years. Yandex is 6 years old.
    Head of Java Development at the Cloud Services Development Department.



    According to the tale, I have to say that my favorite programming language is Java, but I love it with equal force, but for various reasons, I love Java and Python. Java is a good language. I met him almost at the time of its inception somewhere in 1996, I began to write on it at the institute, then on all sorts of different works, then continued on Yandex. 

    Java is, in fact, a serious language in which you can write quite serious code. It will work well, will be statically checked, there will be few errors in it. A lot of all kinds of frameworks, good IDEs, tools have been written for it, which will do a lot for you: they will highlight the syntax and test it. A lot of good things have been done during the existence of the platform. And Python is such a more lightweight, more frivolous language. But on it you can do such elegant little things, beautiful and short programs that caress your eyes when you look at them. 

    There is no static typing in Python, so a program that takes up two screens in Java can fit in 10 lines and enjoy it. But at the same time, it does not have such a terrible syntax as Perl and some other languages. But this, of course, is a matter of taste. Some people like Python, some just Perl, some just Java. There are many Java developers who love such frivolous things like Python and JavaScript. And I love both. 

    In the part of Yandex where I work, they traditionally do not really like Perl, because it is scary. A little bit afraid of C ++, because it can make very serious big and scary programs that no one will understand later, in which you can look for an error for a very long time, because in C ++ you can do a lot of things that are forbidden, say, in Java. This is the notorious multiple inheritance, overloading operators into pluses and minuses. You can make a program that is generally unclear what will happen. But, of course, if people who love C ++ read it, then they will probably start to generate some kind of anger in my direction. So I won’t say anything else. 


    Michael mlevin Levin
    Programs 18 years. In Yandex - 5 years.

    You could see Misha 's lecture on how mathematics helps Yandex to earn. A very large part of his activity is working in our academic programs. He teaches at the School of Data Analysis, participates in the creation of a training program at the Faculty of Computer Science of HSE and Yandex. Twice won medals at the ACM ICPC as part of the team of Moscow State University. M.V. Lomonosov.



    There is a programming language in which I write all sorts of competitions, it is C ++. It just happened historically that it’s a lot of experience and it’s more convenient to write something quickly so that it works. At work, I gradually program less and less. In fact, I have no preferences. I rather relate to language as an instrument in which I need to express my thoughts and solve problems, so I prefer not to participate in all kinds of holivars. Everyone loves to complain about C ++ and other languages. I perceive this as a necessary evil.


    Anton pg83 Samokhvalov
    Programs for 18 years. Yandex is 9 years old.

    I came to the Market as a C ++ programmer. Worked on a variety of service tasks. A few years later I moved to search, where I was engaged in the reliability and performance of runtime search. Now he is engaged in a build system that will allow us to assemble our entire code base in a few minutes on a large distributed cluster.



    I don’t have a favorite programming language, because a programming language is a tool, what you are currently using. There are languages ​​in which I like to write more and in which I like to write less, but no favorite ones. I am quite conservative in my choice. That is, each programmer has a box with the languages ​​that he uses. I want my box to be small, and for the moment I have chosen C ++ and Python for myself. Actually, I use these languages. But they are not loved, but just a tool. 

    Starting from some time, a good programmer can get in the course of a week or two and start writing in any language - this is absolutely not a question.


    Andrey styskin Styskin
    Programs 18 years. Yandex is 9 years old.

    He came to Yandex as a Java developer in the Market search group. He was engaged in the classification of commodity texts and the extraction of facts from commodity descriptions. Thus began his passion for search and machine learning. Outside of work, Andrei made various IR toys: a verse generator on language models, a robot for pumping social networks. Now Andrey is in charge of the ranking department, which employs a team of almost 200 people.



    Favorite programming language is Java. But I haven’t dealt with it for so long, because in the search it’s customary to do everything in C ++ when this is something serious, and in Python, when people have very little time and quickly want to show the result. It's about people like me.

    Java is simple enough to make prototypes of any complexity quickly, because it is fairly unified. All people who can write on it will be able to perceive someone else's code, quickly disassemble and reuse components. C ++, for example, absolutely does not possess this property. And, if you don’t agree in advance that here we do it, and here we do it, it’s almost impossible to read someone else’s C ++ code.

    I probably don’t have any favorite languages. Everyone is good at something. But of the ones that Yandex has to deal with, but not seriously, but in a toy way, I can recall some Haskell who fascinates with his mathematical concepts and is absolutely not applicable in real work. 


    Stepan Koltsov
    Programs 10 years. Yandex is 7 years old.

    Senior developer in the development of storage and data processing systems. Styopa from those Yandex employees who left but then returned. Now working on monitoring systems in the search.



    I believe that there are languages ​​in which programs should be written, and there are those in which programs will be written in 10 years. Today, programs should be written primarily in Java, so now I write in it, and it seems to be good. 

    Relatively speaking, there are only two types of programs. The former should work very, very fast and squeeze the last bytes from memory and the last clock cycles from the processor. And the programs of the second type are not very demanding on the hardware, and the main requirement for them themselves is that they need to be written quickly, and support is cheap. Now the world is arranged so that the first, very demanding hardware, programs are written in C ++, and the second - in Java. As I said, I write on the latter and prefer writing when, relatively speaking, you can write a lot of code that does not require fast work.

    But in the future everyone will write in Rust. Rust is my favorite topic. I tell everyone about Rust. The problem with C ++ is that although programs are fast, it is very difficult to write them on it so that they do not crash. Language gives very few security guarantees. Java gives a lot of guarantees, but it does not allow you to write programs so that they work quickly. Rust, on the one hand, allows you to write safe programs, on the other - very fast. Therefore, my favorite programming language is Rust. But he has not yet reached such a state that it can be used, and will be so in five years.

    I do not like all dynamic typed programming languages ​​- Python, Perl, JavaScript. I have a very bad memory, and programs on them require that a person memorize a lot of things. You need to keep in mind some kind of information about types that is not in the code. In fact, relatively speaking, it’s really hard for them because I have a bad memory. People who have a good memory are just hard. 


    While I was preparing this post, I thought that if the material about programming languages ​​was published in a mass publication, there would probably be a psychological test like "Which programming language suits you." And what do you think, what determines the choice of which language you will write on? And what are your favorite and least favorite programming languages?

    Also popular now: