Monarcle's blog

By Monarcle, history, 2 years ago, In English

Think about this. In the near future, let's say 10-15 years, technology will improve drastically, and artificial intelligence (AI) will probably be a very important thing in daily life and work. What would be its effect on Competitive Programming? This topic is not new, Every 1-2 years there's someone talking about it on numerous platforms. And probably all received the same answer: It's dubious, only time will tell us, which is true. But in some way, we can just imagine and make probable guesses about what may happen to CP in the future. This blog will mostly summarize my guesses and questions about the near future of CP, and we can discuss it somewhat to hope for an even better community in the future.

I. Competitive Programming Problems

One thing we can agree with is in the near future, with a huge potential in the CP community and the existence of AI, the quality of the problems may be better. The knowledge standard will increase over time, to match the improvement of the world. Another prediction in the near future is a huge improvement in computer speed and coding languages as well, so we have more time and resources to explore new exciting algorithms of programming. But there are some unanswered questions.

Take an example. Let's assume that in the future the computer speed increases dramatically, and the judging system in problems improves as well. Let's say, around $$$10^{12}$$$ calculations per second. Then what will happen to old problems? There are thousands of problems that could be solved in $$$O(n)$$$ and $$$O(n$$$ $$$log$$$ $$$n)$$$ in Codeforces alone, and if the judging system improves, problems could be solved in $$$O(n^2)$$$, that might be a bad choice. Numerous problems will be outdated and won't be as beautiful as they should be, and well, the problem ratings will mess up. There are a lot of examples of this already (a lot of very old problems which have a high rating could be solved by a way lower coder with ease), and there will be a lot more. There are solutions to this, but I will leave it here for now.

II. Competitive Programming and Real-Life Programming

Another thing is, that a lot of CP bits of knowledge are not really useful in general programming. We have to admit that Competitive Programming (CP) and Real-Life Programming (RP) are basically 2 different things, as RP requires a lot of design skills, knowledge of many coding languages, and a lot more, while CP is mostly math and DSA (Data Structures and Algorithms) required. We don't need CP to do RP, and RP is a lot more useful in life, so CP is not as important and popular in general.

According to this, there probably are 2 main ways that CP can go in the future:

1. CP may be more and more related to RP. This means, that in the future alongside the DSA and math problems, there might be some RP problems (such as designing simple bots that do random things). It's quite unlikely, but if it happens, CP would be a great thing to explore RP and will be a great resource to build a career in the future. There surely are drawbacks, such as designing things will probably reduce the uniqueness and excitement that CP brings over the years, which means this will be a hard thing to get with. But with a lot of problems having a little bit of something called "design", I think it's possible.

2. CP separates from RP, which is a lot more likely to happen. As I said before, CP is not really needed to go to RP so it doesn't get as much recognition as it deserves. Watching CP competitions is as many people say, boring, as competitors just sit in front of a computer and do a lot of coding stuff that normal people can't understand. Therefore, to get CP to the people, we have to make it unique in its own way, while making it more exciting and can attract the audiences. If we don't, CP may never enough to be a big thing in the future, and just become a small community that wants to relax after work or people who want to get hired. Which is still a thing to be happy with, but to become a dominant thing in the future, a change is needed.

III. Can Competitive Programming be an eSport?

One change that is very considerable to think about is to change it into an actual eSport, which has actual battles, competitions, and huge prizes. Right now there is a lot, but it's more like a study competition, not a sports one, which can reach the audiences. To make it familiar to normal people, we need to change it into a way more exciting format which can make you addicted to it. This has been discussed before, and a lot of people have said it's not possible due to the uniqueness of Competitive Programming, budgets, and much more.

But there might be a way. An unrelated example is, that health bars are pretty easy to think about and code, but combine with some unique ideas and materials, we will have different games that are very popular right now. CP if combined with some simple stuff in some way that is familiar enough, we may hit a jackpot. Of course, talking is harder than doing, but if there are enough support and people/companies who are interested in this idea (CodinGame for example), it's not impossible at all.

IV. Competitive Programming and AI

