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)
}
И теперь для любого настраиваемого типа вы можете создать соответствующий настраиваемый тип коллекции, который можно отсортировать. Алгоритм сортировки должен иметь дело только с целыми числами и булевыми значениями, и поэтому не видит и не заботится о том, каковы основные типы данных.
Набор это было, и оглушение. Edsger Dijkstra (с некоторой справкой от C.A.R. Hoare) мало Структурного программирования черного списка и particlarly эссе, названное "На Нашей Неспособности Сделать Много".
Мой учитель по математике средней школы предоставил мне, копия Является Вашей проблемой иллюстрации Световых сигналов , что я много раз перечитывал. Это было неоценимо как разработчик, и в жизни обычно.
На самом деле две книги выделяются. Первым был Завершенный Код. Несмотря на его возраст, это - все еще очень полезная книга, и глава по опасностям преждевременной оптимизации стоит цены книги самостоятельно.
второй был Психологией Повседневных Вещей (теперь названный Дизайном Повседневных Вещей, я думаю), который изменил способ, которым я думаю о пользовательских интерфейсах при разработке приложений. Это сделало меня более сфокусированным пользователями.
Этюды для программистов Charles Wetherell, больше жемчуга программирования (Jon Bently),
, Как Решить Его: новый аспект математического метода , Хотя не непосредственно связанный с программированием, но это действительно преподает Вам искусство решения задач и это - то, о чем программирование - все.
Я читаю теперь Гибкая разработка программного обеспечения, Принципы, Шаблоны и Методы . Для заинтересованных XP и Объектно-ориентированным Дизайном, это - классическое чтение.
сопроводительный текст http://ecx.images-amazon.com/images/I/519J3P8ANML._SL500_AA240_.jpg
Начинающийся C# 3.0: Введение в Объектно-ориентированное программирование
Это - книга для тех, кто хочет понять whys и как имеет ООП с помощью C# 3.0. Вы не хотите пропускать его.
Я видел обзор Фабрики программного обеспечения: Собирая Приложения с Шаблонами, Модели, Платформы и Инструменты на блоге, говорящем также приблизительно Фабрика КСИ , я считал его, и я должен сказать, что эта книга - необходимость чтение. Altough не конкретно был нацелен программистам, он объясняет очень ясно, что происходит в мире программирования прямо сейчас с Управляемой Моделью Архитектурой и так далее..
Вот превосходная книга, которую как широко не приветствуют, но полна глубокого понимания: Гибкая разработка программного обеспечения: Совместная Игра , Alistair Cockburn.
, Что является настолько особенным об этом? Ну, ясно все услышали термин "Гибкий", и это кажется, больше всего верующие в эти дни. Верите ли Вы или не, тем не менее, существуют некоторые глубокие принципы позади, почему Гибкое перемещение существует. Эта книга раскрывает и ясно формулирует эти принципы точным, научным способом. Некоторые принципы (btw, это мои слова, не Alistair):
существует настолько больше там также. Я замолчу теперь, но я Настоятельно рекомендую эту книгу!
Один из моих личных фаворитов - Hacker's Delight , потому что читать его было так же интересно, как и познавательно.
Я надеюсь, что второе издание выйдет в ближайшее время !
В прошлом году я взял несколько уроков. Я прочитал
Дилемма новатора (прорывные технологии)
Мифический месяц человека (программное обеспечение для управления)
Преодоление пропасти (запуск)
Системы управления базами данных, Книга КОРОВЫ
Программирование на C #, СТРАСТЬ Книга
Начинающие разработчики iPhone, Книга ГРЕЙПФРУТ
Каждая книга была потрясающей, но «Дилемма новатора» Клейтона Кристенсена (1997 !!!) - действительно фантастическая книга, и она заставила меня задуматься о современном мире программного обеспечения. Решается проблема подрывных технологий и того, как производители дисковых накопителей и нетехнические компании всегда сталкиваются с новыми, меняющими правила игры технологиями. Это дает новый взгляд на то, что думаешь о Google, возможно, самой большой "веб-компании". Почему они приложили руку ко ВСЕМУ? Это' s потому что они не хотят, чтобы их положение было нарушено чем-то новым. Предварительного просмотра в Google достаточно, чтобы понять суть. Прочтите!
Объяснение экстремального программирования: Примите перемены Кента Бека. Хотя я не сторонник хардкорного подхода к разработке программного обеспечения, основанного на XP, мне жаль, что меня познакомили с принципами, изложенными в этой книге, гораздо раньше в моей карьере. Модульное тестирование, рефакторинг, простота, непрерывная интеграция, стоимость / время / качество / объем - все это изменило мой взгляд на разработку. До Agile все было связано с отладчиком и боязнью запросов на изменение. После Agile эти демоны не казались такими большими.
Практика программирования. Авторы Брайан В. Керниган, Роб Пайк.
Показанный здесь стиль превосходен - код говорит сам за себя, и вся книга следует принципу KISS. Лично я не предпочитаю языки, но все же оказал на меня влияние.
хакеры, Стивен Леви.
Личность и образ жизни должны быть на первом месте. Все остальное можно изучить.
Очень хорошая книга. Имеет высокий вкус к важнейшим областям информатики. Да, CS != программирование, но она все равно полезна каждому программисту.
Типы и языки программирования Бенджамина С. Пирса за глубокое понимание основ языков программирования.
Практика программирования
и
Как решить это с помощью компьютера
Мне вспоминаются три книги.
Мне также нравится сочинение Пола Грэма.
Элементы программирования Kernighan & Plauger Стиль . Он иллюстрирует разницу между хитроумным умом и элегантным умом.
Совершенное программное обеспечение: и другие иллюзии по поводу тестирования
НАЗВАНИЕ Обложка http://ecx.images-amazon.com/ images / I / 51j3BSRspAL._SL500_AA240_.jpg
Совершенное программное обеспечение: и другие иллюзии по поводу тестирования Джеральда М. Вайнберга
ISBN-10: 0932633692
ISBN-13: 978-0932633699
«Практика программирования» Брайана Кернингана и Роба Пайка.
Язык простой, а также тема интересная.
Design Concepts in Programming Languages Ф.А. Турбака дает подробную реализацию многих концепций программирования и очень полезен для понимания того, что происходит под капотом.
Обратная сторона салфетки , автор Дэн Роам .
Обратная сторона салфетки http://www.coverbrowser.com/image/bestsellers-2008/302-7.jpg
Великая книга о техниках визуального мышления. Также существует расширенная редакция. Я не могу говорить об этой версии, так как не владею ею; пока что.
Я прочитал большинство книг, получивших высокие оценки по этому вопросу, но не все из них (слава Богу!), А остальные я добавил в свой список желаний Amazon прямо сейчас!
(Кто-то должен создать список этих книг на Amazon ... Может быть, список с названием: «Лучшие книги Stackoverflow на свете»? Кто-нибудь знает, как это сделать? )
Для меня лучшей книгой была Code Complete . Это было откровением. Я купил 2-е издание на английском, а затем на французском, и я до сих пор считаю, что это обязательное чтение в любой школе информатики. Структура данных - это круто, но полный код, без шуток, гораздо важнее ...
Затем моей второй лучшей книгой была Написание твердого кода - когда я научился понимать, было здорово узнать как писать надежный код.
Тогда много очень хороших книг, но не о ком здесь упоминать. До 2001 года я думаю: Рекомендации по разработке фреймворка : соглашения, идиомы и шаблоны для многоразовых библиотек .NET. Жемчужина! Я читал эту книгу много раз, и она все еще лежит у меня на столе, рядом с моим ЖК-дисплеем, вместе с Code Complete (правда!). Мне нравится, как это было написано (люблю комментарии, которые были добавлены здесь и там - все книги должны быть написаны именно так!)
Но что ж, я забыл самые первые великие книги, которые я прочитал! Те, кто заставляют меня любить информатику страстно:
Ну, отличный вопрос: o)