В работе фрилансера часто приходится помогать студентам - на биржах фриланса очень много задач по программированию. И всё бы хорошо, но есть две неприятности:
- Среди студентов очень много кидалова. То есть вы решаете вопрос, а вам тупо за это не платят (знаю по собственному опыту, что кидальщиков среди студентов не менее 30%). С этим можно бороться, но это тема отдельная.
- Поскольку направлений программирования сегодня очень много, то и задачи попадаются на разных языках. А любой, даже профессиональный программист, как правило, очень хорошо знает один язык. И ещё 2-3 языка более-менее хорошо. Да, почти каждый профессионал знает ещё десяток-другой языков на троечку с минусом. Но этого уровня часто недостаточно, чтобы быстро решать даже студенческие задачи. А студенты, как обычно, тянут до последнего, и такие задания очень часто бывают срочными.
Что же делать? Как научиться решать задачи на любом языке программирования?
У меня есть свой, опробованный способ. Наверно он не безупречен, но я его уже давно использую и мне он помогает.
Суть его заключается в следующем:
- Сначала вы решаете задачу на том языке, который вы знаете лучше всего. Так вы можете достаточно быстро, не потратив кучу времени, написать программу и проверить её работу. На этом же шаге вы разрабатываете нужные алгоритмы и находите решения. И делать это на хорошо знакомом языке намного проще, чем на малознакомом.
- Потом вы переписываете программу, которая уже заведомо правильно работает, на нужный язык программирования.
Может показаться, что это пустая трата времени - ведь по сути вместо одной программы вам придётся написать две. Но это только на первый взгляд.
На самом деле времени вы потратите не больше. А иногда даже меньше. Потому что вероятность совершить ошибку на малознакомом языке намного выше. Разработка на незнакомом языке тоже занимает много времени. А вот переписать программу с одного языка, который вы хорошо знаете, на другой - намного проще. Даже если этот другой язык вам не очень знаком.
Согласитесь, что циклы - они и в Африке циклы. Функции есть в любом языке программирования. Ну и так далее. Надо просто заменить некоторые символы, например, begin на {, да немного посидеть в Интернете, чтобы найти аналоги стандартных функций.
Я, например, своим “родным” языком считаю Паскаль. Его я знаю лучше всего. А даже С++ я знаю уже значительно хуже. Поэтому решить одну и ту же задачу на Паскале и С++ я смогу за разное время. И если в случае с С++ это время не будет сильно отличаться - можно сразу начинать с С++, то, например, в случае с C# мне придётся провозиться очень долго. Затраты времени могут оказаться больше в несколько раз. И в таких случаях как раз имеет смысл использовать описанный выше способ.