There are blogs about AlphaCode long before and the fact that it actually can solve problems man-made is really stunning. Of course, the hope of AlphaCode participating in the next contest is gone, reduced to atoms but in about a few months, it may become a reality. In the near future though, AI will become a big thing in CP. It will help us a lot in thinking about new problem ideas, hosting contests, or even solving problems that we have never solved before, finding new algorithms that we never found before. Another idea is to make an AI similar to Stockfish in chess, which can analyze our performances and chance to win a contest somehow, which will be a fun idea speaking of competitions. A really hopeful future.

Final thoughts

Competitive Programming has a really bright future ahead of it. There will be obstacles or challenges we will need to go through, but I know our community is very strong, therefore everything is await us.

Those are my overview predictions about what may happen to the future of Competitive Programming, and it is one of the most interesting categories I have ever thought of. What about yours? What do you think can happen in the future? If I missed something or you have your own ideas, feel free to write a comment below.

I may have some mistakes in English, if it happens, I'm sorry.

Much thanks to phattd for valuable feedback and encouragement to post this blog.

Stay well :)

  • Vote: I like it
  • +107
  • Vote: I do not like it

| Write comment?
»
2 years ago, # |
  Vote: I like it +15 Vote: I do not like it

I think CP has the potential to become as popular as chess, the only issue is CP takes more time to get into.

  • »
    »
    8 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    maybe at lower levels. But at mid levels, CP is easier to advance through than chess in my opinion. It took roughly the same amount of effort to reach USACO Silver (~1300) as Chess 600.

»
2 years ago, # |
  Vote: I like it +26 Vote: I do not like it

SecondThread compared AlphaCode to a "well-organized rock" in his youtube video. Based on the albeit minimal amount I've read and watched about AlphaCode, it definitely seems like it has more buzz than potential. What they've already done is amazing, but the algorithm they've constructed doesn't seem very generalizable to harder problems. I would be very impressed if AlphaCode managed to consistently solve >1400 problems, at which point it would only be a little better than the average Codeforcer.

»
2 years ago, # |
  Vote: I like it +17 Vote: I do not like it

great, but what about cheating art?

»
2 years ago, # |
  Vote: I like it +63 Vote: I do not like it

Thoughts on points II and III:

II: Competitive Programming and Real-Life Programming

We should define what the scope of "competitive programming" is. The RP stuff you talk about like bot games already exist (CodinGame, MIT Battlecode), but the average Codeforces user probably wouldn't consider those "CP" if you asked them. Or what about ML competitions like Kaggle? How about Atcoder heuristic contests?

When I think of CP, I think of math olympiad with computers. Almost every computational MO problem can be turned into a CP problem. Of course, CP also has the element of algorithms and time complexity to it, so it's not just MO computation. But the "programming" part is really just a mechanism to submit your answer to the online judge, which serves as a certificate for evaluating the correctness and efficiency of our algorithm. I believe 90% of modern CP problems we run into today on Codeforces, Atcoder, or CodeChef abide by this model.

Under that lens, RP stuff departs from the spirit of CP. So I guess what I'm saying is, CP is already at your second scenario, "CP separates from RP." Perhaps it even ought to be renamed, because it has very little association to the suffix "programming" these days.

Algorithms in MO
Irrelevant Nitpick

III: Can Competitive Programming be an eSport?

If we're talking about bot games, sure. You get the colorful UI and the little animated bots moving around, and you have something watchable. Raw algorithm competitions like Codeforces? No, and probably never. The prerequisite knowledge required is high and frankly, there isn't much to watch if you're not thinking about the problem as well. Can you imagine big Twitch streamers doing CP like chess?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Can you imagine big Twitch streamers doing CP like chess?

    yes i can

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it +258 Vote: I do not like it

      No seriously. Like the chat's gonna spam poggies while mans is typing out a segtree?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Seriously, for me it is only fun when participating in contest, solo-queue-ing is not interesting at all.

  • »
    »
    8 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    "Almost every computational MO problem", notice that you are talking about solvable problems, P seems to be equal to NP (if we take classical set of NP problems etc, yes, that looks counterintuitive Godel's/Kantor's enumeration and big coefficient of degree of that program but anyways), but when it comes to talk about problems that are not solved yet, for example: P(x) = 0, deg P(x) > 4, is it P or NP or approximate(?!), MO or scientific problem, the solutions may be exists almost everywhere but humans can't find that, that is trouble of closure under P, NP seems to be an open class of problem..

    Yes, chess kicked out by debut theory till 20-30th move and grandmaster's draws, CP kicked out by pre-written codes from software engineering practices, AlphaGo gave second breath to show how far people from understanding chess/go, but that was too short period..

