Как стать автором
Обновить

Комментарии 17

Ну и сравнение однако. Знать язык или уметь написать гениальный роман, это две большие разницы. Думаю именно синтаксис и мелкие особенности, очень малая доля из умения написания программы, выполняющей заданные функции.
Речь скорее об общих принципах, роман так, конечно, не напишешь.
Ваше сравнение программы с гениальным романом тоже не идеально. Скорее уж тогда надо сравнивать с неким утилитарным чтивом. Доля творчества в программировании, безусловно, есть, но все-таки — это индустрия, поставленная на поток.
Я не сравниваю настолько прямолинейно. У романа нет некоего параметра по которому его можно легко назвать идеальным, а у программы есть. Скорость это, объем памяти или еще что-то, но большая часть программ к ним и близко не приближается. Понятно что все зависит от затрат на доведение до идеала, но там где новичок наделает костылей и ошибок, опытный программист сделает быстрее и лучше. Соответственно и писатель может очень по разному писать в зависимости от опыта и прилагаемых усилий.
У романа нет некоего параметра по которому его можно легко назвать идеальным, а у программы есть.

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

Ну большая часть оценок идет всё же со стороны потребителя, который обычно и не догадываеться, сколько черновиков исчиркал автор или как красиво сделан код. А уж уповать на объективность массы потребителей, весьма спорный вариант.
Я не сравниваю настолько прямолинейно.
Я это понимаю, и с основной Вашей мыслью согласен, у меня не было бы возражений, если бы Вы к слову «роман» не добавили бы прилагательное «гениальный». Нельзя сравнивать шедевр и утилитарную рутину, коей является программирование.
У романа нет некоего параметра по которому его можно легко назвать идеальным, а у программы есть.
Давайте заменим слово «идеальный» на что нибудь более приземленное, например, «хороший», тогда и у того, и у того появятся критерии соответствия. Хороший роман — это который читают. Хорошая программа — это которая без нареканий выполняет свои функции.
Скорость это, объем памяти или еще что-то, но большая часть программ к ним и близко не приближается. Понятно что все зависит от затрат на доведение до идеала, но там где новичок наделает костылей и ошибок, опытный программист сделает быстрее и лучше. Соответственно и писатель может очень по разному писать в зависимости от опыта и прилагаемых усилий.
И опять Вы сравниваете рутинную работу, где про идеал никто речи не ведет, т.к. на выходе нужна чисто утилитарная вещь, и творчество, которое действительно может быть попыткой достижения идеала.

Сравнение интересное, однако между текстом и исходным кодом есть фундаментальные различия. Например, неоднозначности и неточности. Человеческие языки неформальны и допускают много вольностей, начиная от неоднозначности в предложениях ("эти типы стали есть в нашем цеху"), для разрешения которых нужен контекст и заканчивая более серьезными противоречиями на уровне "архитектуры", например, хронологическими. Однако несмотря на все эти недостатки, текст все равно "скомпилируется", чего не скажешь о программе.


Однако идея рассматривать текст как код мне нравится. Есть текстовые форматы (Markdown), которые хорошо сочетаются с системами контроля версия (Git), и для которых уже существуют утилиты, проверяющие орфографию и форматирование. Git предоставляет удобное версионирование, возможность создания веток, пулл-риквесты и ревью только уже для текстов, а не для исходных кодов.

Nope. Языки программирования на несколько порядков проще, имеют минимум ключевых слов и простой синтаксис. Основная сложность — структура программы и используемый матаппарат, которые от языка программирования почти не зависят.


Сложность разговорных языков в том, что нужно знать огромное количество информации. Даже в схожих языках могут быть очень мощные различия — например, в английском нет родов, в немецком они есть, но не совпадают с родами в русском языке. Как это выучить? Только запоминать.


Наименее некорректным сравнением, которое приходит мне в голову, является изучение стапятисот библиотек к языку. Но если при просмотре фильма или в разговоре значения слов надо знать заранее и быстро вспоминать по нескольку штук в секунду, то в программировании это нафиг никому не нужно. Если в коде попадётся использование какой-то неизвестной функции из какой-то библиотеки — это нормально, программист тупо прочитает документацию или исходный код — никто не требует помнить всё подряд.

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

Так при просмотре фильма тоже не обязательно знать все слова — некоторые можно пропускать без потери смысла. А если смотришь дома, то можно поставить на паузу и посмотреть в словаре.

