Найти тему

Как решать задачи на любом языке программирования

В работе фрилансера часто приходится помогать студентам - на биржах фриланса очень много задач по программированию. И всё бы хорошо, но есть две неприятности:

  • Среди студентов очень много кидалова. То есть вы решаете вопрос, а вам тупо за это не платят (знаю по собственному опыту, что кидальщиков среди студентов не менее 30%). С этим можно бороться, но это тема отдельная.
  • Поскольку направлений программирования сегодня очень много, то и задачи попадаются на разных языках. А любой, даже профессиональный программист, как правило, очень хорошо знает один язык. И ещё 2-3 языка более-менее хорошо. Да, почти каждый профессионал знает ещё десяток-другой языков на троечку с минусом. Но этого уровня часто недостаточно, чтобы быстро решать даже студенческие задачи. А студенты, как обычно, тянут до последнего, и такие задания очень часто бывают срочными.

Что же делать? Как научиться решать задачи на любом языке программирования?

У меня есть свой, опробованный способ. Наверно он не безупречен, но я его уже давно использую и мне он помогает.

Суть его заключается в следующем:

  1. Сначала вы решаете задачу на том языке, который вы знаете лучше всего. Так вы можете достаточно быстро, не потратив кучу времени, написать программу и проверить её работу. На этом же шаге вы разрабатываете нужные алгоритмы и находите решения. И делать это на хорошо знакомом языке намного проще, чем на малознакомом.
  2. Потом вы переписываете программу, которая уже заведомо правильно работает, на нужный язык программирования.

Может показаться, что это пустая трата времени - ведь по сути вместо одной программы вам придётся написать две. Но это только на первый взгляд.

На самом деле времени вы потратите не больше. А иногда даже меньше. Потому что вероятность совершить ошибку на малознакомом языке намного выше. Разработка на незнакомом языке тоже занимает много времени. А вот переписать программу с одного языка, который вы хорошо знаете, на другой - намного проще. Даже если этот другой язык вам не очень знаком.

Согласитесь, что циклы - они и в Африке циклы. Функции есть в любом языке программирования. Ну и так далее. Надо просто заменить некоторые символы, например, begin на {, да немного посидеть в Интернете, чтобы найти аналоги стандартных функций.

Я, например, своим “родным” языком считаю Паскаль. Его я знаю лучше всего. А даже С++ я знаю уже значительно хуже. Поэтому решить одну и ту же задачу на Паскале и С++ я смогу за разное время. И если в случае с С++ это время не будет сильно отличаться - можно сразу начинать с С++, то, например, в случае с C# мне придётся провозиться очень долго. Затраты времени могут оказаться больше в несколько раз. И в таких случаях как раз имеет смысл использовать описанный выше способ.