»
2 years ago, # |
  Vote: I like it +1 Vote: I do not like it

There are a lot of competitions that resemble RP more, you can find a lot of disciplines at TopCoder. Algorithmic competitions might add a bit of concurrent/distributed programming but I don't thing this branch should turn off or change significantly given that marathones/UI contests/Hackatons etc. exist. As far as CP becoming eSport is concerned, as you and the others mentioned, making bots probably has the most potential. There is a problem with that though, should it be one game each event or always one of the few games. In the case of former, quality could vary significantly from year to year and it might be too little time to make great strategies, but if the game is fixed, then there would be too much people involved in making bots. People love to see starts even in team sports not a bot designed by 1000 people. I suppose varying games would be great, and there is potential for more disciplines in the same event. Teams/competitors could play the first round themselves, than have one "sprint" round with only 3-5 hours for making AI and in the end 24-48 ours to make AI.That is just an example, but I believe that could be very interesting, but I have a degree of scepticism since as of now this kind of contests is arguably less popular than algorithmic ones let alone chess.

»
2 years ago, # |
Rev. 3   Vote: I like it 0 Vote: I do not like it

problems could be solved in O(n^2)

It’s well known in China that... (from Ptz camp, Yuhao Du Contest 7)

»
2 years ago, # |
  Vote: I like it +31 Vote: I do not like it

Did not read much of this but computer speed increasing is just not a real issue for old problems. The time limit can be divided by a factor or the CPU speed might be limited for those (if you check out older CodeForces problems, you will notice that they now run in half-TL since computers indeed got better).

»
2 years ago, # |
  Vote: I like it +43 Vote: I do not like it

I actually hope that in the future we will get more powerful computers, just so more actual tasks could be developed. For example, if you have a task about queries on a tree, differentiating a O(Qsqrt(N)logN) from O(QN) is pretty hard (if HLD-cache optimization is used), unless you A) set really tight TL limits or B) make reasonably good worst-case tests against heuristics and so on. If Q and N are 1e6 and not 1e5, the difference is much larger.

»
2 years ago, # |
  Vote: I like it +14 Vote: I do not like it

How about quantum competitive programming?

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

As much as I want CP to be e-sport, I don't think it will be. I think one of sport's element is that it can be played as many round as you want with the same set of equipment and tool. But for CP, you must think of new problems every time you want to host the contest.

Still, I think CP can be developed further as an entertainment. In my opinion, good MCs or shout-casters can help make CP tournament more entertaining for viewers.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Probably in a little bit farther future, CP will also involve quantum algorithms...

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

My opinion about each case:

  • Competitive Programming Problems: Yes, the older a problem, the easier it is, since people have been working on it for a long time. But the "questioned" problems are just a minor scatter of all problems outside, and they are keep growing. New questions is always cool to solve, after time they will split into 3 main groups: stay for millenias, change itself through time or die off.

  • Competitive Programming and Real-Life Programming: Yes, they are more and more related to each other, especially graph theory.

  • Can Competitive Programming be an eSport?: No. It is not cool to get used to at the first time, and it does not bring everybody joy when doing it hours after hours. In short, it is not likely to be a relaxing method at first glance.

  • Competitive Programming and AI: Not really, AI can catch us, but maybe not in the next 10 or 20 years. This is just my opinion, since I have train several AIs for different uses.

  • Competitive Programming and AI: Yes, but AI cannot win us now.