📜 ⬆️ ⬇️

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

Today we want to continue the series of posts in which we ask the developers from Yandex and Habr's 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, there are occasional disputes about whether Perl is terrible or beautiful, whether it is necessary to know functional languages ​​or not, how motivated the choice is C ++, what programming language you should start learning from, 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 hate will be different. But it turned out that everything is even more interesting.
')


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

Gregory Bobuk Bakunov
Programs 25 years. In Yandex - 10 years.

Once came to work as a system administrator, and now - director of technology distribution.



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

I never managed to write something well on Erlang, because I get a little nauseous about it. I would not even say that it is a language. Erlang is such an environment that is created by one particular company, it develops within the framework of one particular company, in which there was such a kind of personality cult. Sometimes this is good, but sometimes it leads to the fact that everything is done as it is convenient for one specific person. There is a small group of people who are very similar to the creator of Erlang. For them, everything is convenient, effective, beautiful - 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 is 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 roughly similar feelings when I tried to work on Smalltalk, but the subtlety here was that it was a necessary necessity for me and that is why I overpowered myself a little. Apparently, Smalltalk took my form. Well, I do not believe that I took his form. And with Erlang did not grow together.


Danil stolen zagoskin
Programs 16 years. In Yandex - a year.

Developer in the cloud platform interface development team. Danil deals with our WebDAV server, which we talked about and which was written in Erlang.



My favorite language is Erlang, which is why I am writing here. When I thought about how I want to program, I thought and thought and invented something. And when I started to tell my friends about this, they said that I invented Erlang. So I just took it and began to write on it.

