Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Перевод книги Think Python  (Прочитано 43610 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Перевод книги Think Python
« : 08 Апреля 2013, 22:39:57 »

Старые ссылки не работают (изменилась политика Dropbox). Вот новая ссылка в формате LaTeX (там есть и готовый PDF). Перейти в раздел source.

9 февраля начал переводить книгу Think Python: How to Think Like a Computer Scientist на русский язык. Сегодня (8 апреля) закончил перевод и форматирование. 2 месяца работы.

Кто не знает: эта книга была в русской версии в переводе Чаплыгина. К сожалению, перевод был неполным (около половины, а то и меньше). В свое время эта книга мне здорово помогла разобраться не только с Питоном, но и с программированием вообще, что есть что. Не то, чтобы я программист (так, любитель поэксперементировать), но подход автора таков, что он учит именно программировать (т.е. думать так, как думает специалист по компьютерам), а не просто описывает возможности языка Питон.

Книга идеально подходит для новичков, скажем так, для полных нулей в программировании. Он подробно разжевывает многие концепции. Тем не менее, книга не написана на примитивном уровне. Он начинает с самых азов, а в конце идет объектно-ориентированное программирование, где читетеля подробно проводят через весь процесс создания классов и всего, что с ними связано. Включая полиморфизм и наследование. Также имеется глава о создании GUI с помощью Tkinter. В книге очень много разных упражнений, которые просто интересно делать.

Чем мне она особенно нравится, так это тем, что последующий материал он строит на основании уже пройденного. Т.е. если читать ее подряд, то весь материал должен быть понятен.

Ладно, хватит резюме. Вот ссылка на скачивание: Think Python Ru v.1.06
 

Ссылка на версию 1.04 для eReader 6''

А это файл ошибок и исправлений: https://dl.dropboxusercontent.com/u/66472509/mistakes.txt

Переводить было не совсем легко, т.к. не вся терминология мне знакома. Я постарался уточнить названия терминов. Если кто-то из опытных программистов захочет прочитать если не всю книгу, а хотя бы словарь терминов (приводится отдельно в конце каждой главы), и уточнит их, то я внесу изменения.
« Последнее редактирование: 21 Марта 2017, 01:30:26 от Jack Sparrow »
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн pima

  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
    • Копилка медведя
Re: Перевод книги Think Python
« Ответ #1 : 09 Апреля 2013, 02:58:36 »
Спасибо. Начинал читать перевод Чаплыгина, но к сожалению если вернусь к Питону дочитаю в вашем. :)
Acer aspire one Ubuntu Netbook Edition 10.04

Оффлайн b.konstantin

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #2 : 09 Апреля 2013, 15:32:44 »
Jack Sparrow, спасибо огромное!

Оффлайн Ururu_2

  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #3 : 13 Апреля 2013, 15:14:52 »
Прочитал первые две главы. Высокое качество перевода, отличная работа! Но несколько замечаний всё же возникло:
страница 11:  который адоптировал мою книгу
страница 15: Alexandros Gezerlis установил новый   стандарт в количестве и качестве предолжений
страница 24:  в формате, который называется плавающая точка - обычно всё же говорят "число с плавающей точкой", а не просто "плавающая точка"
страница 27: обычно говорят "приоритет операций", а не "правила приоритета"
assignment обычно переводят как "присваивание", а не "присвоение".
floor division обычно переводят как "целочисленное деление"

Оффлайн processor5

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #4 : 14 Апреля 2013, 01:07:42 »
а не могли бы вы оригинал сохранить в fb2 или epub параллельно

Оффлайн eddvpodt

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #5 : 14 Апреля 2013, 14:41:35 »
Замечательно, спасибо тебе огромное!

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #6 : 15 Апреля 2013, 04:44:24 »
Ururu_2, спасибо за конструктив. По поводу орфографических ошибок - я просто не проверял орфографию. При большом количестве ошибок или если есть много текста на двух языках, особенно с кодом, spellcheck просто не подчеркивает слова. Но я все-таки проверил текст на ошибки и исправил штук 200 опечаток. Так что с версии 1.02 (русский перевод) такие ошибки, как "адОптировал" должны либо отсутствовать вовсе, либо сведены к минимуму (случайно заметил и исправил ошибку в "вы может заметить ..." - разумеется, spellcheck в подобных случаях не поможет.

стр. 15 - честно говоря, не подозревал, что кто-то будет читать, причем, внимательно, список благодарностей :)

floating point - да, "плавающая точка" это как-то не совсем по-русски. Наверное меня смутило то, что этот термин должен быть в словаре. Исправил.

А вот по поводу floor division я не вполне уверен. Я знаю термин "целочисленное деление". Но я специально искал в интеренете ссылки. Похоже, что "целочисленное деление" больше отностится к случаю, когда используется функция divmod, а результат возвращается в виде кортежа из частного и остатка. А когда говорят о floor division, то имеют в виду именно отбрасывание дробной части без всякого округления.
Я этого термина даже в английской википедии не нашел. Так что вопрос еще открыт. К сожалению, у меня сейчас такой дрянной интернет, что даже это не могу лишний раз проверить.

"Присвоение" изменил на "присваивание". Также "правила приоритета" изменил на "приоритет операций".

Вообще, я создал текстовый файл, куда буду записывать все найденные ошибки. Если кто-то обнаружил новую ошибку, то убедитесь, что вы читаете версию не ниже 1.02. Т.к. орфографических ошибок было слишком много, я их не привожу. Версия 1.02 уже прошла через spellcheck.

Обновленную книгу буду выкладывать по мере того, как будет позволять интернет (у меня он настолько плохой, что порой днями не могу даже зайти на форум, не то, что выложить около 4 Мб книги).

processor5, fb2, насколько я знаю, не слишком хорошо подходит для технической документации, особенно, когда много диаграмм, схем и т.п.

Про epub я и сам думал, но текст у меня набран в Word, поэтому просто так конвертировать его в epub даже не знаю как. К тому же из A4 нужно сделать A5, а то и меньше, для 5-6 дюймовых читалок. Потом все проверить, не расползается ли текст и т.п. Короче, это не так просто, нужно время.
Кстати, еще один недостаток epub это тот, что в нем некоторое форматирование теряется (уже пробовал). Например, в книге весь код, ключевые слова Python, имена переменных, функций, классов и т.п. набраны шрифтом Courier New, поэтому он легко распознается. А в epub он уже обычный, как и основной текст. Не знаю, может быть я что-то не так делал, но у меня именно так.

Есть другой вариант - это выложить в PDF, но заточенным под eBook. Я сейчас пробую - получается неплохо. Все четко, форматирование не плывет. Конечно, есть и один недостаток - нельзя сделать ссылки (footnotes). По крайней мере, в моей прогамме. Ну, и если код длинный, то он не умещается по ширине и получается неправильные, с точки зрения Питона, отступы. Но это уже проблема не PDF, а маленького экрана. Как сделаю, так выложу и такой вариант. Под ридер с 6'' экраном.

PS. Смотрим на первую страницу темы и качаем обновленную версию.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Ururu_2

  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #7 : 15 Апреля 2013, 15:04:58 »
Целочисленное деление это именно div. Просто в delphi x div y вернёт как раз целую часть от деления, отбросив остаток. В питоне  же есть оператор, а есть отдельная функция. Чтобы не путать народ, изучавший сначала паскаль (си знаю не очень, но вроде там тоже самое), предлагаю в питоне и оператор и функцию именовать "целочисленным делением".

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #8 : 15 Апреля 2013, 15:20:17 »
Да, скорее всего, что так и есть. Появился интернет, погуглил немного. Похоже, что floor division это синоним integer division. Исправлю на "целочисленное деление".
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #9 : 17 Апреля 2013, 21:19:17 »
Исправил еще несколько ошибок и выложил версию 1.04 (см. первую страницу темы).
Также выложил версию "маленкого PDF" для читалки 6 дюймов.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Ururu_2

  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #10 : 20 Апреля 2013, 23:43:31 »
Начало главы 3.4: До сих пор мы видели различные элементы программы - переменные, выражения и предложения – в изоляции. Как то "в изоляции" не совсем по-русски. Правильнее наверно будет "сами по себе"

начало 3.7: flow of execution наверно лучше перевести как "порядок выполнения". http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F

Начало 3.10: возможно, frame стоит перевести как "кадр" в данном случае? Я, конечно, со стековыми диаграммами раньше не сталкивался, но, во-первых, "фрейм"- это всё же не по-русски, а во вторых википедия знает о "стековых кадрах" что вроде бы близко по смыслу: http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BA%D0%B0%D0%B4%D1%80

глава 3 - я, конечно, не сталкивался с тем, чтобы первую строку функции вообще как-то отдельно называли, но википедия утверждает, что это "сигнатура функции", а не "заголовок" (header): http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9

начало 4.4: - это вопрос скорее к автору книги (Алён Дауний который), но инкапсуляция - это когда объект содержит и данные и функции которые их обрабатывают. Обозвать инкапсуляцией "размещение кода внутри функции" - что курил автор? Разве бывают функции БЕЗ размещённого внутри кода?

4.5: По-моему, лучше всё же "обобщение" чем нерусская "генерализация".

4.6: И снова вопрос к автору - "разработка интерфейса" - это обычно набрасывание на формочку кнопочек, менюшек и полей ввода. Обозвать "разработкой интерфейса" продумывание того, как будет работать функция - это сильно. Я вообще не сталкивался никогда с понятием "интерфейс функции". Разве что в модулях Паскаля есть область interface где описываются функции. Но там тупо их заголовки, к проектированию работы как таковому это имеет слабое отношение.

4.8: Планом разработки (development plan) называется процесс написания программы. Опять странное какое-то использование автором понятий. План - это то что ПРЕДШЕСТВУЕТ разработке (в идеале, а обычно разработка вообще идёт без плана). Называть планом процесс написания - трава у автора становится всё забористей.

4.8: пункт 5 ...если у вас в разный местах

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #11 : 21 Апреля 2013, 13:59:36 »
Ururu_2, опечатки исправил, также "изоляцию" на "сами по себе".
С другими замечаниями нужно еще будет разобраться.

flow of execution - та же википедия дает разные термины - 1) порядок выполнения, порядок вычислений, 2) поток управления, поток выполнения. У меня это названо поток вычислений. Я не знаю, 1 и 2 из статьи говорит об одном и том же? Или это разные вещи? Мне не очень нравится название порядок выполнения, т.к. у меня сразу возникает ассоциация с приоритетом выполнения операций, т.е. сначала умножение и деление, а затем сложение и вычитание, для примера. Я даже где-то вставил примечание от себя, чтобы подчеркнуть эту разницу. Тут, на мой взгляд, слово поток лучше подчеркивает различие, т.к. больше относится ко всей программе, а не к отдельной инструкции. Возможно, что стоит изменить на википедиевский поток выполнения или поток управления. Нужно будет еще подумать над этим.

frame я вначале вообще перевел как "рамка". Потом посмотрел в словарь ABBYY, так у них там и кадр, и фрейм. С этим словом вообще проблема, т.к. в книге оно используется в трех разных оттенках. Это и 1) рамка для рисования диаграмм, и 2) рекурсивная функция (что, думаю, связано с первым значением, т.к. рамки тоже используются для отображения вызовов этих функция), но, думаю, в этом значении это что-то такое виртуальное, ближе к instance или экземпляру функции, если можно так выразиться. Также в главе о Tkinter там есть и другое значение, 3)  контейнер для других виджетов.
В последнем случае, конечно, проще всего перевести как рамка, но что с первыми двумя? То же слово кадр хоть и более "русское", но не сильно помогает понять идею. Т.е. если не понимаешь, что такое фрейм, то назови его хоть кадром, все равно не сильно поможет. Опять же в Lingvo есть понятие стековый фрейм (функции) - область памяти, выделяемая всякий раз, когда вызывается функция, предназначается для временного хранения аргументов и локальных переменных функции. Думаю, это близко к значению 2).

Короче, значение 3) можно, в принципе, перевести как "рамка".
Значение 1) и 2) можно перевести как "кадр", это избавит от "нерусскости". Но ведь речь идет не о художественной литературе, а о технической, где есть своя терминология. Поэтому и "фрейм" мне не видится таким уж плохим, тем более, что он есть и в Lingvo. Я пока, наверное, оставлю это слово как есть для дальнейшего рассмотрения.

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

инкапсуляция - в принципе, я не вижу особых проблем. По мне так инкапсуляция это сокрытие кода по принципу черного ящика - данный код сообщаестя с внешним миром через посредство входных и выходных данных, а внутренняя реализация недоступна. Думаю, что тут дело не столько в забористости травы, а в том, что автор пытается объяснить сложные вещи доступным языком. Где-то я прочитал (не знаю, верно или нет, и может быть сейчас это уже не так), что этот автор обучал программированию детей 9-13 лет.

генерализация - мне и самому не слишком нравится это слово. Но "обобщение" хорошо подходит в роли существительного. А если нужен глагол? "Обобщите функцию"? "Сделайте функцию более общей"? Возможно подошло бы "сделать функцию более универсальной". Тогда что насчет существительного? "Универсализация"? Опять же, слово "генерализация" имеется в Lingvo по отношению к компьютерам. Да и у меня оно идет с пояснением.

интерфейс - опять же, я не вижу особых проблем по отношению к функции. Интерфейс это как бы посредник. Да, в русском языке мы обычно под этим словом подразумеваем более узкое значение - графический интерфейс пользователя (GUI). Но ведь автор говорит о том, посредством каких входных и выходных данных функция взаимодействует с вызывающей ее программой. Здесь ведь та же самая идея. Как пользователь нажимает на кнопочки и, таким образом, взаимодействует с программой, так и функция взаимодействует с программой посредством ее входных и выходных данных. Я не думаю, что это его изобретение. Думаю, что в англоязычной практике так и говорится. Например, автор назвал функцию, возвращающую результат - fruitful, но подчеркнул, что это он ее так называет за неимением лучшего слова, в противоположность void - не возвращающим результата.

development plan - план разработки. Опять же, возможно проблема в том, что мы ограниченно воспринимаем слово "план". Посмотрел в словарь - опять же там есть значение "способ". Т.е. можно перевести как "способ разработки". В принципе, автор пишет: "Процесс, который мы использовали в данной главе, называется "инкапсуляция и генерализация". Он делится на следующие шаги:..." т.е. как бы и описывает определенный способ разработки.
Опять же, нужно помнить, что это для автора английский язык является родным, а не для нас.
Я еще посмотрю, возможно, поменяю на "способ разработки".
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #12 : 21 Апреля 2013, 14:27:18 »
Мда, жаль, что содержание не оформлено правильно, чтобы можно была нажимать на названия и переходить на соответствующую страницу.

В остальном, добавил себе в закладки, как-нибудь обязательно почитаю, наверняка узнаю что-то полезное. Спасибо!
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Ururu_2

  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #13 : 21 Апреля 2013, 15:23:05 »
То, что автор пытается объяснить всё как можно проще - это хорошо. Вот только то, что ради простоты он вносит путаницу в термины - это однозначно плохо. Мало научиться программированию, надо уметь объясниться с другими программистами в случае чего - в команде придётся работать, например, или на форуме по программированию спросить чего-нибудь. И если все программисты используют "инкапсуляцию" только применительно к объектно-ориентированному программированию (ООП), а читатель этой книги будет использовать "инкапсуляцию" применительно к функциональному программированию - будет путаница и непонимание.

То же самое с "интерфейсом". По факту, у него даже внутри книги путаница, ибо непонятно, чем у него отличается "интерфейс функции" (описание входных и выходных параметров) и "заголовок функции" (в котором как раз и описаны входные и выходные параметры!). Кстати, в принципе есть понятие "интерфейс программирования", например, API - Application Programming Interface. Но интерфейс программирования - это совокупность функций, причём имеется в виду некий набор модулей, в котором куча функций - часть основные, которыми и пользуются сторонние программисты и которые обзываются API, а часть вспомогательные, используемые только внутри этих модулей.

В принципе, "сделать функцию более общей" - вполне по-русски и вполне понятно по смыслу. Так что "обобщение", думаю, вполне пойдёт.

"Способ разработки" в том контексте, что его использует автор, наверно лучше подойдёт чем "план разработки".

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Перевод книги Think Python
« Ответ #14 : 22 Апреля 2013, 00:56:00 »
Мда, жаль, что содержание не оформлено правильно, чтобы можно была нажимать на названия и переходить на соответствующую страницу.
Все сделано в Ворде для мака. Для заголовков использовались стили. Потом на их основе было сгенерировано содержание. Т.е. я вручную оглавление не составлял. Потом этот документ просто был сохранен как PDF. Почему нет переходов по нажатию - я тоже не знаю.

Цитировать
То же самое с "интерфейсом". По факту, у него даже внутри книги путаница, ибо непонятно, чем у него отличается "интерфейс функции" (описание входных и выходных параметров) и "заголовок функции" (в котором как раз и описаны входные и выходные параметры!).
Насколько я понимаю, в заголовке функции приводятся только лишь входные параметры, а выходные это то, что функция делает (если она void) или что возвращает (return). Например, одна функция может возвращать данные а) в виде словаря или б) в виде списка. Если эти данные будут поступать для дальнейшей обработки на вход второй функции, то входной интерфейс этой второй функции должен соответствовать выходному интерфейсу первой функции.
Лично я никакой проблемы тут не вижу. Просто один и тот же термин можно использовать как в широком смысле, так и в более узком. Тот же API - интерфейс на уровне приложений. А тут у него более узкое применение - интерфейс на уровне отдельных функций.

Генерализацию и план разработки я изменю.
Linux is only free if your time has no value (c) Jamie Zawinski

 

Страница сгенерирована за 0.036 секунд. Запросов: 25.