Подумал вот о чем - стоит ли для этого выбирать GoLang?
А при чем здесь мода?
Совет изучать Python 3.x - глупость.
Эта версия до сих пор мало распространена.
Вообще-то, эта версия - продолежние второй версии, а после третьей будет и четвёртая уже скоро. Да, они не совместимы, но они несовместимы только потому, что вторая версия довольно плоха и её пришлось очень обильно переделывать.
При том, что все бросились его осваивать не потому, что он хорош, а потому что его продвигает Google и часть сообщества. Поэтому когда возникают вопросы в стиле "ребята, у меня тут какой-то пуговицы нет", ему говорят "это так надо, это теперь такой новый стиль".
Хотелось бы не пересказ чужих слов.
3-я не обратно совместима со второй. 2-ая была распространена слишком значительно, к моменту изготовления 3-й.
Уже поздняк метаться.
f'abcd {name}'
Сходи в тот топик, там есть некоторые моменты.
Вот ты не понимаешь, что всем всё равно? Они всё равно будут разрабатывать следующую версию питона, хочешь ты или нет. Кто там что разработал - всем всё равно. Новая версия в сто раз лучше старой, ты предлагаешь из-за каких-то там программ (которые и сам не знаешь) оставить всё в том виде, который был 20 лет назад.
Ну, сдохнут эти программы, значит.
1. go fmt форматирует текст табами, а не пробелами.
2. readline() в Go делается
примерно так:
reader := bufio.NewReader(os.Stdin)
или так
scanner := bufio.NewScanner(os.Stdin)
Если я снесу Python27, то у меня перестанут работать: Git, Ansible, Slack, 2 штуки SDK облачных хостингов, YouCompleteMe, Terminator, Paramiko, будут проблемы с Virtual Box, OpenCV и Cairo.
Это серьезный софт, ему никто сдохнуть не даст. И переписывать не будут. Слишком много. Python 2.7 останется основной версий еще много лет.
Нельзя делать настолько несовместимой новую версию. Фактически это новый язык.
Какое отношение Git имеет к питону? Остальное, что ты назвал, - это то, без чего вполне можно обойтись. Либо они перепишутся, либо останутся с кучей легаси кода, который будет их тянуть в прошлое.
Серьёзно? А я и не заметил. Я и говорю, что мне нужно, чтобы он пробелами мог отформатировать, потому что я использую пробелы. С пробелами код в любом редакторе с любыми настройкам будет выглядеть одинаково. Понимаешь, go fmt форматирует не только пробелы и мне что-то из форматирования подходит, но опять же я его не могу применить, потому что он мои пробелы заменит. То есть там даже нельзя выбрать, что он должен форматировать из всего множества, а что не должен.
Я работал с огромным проектом на PHP (один из полусотни разработчиков в компании), и не представляю его даже на экосистемах Python или Ruby. А писать такое на Node.js или Go - это просто самоубийство.
Кстати, запрещались любые оптимизации кода, которые шли во вред читаемости ;)
вообще, если в Go-community и правда все повсеместно используют 8 символов, то это круто. Просто в моём мире Android-программирования разброда и шатания чуть побольше, посему и сужу со своей колокольни. :)
Не надо мне примерные, сформируй готовый исходник. Мы просто оценим, что тебе пришлось делать, чтобы просто прочитать строку из
потока.
Ну, кто-то и на фортране до сих пор сидит. Только кто это будет поддеживать потом? Представляешь себе новую версию программы, выпущенную на древнем языке? А древний язык не имеет новых средств, новых библиотек (потому что сам язык не развивает никто).
А ты предлагаешь "нет, надо было тянуть это за собой ещё 20 лет вперёд".
но питон - это язык постоянных экспериментов (что и делает его гибким), там легко меняют ядро языка. Там вот было две функции - range() и xrange(), это был эксперимент, потому что было непонятно, какую лучше использовать. В результате выбрали второй вариант (посмотрели по использованию в разработке) и оставили только его.
4 фута 8.5 дюйма - ракета или лошадиный зад?
По бокам космического корабля «Кеннеди» размещаются два двигателя по 5 футов шириной. Конструкторы корабля хотели бы сделать эти двигатели еще шире, но не смогли. Почему?
Дело в том, что двигатели эти доставлялись по железной дороге, которая проходит по узкому туннелю. Расстояние между рельсами стандартное: 4 фута 8.5 дюйма, поэтому конструкторы могли сделать двигатели только шириной 5 футов.
Возникает вопрос: почему расстояние между рельсами 4 фута 8.5 дюйма?
Откуда взялась эта цифра?
Оказывается, что железную дорогу в Штатах делали такую же, как и в Англии, а в Англии делали железнодорожные вагоны по тому же принципу, что и трамвайные, а первые трамваи производились в Англии по образу и подобию конки. А длина оси конки составляла как раз 4 фута 8.5 дюйма!
Но почему?
Потому что конки делали с тем расчетом, чтобы их оси попадали в колеи на английских дорогах, чтобы колеса меньше изнашивались, а расстояние между колеями в Англии как раз 4 фута 8.5 дюйма!
Отчего так?
Да просто дороги в Великобритании стали делать римляне, подводя их под размер своих боевых колесниц, и длина оси стандартной римской колесницы равнялась... правильно, 4 футам 8.5 дюймам! Ну вот теперь мы докопались, откуда взялся этот размер, но все же почему римлянам вздумалось делать свои колесницы с осями именно такой длины? А вот почему: в такую колесницу запрягали обычно двух лошадей. А 4 фута 8.5 дюйма - это был как раз размер двух лошадиных задниц! Делать ось колесницы длиннее было неудобно, так как это нарушало бы равновесие колесницы.
Следовательно, вот и ответ на самый первый вопрос: даже теперь, когда человек вышел в космос, его наивысшие технические достижения напрямую зависят от РАЗМЕРА ЛОШАДИНОЙ ЗАДНИЦЫ ДВЕ ТЫСЯЧИ ЛЕТ НАЗАД!
Ты можешь его изучить ради моды, но ты много будешь трахаться с самим языком, потому что это такой костюм от очень известных кутюрье, который они сшили только вчера, и из которого отовсюду торчат нитки (а иногда и целые тряпки), а некоторые карманы ещё будут перешивать с левой стороны на правую и с правой на левую.
Они бросились писать на втором питоне, тогда как вторая версия - это слишком сырая версия. Надо понимать, что это ненадёжно в плане развития. Они думали, что третья версия будет совместима со второй (как везде бывает), но питон - это язык постоянных экспериментов (что и делает его гибким), там легко меняют ядро языка. Там вот было две функции - range() и xrange(), это был эксперимент, потому что было непонятно, какую лучше использовать. В результате выбрали второй вариант (посмотрели по использованию в разработке) и оставили только его. А ты предлагаешь "нет, надо было тянуть это за собой ещё 20 лет вперёд".
Оба-на! Да тебе лишь поспорить? Я нахожу противоречие в твоих словах:
Про Go:
...
Про Python:
...
Ты сам подумай. У тебя есть куча кода. Не 10 или 20 модулей. А действительно огромная куча кода. Туева хуча.
Он нормально работает. Зачем ты его будешь переписывать?
Никто не мешал оставить обратную совместимость. Например, использовали же в заголовке файла "encoding utf".
Никто не мешал также для совместимости встроить там указание на версию Python.
Следовательно, вот и ответ на самый первый вопрос: даже теперь, когда человек вышел в космос, его наивысшие технические достижения напрямую зависят от РАЗМЕРА ЛОШАДИНОЙ ЗАДНИЦЫ ДВЕ ТЫСЯЧИ ЛЕТ НАЗАД!
Язык не должен настолько сильно изменяться.
Фортран не тот пример. Он, кстати, до сих пор применяется в научном мире, если ты не в курсе.
А это все. Строка уже готова к обработка.
Например, можно пройтись циклом. Там тоже элементарно:
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
Брателло, ты не прав. Табы позволяют визуализировать код как хочешь.
Если ты считаешь, что можно обойтись без Ansible, Vagrant/VirtualBox, Slack и SDK одних из крупнейших в мире облачных хостингов, то у меня закрадываются сомнения - а не беседую ли я со школьником.
Да не использую я табы. Где-то я хочу три пробела поставить специально, потому что мне так надо. Ты настроишь? Ты не настроишь. Почему? А потому что настраиваются сразу все табы. А настроить половину исходника в два пробела, половину - в четыре, а изредка сделать по три в некоторых строках, ни в одной программе ты так не настроишь. Это ограничение - если настраиваешь, то все сразу.
Это целесообразно при одиночной работе. При работе в группе программистов этого нельзя делать.
Группе программистов никто не мешает договориться и вместо go fmt использовать другой форматтер. Но он должен быть единым для всех по причине описанной выше проблемы.
На деле так никто не делает. Незачем совершенно.
Это не незачем, а просто возможности такой нет. Никто не хочет писать свой go fmt заново, когда можно взять этот корявый и к нему привыкнуть.
То есть из-за одних пробелов лишиться всего go fmt - вот как это называется. А всё потому, что нет возможности отключать некоторые из преобразований. И с чего они вообще взяли, что текущий формат является идеальным? Современное приложение должно включать в себя файл с настройками формата. Чтобы ты мог просто взять их и поменять под свою команду. А тут просто вшили просто какой-то формат и всё.
Но дело не в этом, почему нет опции "отключить преобразование пробелов"? Она должна быть наряду с другими возможностями подобного рода.
Вы не прониклись проблемой с коммитами. Разжевываю:
3 минуты - форкаешь, ищешь в исходнике табы, заменяешь пробелами, компилируешь вариант под себя.
Если этого мало, то в состав стандартных пакетов Go входит пакет для работы с AST языка Go.
Ведь ты же знаешь, что на github'е слишком длинные строки обрезаются.
Ага, а то, что эти табы могут быть не только отступами, но и нужными табами где-нибудь в комментариях, которые не надо трогать, это ты как-то упустил.
почему я в программе не могу отключить один из сотни элементов, который всю картину портит?
Веб-инерфейс ГитХаба никакого отношения к работе с кодом не имеет. Работают локально. В своей репе git.
Если бы он портил картину, то возмущались бы толпы. Возмущаешься ты один.
потому как их делаешь по 2 десятка в день. придумывать задолбаешься.
это ядро операционной системы
вы предлагаете мержить коммиты без просмотра кода, что ли? ;)
[guest@localhost main]$ git log1 be840
commit be84045f0780b31d4ff08042daf27c9521ccf393
Author: Guido van Rossum <guido@python.org>
Date: Thu Aug 9 14:25:15 1990 +0000
Initial revision
--HG--
branch : legacy-trunk
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/python/branches/leg
[guest@localhost main]$
или базовая технология как git
Я уже больше 10 лет читаю....
Проекты готовят к появлению нового разработчика как раз теми методами, которые ты отрицаешь: жесткими требованиями по форматированию кода