With Erlang, you can easily create very competitive applications when there are many independent threads running, even if they are communicating, but in general they have very little influence on each other. Erlang allows you to avoid thinking that someone will block someone, that due to a fat task, some small one will not be completed quickly. At the same time, Erlang allows you not to think about such things as sharing data, because they are different for each process. And when exchanging data between processes, they are copied (well, or 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 because you changed something in one place and did not take it into account in another.

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


Sergey svv Vavinov
Programs 27 years. In Yandex - 6 years.

Came to Yandex by Yandex.Video developer. He was mainly in the development of music, then in the service of media services. Made several projects for Yandex.Disk. Now - the head of the group of technologies for working with big data. One of the tasks Sergey is working on is Yandex’s projects for CERN.



I am afraid that my favorite programming language has not yet been created, but I can list the unloved ones. 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, 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 rather bad and miserable. People who are seriously engaged 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, it is quite suitable language for many large projects. It is very important to know some scripting languages ​​- Perl, Python. The first, rather, from unloved, in the second - from loved ones.

There are some number of languages ​​that have some perspectives and from which really worthy ones can grow. Now it is difficult to judge which of them will shoot, but they should be followed to understand what ideas they have. Of these languages, for example, Rust is a language that is now used for all Mozilla projects. It is quite modern and can potentially fill a niche that is now occupied by C ++ and partly Java. It has a lot of ideas from the functional world, a lot of ideas about safe programming. But for now this is exactly a research development, but Rust is one of those languages ​​that should be monitored.


Artyom Breqwas Kulikov
Programs 12 years. In Yandex - 8 years.

Yandex was called for the fact that I parsed data from Blog Search using Perl. They called not only to scold, but also to work. For many years, did a search on blogs, in particular, was the main developer of the Yandex.Pulse sub-service. Now he is developing an Advertising Network, one of the most critical services in terms of fault tolerance.



I write programs in the Perl programming language, and I like it. Once upon a time, I was interviewed in C ++ and recruited. At that time, although I was a student, I had already managed to work somewhere. And in Yandex, my then boss, whom everyone calls Druha, despite the fact that he has a first and last name, asked me: “Do you want to program in C ++?” I replied: “Not really.” In response, he said, "Then learn Perl." And I learned it. Since then I have been writing on it, and this is simply wonderful. He does not try to explain to me what to do, and I write as I want myself.

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


Andrey Mishchenko
Programs 24 years. In Yandex - 9 years.

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



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

In general, I started programming with Pascal, then there were C, C ++, some scripting languages. The language that I know best for work is Perl, but I won't say that it is my favorite. It lacks its shortcomings, so to speak.

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


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

Once was the leader of the Rambler-Mail . Now he is in charge of the personal services infrastructure group at Yandex. Lesha told on Habré how we taught Mail to exchange letters on IPv6 and support SSL encryption.



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

Once it was the first dynamic, first scripting language that allowed you to very quickly implement your ideas and thoughts. After him, many followers appeared, but, I think, 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 a lot of these ways, and this allows you to choose from them sometimes the fastest, sometimes the most elegant, sometimes the shortest, and 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 directly cause negative emotions in me. Is that some very, very verbose languages ​​like sloppy student Java.


Anatoly Anatolix Orlov
Programs 25 years. In Yandex - 9 years.

The first two years he wrote Market. For a long time I was engaged in the search - mainly its performance, and then the rest. 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 programming language is C ++ too. Which is quite strange. I love him for being 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 high performance, but for the Indians, for whom they need to clean their memory, because they themselves do not know how. And I want a language so that, roughly speaking, if there is garbage collection, then optional. In some modern languages ​​it can be turned off, but if your entire standard library is written in a 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 turn it on.


Andrew yafinder Plakhov
Programs 24 years. In Yandex - 6 years.

Came to Yandex as a senior developer. His first task was to create a new type of ranking factors - domain. He is currently in charge of the search functionality service - in particular, he is developing search tips.



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

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


Alexey Zakharov
Programs 24 years. In Yandex - 6 years.
Head of Java-development in the department of cloud services.



In a fairy tale, I have to say that my favorite programming language is Java, but I love with the same power, but for different reasons, I love Java and Python. Java is a good language. I got to know him almost at the time of his birth somewhere in 1996, I began to write on it at the institute, then in all sorts of different works, then I continued in 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. There are a lot of different frameworks written for him, good IDEs, tools that will do a lot for you: they will highlight the syntax and check it. A lot of good things have been done during the life of the platform. And Python is such a more lightweight, more frivolous language. But on it you can do such elegant things, beautiful and short programs that caress the eye when you look at them.

In Python, there is no static typing, so the program that takes 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, a matter of taste. Some people like Python, some like only Perl, some like only 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, traditionally they don’t really like Perl, because it’s scary. C ++ is a little bit frightened because it can make very serious big and scary programs that no one will understand later, in which you can search 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, operator overloading into pluses and minus ones. You can make such a program, which is generally incomprehensible about what will happen. But, of course, if people who love C ++ read it, they will probably start generating some kind of anger in my direction. So I won't say anything more.


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

You could see Misha ’s lecture on how mathematics helps Yandex earn money. A very large part of his work is work in our academic programs. He teaches at the School of Data Analysis, participates in creating a curriculum at the Faculty of Computer Science at HSE and Yandex. Twice he won medals at ACM ICPC in the team of Moscow State University. Mv Lomonosov.



There is a programming language in which I write all sorts of Olympiads - this is C ++. Historically, it just so happened that there is a lot of experience and it is 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 treat language as an instrument on which 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 take it as a necessary evil.


Anton pg83 Samokhvalov
Programs 18 years. In Yandex - 9 years.

Came to Market by a C ++ programmer. Worked on a variety of service tasks. A few years later I moved to search, where I took up the reliability and performance of the runtime search. Now he is working on an assembly system that will allow us to collect 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 that 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 the choice. That is, each programmer has a box with the languages ​​that he uses. I want my box to be small, and at the current time I have chosen C ++ and Python for myself. Actually these languages ​​and use. But they are not loved, but just a tool.

Starting from a certain time, a good programmer can get up to speed in a week or two and start writing in any language - that is absolutely not a question.


Andrew styskin Styskin
Programs 18 years. In Yandex - 9 years.

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



Favorite programming language is Java. But I didn’t do it for so long, because it’s customary to do everything in C ++, when it’s something serious, and in Python, when people have very little time and quickly want to show results. This is about people like me.

Java is simple enough to quickly create prototypes of any complexity, 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, does not possess this property at all. And, if you do not agree in advance that we are doing this here, and here it is, it is almost impossible to read someone else's C ++ code.

I probably have no unloved languages. Everyone is good at something. But of those with whom you encounter in Yandex, but not seriously, but as a toy, I can remember some Haskell that fascinates with its mathematical concepts and is absolutely not applicable in real work.


Stepan Koltsov
Programs 10 years. In Yandex - 7 years.

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



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

Relatively speaking, there are only two types of programs. The first must work very, very quickly and squeeze the last bytes from memory and the last clock cycles from the processor. But the programs of the second type are not very demanding of the hardware, and the main requirement for them is that they need to be written quickly, and it is cheap to maintain them. Now the world is designed so that the first, very demanding on hardware, programs are written in C ++, and the second - in Java. As I said, I write at the last and I like to write more when, relatively speaking, you can write a lot of code that does not require fast work.

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

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


While I was preparing this post, I thought that if the material about programming languages ​​was published in some mass edition, there probably would have been a psychological test like “Which programming language suits you”. What do you think depends on what the choice of what language you write? And what are your favorite and unloved programming languages?

Source: https://habr.com/ru/post/230775/


All Articles