Сам заголовок уже как-то не очень:
есть ли общее в изучении иностранного языка и языка программирования

Ваша статья совершенно слаба потому что вы рассмотрели именно простые популярные языки программирования. Если взять для рассмотрения ещё какой-то язык, не такой структурированный как C#, а, например, LISP или LATEX, то увидите, что они уже не так хорошо согласуются с вашей логикой, хотя и имеют свою. Однако вся их схожесть состоит в том, что все языки программирования изобретены именно человеком, поэтому и понятны вам, как человеку. И вы рассказываете о том, что вы это узнали? Лично я давно знал, что я человек, а значит могу приложить усилия и понять другого человека.
P.S.
Истории «про поросят» рассказывают маркетологи на каждой конференции. Ничего нового.

Может, я и ошибаюсь, но сравнение языков программирования и человеческих языков — это схоластика в чистом виде. Это несравнимые категории, и общее у них — только слово "язык" в названии. Это как проводить сравнительный анализ ежа и ужа на том основании, что у них буква "ж" в названии есть.

Изучение языка программирования происходит примерно так:
1. Изучить как в этом языке программирования реализованы уже знакомые концепции (от 30 мин. до нескольких часов)
2. Понять как работают концепции, пока не знакомые или реализованные незнакомым способом (пару дней).
3. Ознакомиться с каким-то минимальным набором библиотек и фреймворков для решения первой задачи (несколько дней).
4. Начать что-то писать. На каждом шагу наступать на раскиданные там и сям для новичков грабли. Справившись с граблями останавливаться и искать как здесь принято решать те или иные стандартные задачи (неделя-другая).
5. Освоившись начать работу над проектом. С этого момента новый язык уже не проблема, основная проблема — незнакомые фреймворки. Новый язык несколько замедляет работу, когда хочется сделать все изящно. Общий навык написания красивого кода нарабатывается постепенно годами.
Вообще ничего общего с иностранными языками.
1. Изучить, как в языке строятся простейшие предложения и конструкции, минимальный набор грамматических правил (простое настоящее время, принцип спряжения правильных глаголов).
2. Понять, как использовать прошедшее и будущее времена, как спрягаются неправильные глаголы.
3. Ознакомиться с 100-200 самых часто используемых слов, которые могут пригодиться в разговоре на повседневные темы.
4. Начать говорить простыми фразами о себе, выучить основные фразы для общения. Пока знакомишься с новыми фразами, смотришь в словарь и учишь новые слова и конструкции.
5. Освоив базовые знания о языке, расширять словарный запас, пополнять знания о грамматике и говорить. Много-много говорить. Постепенно нарабатывая словарный запас и повышая уровень до fluent, на что уйдет несколько лет, чтобы говорить красиво и правильно.

Разница только во времени освоения, впрочем, если заниматься только изучением языка с утра до вечера, приведенные сроки можно отнести и к иностранному языку.
Точно так же можно привести аналогию с обучением катания на лыжах, вождению автомобиля и вообще с чем угодно.
У языков программирования нет ничего общего с языками общения. Язык программирования — это не язык выражения мыслей. Это прямое перечисление последовательности действий для компьютера. В знании языка программирования самое важное — осознавать что происходит с данными при выполнении команд. Дальше, нужно нарабатывать воображение для того, чтобы уметь упорядоченно оперировать этими данными таким образом, чтобы достичь требуемой цели.
Никто не объясняет компьютеру что мы от него хотим. Наоборот, программа — это построенный программистом механизм, который работает сам по себе и приводит к требуемому результату.
Смотреть на язык программирования как на «язык общения с компьютером», типа «я-ж пишу что делать, какая мне разница как он это сделает» — фатальная ошибка гуманитария, которая лишает надежды на настоящее освоение программирования.
И наоборот — попытка разобраться в языке общения, как можно разобраться в языке программирования — это распространенная ошибка человека с математическим складом ума бессмысленная трата сил. Так можно получить знания лингвиста, но так и не изучить язык. Там надо просто очень много читать, слушать, говорить, пока мозг не настроится на этот гиганский объем на уровне подсознания.
Мне очень понравился ваш ответ! Позвольте немного обобщить его — чтобы ХОРОШО научиться и иностранному языку и языку программирования нужно МНОГО практиковаться и в том и в другом. Но это есть общее в изучении вообще всего. ))) Да, аналогии позволяют иногда находить ответ быстрее, но их нужно уметь не только «проводить», но и доказывать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий