Go не имеет общих типов, но вы можете посмотреть, как sort работает, чтобы найти обходной путь. Что они делают, так это создать такой интерфейс:
type Interface interface {
// Len is the number of elements in the collection.
Len() int
// Less returns whether the element with index i should sort
// before the element with index j.
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
Swap(i, j int)
}
И теперь для любого настраиваемого типа вы можете создать соответствующий настраиваемый тип коллекции, который можно отсортировать. Алгоритм сортировки должен иметь дело только с целыми числами и булевыми значениями, и поэтому не видит и не заботится о том, каковы основные типы данных.
Пользователи когда-либо касаются Вашего кода? Если Вы не делаете только работы бэкенда, я рекомендую О Поверхности: Основы Пользовательского интерфейса Дизайн  — теперь в его третьем (связанном) выпуске. Я раньше думал, что мои пользователи были глупы, потому что они не "получили" мои интерфейсы. Я был, конечно, неправильно. О Поверхности изменил к лучшему меня.
Не книга программирования, но все еще очень важная книга каждый программист должен читать:
Руководство г-на Bunny по ActiveX
" Книжка-раскраска Фортрана" доктор Roger Kaufman (1978, ISBN:0262610264)
, Что глупое понятие - более основной, чем даже "Фиктивная" книга! Но это работает на любой язык (с некоторыми Фортран определенные примеры, конечно), объясняя фундаментальные понятия логики, переменных, i/o, и т.д. очень понятным и "Крайне Забавным" способом.
достаточно получить десятилетнего, заинтересованного программированием...
(Найденный фотографией с обложки на учетная запись пользователя Flickr )
Программные инструменты Brian W. Kernighan и P. J. Plauger
Это имело глубокое влияние на то, как я пишу программное обеспечение.
Отдельно, я упомянул бы Третий Манифест Hugh Darwen и главного судьи Date. Если Вы интересуетесь пониманием данные (который кажется редким среди программистов), эта книга является обязательным для чтения. Это также сделает Вас грустными, когда Вы поймете, как плохо поврежденный SQL, но это также поможет Вам справиться с той уязвимостью. Знание, как инструмент повреждается, позволяет Вам разработать с теми дефицитами в памяти.
Без определенного порядка кроме того, как они расположены на моей книжной полке:
Прагматически настроенный Программист: От Подмастерья Ведущему устройству без сомнения. Совет в нем так хорошо представлен и простой, с которым это сталкивается, как будто это был 'Разумный Программист'. Любите его.
Masters гибели. , Насколько мотивация и любовь к Вашей профессии идут: это не доберется немного лучше, чем, что было описано в этой книге, правдиво вдохновляющей истории!
В то время как я соглашаюсь, что многие книги выше являются должен-чтениями (Прагматически настроенный Программист, Мифический Месяц Человека, Искусство Программирования, и SICP сразу приходят на ум), я хотел бы войти в немного отличающееся направление и рекомендовать Дисциплина А Программирования Edsger Dijkstra. Даже при том, что этому 32 года, акцент на "дизайн для verifiability" очень релевантен (даже если "verifiability" означает "доказательство" вместо этого "модульные тесты").
Martin Fowler Рефакторинг: Улучшение Дизайна Существующего Кода было уже перечислено. Но я детализирую, почему это повлияло на меня.
сущность целой книги о структурировании кода так, чтобы было более просто читать и понять люди . Это учит меня сильно, что код, который я пишу, предназначен для моих коллег и преемников, чтобы использовать и возможно изучить что-то хороший из него. Это вдохновляет меня к сознательно программа в способе, который оставляет людей, хвалящих мое имя, и не проклинающих меня к проклятию для всей вечности .
Когда я начал разрабатывать в Java (и все еще делаю так к в тот же день), я должен был бы рекомендовать невыполненную работу в поле: Большой Кубок г-на Bunny o' Java.
От аннотации автора:
нет просто никакого лучшего способа изучить Java, чем иметь шишковидную железу опытного программиста Java, хирургическим путем имплантируемого в Ваш мозг. К сожалению, большинство HMOs отказывается платить за эту карьерную процедуру сохранения, считая Java, чтобы быть слишком экспериментальным. Наконец существует альтернативное лечение для тех из нас, кто не может ожидать широких реформ здравоохранения.
г-н Bunny’s Большой Кубок Java O’ рекомендуется n из десяти врачей, где n является любым целым числом, Вы хотите составить для произведения на удивительно легковерную общественность впечатление. Книга начинается с обзора книги, и быстро расширяется в саму книгу. Только посмотрите на затронутые темы:
- Java
Короче говоря, MBBCOJ будет учить Вас всех, что необходимо знать для успешной карьеры в today’s средах разработки кролика.
понимание одних только пикселей сократило бы годы от моего программного обеспечения, разрабатывающего жизнь.
Вероятно, "C для Макетов" vol 1, назад в 1997 или около этого. Просто введение действительно, но это было хорошее чтение, взяв вкус к программированию в GFA, Основном на ST Atari. Коронадо C учебное руководство в то же время помог также.
У меня есть несколько (довольно старых) сообщений в блоге на этом предмете
У меня есть несколько хороших книг, которые сильно влияли на меня, что я не видел в этом списке до сих пор:
Психология Повседневных Вещей Donald Norman. Общие принципы дизайна для других людей. Это, может казаться, главным образом хорошо для UI, но если Вы думаете об этом, это имеет приложения почти где угодно существует интерфейс, с которым кто-то помимо исходного разработчика должен работать; например, API и разработка интерфейса таким способом, которым другие разработчики формируют корректную умственную модель и получают соответствующую обратную связь от самого API.
Искусство программного обеспечения, Тестирующего Glen Myers. Хорошее, общее введение в тестирование программного обеспечения; хороший для программистов для чтения, чтобы помочь им думать как тестер т.е. думают о том, что может пойти не так, как надо и подготовиться к нему.
Между прочим, я понимаю, что вопросом была "Единственная Самая Влиятельная Книга", но обсуждение, кажется, изменилось на список хороших книг для разработчиков для чтения, таким образом, я надеюсь, что могу быть прощен за список двух хороших книг, а не всего один.
Применение UML и Шаблоны разработки.
Это помогло шаблонам разработки нажать мной и обеспечило выравнивание для UML, который имел смысл мне в формулировке 'UML как Эскиз'. А именно, это, UML должен использоваться в качестве краткого эскиза системы, которая обладает дополнительным преимуществом Вас не имеющий необходимость объяснить нотацию другим (они или уже знают UML или Вы даете им книгу UML для чтения)
Мифический месяц человека Fred Brooks http://en.wikipedia.org/wiki/The_Mythical_Man-Month
Существует много голосов за Завершенный Код Steve McConnell, но что относительно его Практические советы для освоения системы Проекта программного обеспечения книга? Я думаю, что они оба требуются, читая, но по разным причинам.
Другая книга, которая еще не была упомянута и ДОЛЖНА требоваться, читая для КАЖДОГО программиста, новичков на до гуру, на ЛЮБОМ языке программирования, является Безопасным кодом Записи Michael Howard (2-й Выпуск) от MSPress.
@Juan: Я знаю Juan, я знаю - но существуют некоторые вещи, которые могут только быть изучены путем фактического перехода к задаче под рукой. Разговор в абстрактных идеалах весь день просто превращает Вас в академика. Именно в приложении краткого обзора мы действительно grok причина их существования.: P
@Keith: Большое упоминание об "Обитателях Выполняет Убежище" Alan Cooper - сенсационное сообщение наверняка, любой разработчик, который работал со мной, так как я прочитал ту книгу, услышал, что я упоминаю идеи, которые это поддерживает. +1
Systemantics: Как Системная Работа и Особенно Как Они Сбой . Получите его, использовал дешевый. Но Вы не могли бы получить юмор, пока Вы не работали над несколькими неудавшимися проектами.
красота книги является годом авторского права.
, Вероятно, самый глубокий "закон" на дом представил в книге:
Фундаментальная Теорема Вида отказа (F.F.T).: Сложные системы обычно работают в виде отказа.
идея, являющаяся, это там приводит к сбою части в любой данной части программного обеспечения, которые маскируются отказами в других частях или проверками в других частях. Посмотрите реальный пример в машина излучения Therac-25 , чьи дефекты программного обеспечения были замаскированы аппаратными средствами failsafes. Когда аппаратные средства failsafes были удалены, состояние состязания программного обеспечения, которое пошло необнаруженное все те годы, привело к машине, уничтожающей 3 человек.
Этот не действительно книга для начинающего программиста, но если Вы ищете книги дизайна SOA, тогда SOA на практике: Искусство Дизайна Распределенной системы для Вас.
Я недавно считал Полный сновидений в Коде и нашел, что он был интересным чтением. Возможно, больше со дня я начал читать его, Chandler 1.0 был выпущен. Чтение о болезни роста и ошибках проектной группы талантливых людей, пытающихся "изменить мир", дает Вам много для приобретения знаний из. Также Scott поднимает много сведений программиста и мудрости, промежуточной, это - просто интересное чтение.
Красивый Код имел одну или две вещи, которые заставили меня думать по-другому, особенно глава по вершине вниз приоритет оператора.
Мастерство Definitively Software
сопроводительный текст http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg
Эта книга объясняет много вещей о разработке программного обеспечения, разработке системы. Также чрезвычайно полезно понять различие между другим видом разработки продукта: веб-термоусадочная пленка VS VS платформа IBM. Что имели в виду люди, когда они задумали водопадную модель? Считайте это и все, что мы станем ясными (надо надеяться)
Ремесло Кода Pete Goodliffe является хорошим чтением!
Pro Spring является превосходным введением в мир Инверсии Управления и Внедрения зависимости. Если Вы не знаете об этих методах и их последствиях - баланс тем и технической детали в Pro Spring превосходен. Это создает большой случай и последовательную персональную основу.
Другой книгой, которую я предложил бы, будет Robert Martin Гибкая разработка программного обеспечения (ASD). Запахи кода, гибкие методы, тестируют управляемый dev, принципы... правильно написанный баланс многих различных фасетов программирования.
более традиционная классика включала бы печально известные шаблоны разработки GoF , Bertrand Meyer Разработка объектно-ориентированного программного обеспечения , Booch Объектно-ориентированный анализ и проектирование , Scott Meyer " Эффективный C++ '" ряд и менее известная книга, которой я наслаждался Gunderloy, Кодер Разработчику .
И в то время как книги хороши..., не забывают радио !
... позволяют мне добавить еще одну вещь. Если Вы уже не обнаружили , сафари - смотрит. Это более захватывающе, чем переполнение стека:-), я нашел, что с моим Google вводят привычки - мне нужна более дорогая подписка, таким образом, я могу посмотреть на любую книгу в любое время - но я рекомендовал бы пробную версию любому даже удаленно заинтересованному.
(ах да, немного obj-C сегодня, какао завтра, шаблоны? soa? каков был тот пример в той поваренной книге? Что Steve говорил в 1110-секундном выпуске ? Я должен купить эту книгу?... подписка как здорово, если Вы хотели бы некоторую непрерывность и контекст к тому, что Вы гуглите...)