Днями використав композицію гіперболічного тангенса та полінома. Якщо саму композицію ще можна через graph калькулятор збагнути, то от коефіцієнти вже дзуськи. Без коментарів макітру можна довго чухати.
Інший приклад з проєкту. Кінцеві автомати. Хай якими пиши їх на таблицях переходів наочними, а вони однаково краще сприймаються графом. Тому все одно робиш стейт діаграми на Конфлюенсі й в коді на них посилаєшся.
Мій досвід про «документування кодом» свідчить, що це залежить від проєкту та домену. А подекуди й мови. Бо в плюсах буває коментую те, що в тому ж Гаскелі коментувати навіть на думку б не спало. Єдине певно з чим погоджусь, що краще взагалі без коментаря, ніж коментар беззмістовний, який не має цінності
Загалом слушне зауваження, проте не вирішує проблеми повністю, адже це O(2^n) реалізація, тож верхня межа там теж має бути дуже близенько. Та й хоч небезпечні варіанти там і виключені, але наявність мінуса поруч з unsigned мене одразу б напружила.
Краще лінійний варіант, DP bottom up. Жодних мінусів. Це єдине, що тут варте коментаря, як на мене. Щось типу // TODO: exponential version. DO NOT USE! you’ve been warned.
Пригадую, що колись навіть реалізував O(1) варіант, коли був знайшов статтю про використання генератрис у комбінаторних задачах. Та то вже радше вправа для leetcode.
І хоч я з автором на одній хвилі, для мене це скоріше приклад як краще не робити.
Та й цінність
fibonacci calculates Fibonacci series using recursion approach.
в мене особисто викликає сумніви, а надто в представленій формі, коли побіжний погляд відповідає на всі питання промовистіше за тисячі коментарів.
В самого проєкт, де часто трапляються коментарі штибу
struct A {
/**
* @brief Constructor of A
* @param Reference to B
*/
A(B& b);
};
Тож загалом я з автором погоджуюсь, бо мені беззмістовні коментарі лише заважають. Проте приклад обраний невдало, як на мене.
Залишу також допис, може хто відгукнеться. Бо сам сюди зайшов щоб те саме дізнатись.
Понял.
Если количество возможных ключей тоже 100, то, насколько я понимаю, какой нибудь gperf без проблем сгенерирует такую minimal perfect hash function with order preservation. А если возможных ключей >= 2^32 при всего 100 возможных значениях, то тогда главный вопрос не в том, как сделать итераторы, а в том как решать вопрос с коллизиями. И в этом случае по-моему легче сразу взять дерево и не морочить себе голову.
А поподробней про размер таблицы?
Есть хэш функции с сохранением порядка
Зачем мне реализовывать хэштаблицу с О(log n) + упорядоченность, если имея хорошую хэш функцию и размер я могу реализовать O(1)? Эффективность хэштаблиц именно в этом. Иначе можно просто напрямую пользоваться сбалансированным двоичным деревом
С помощью упорядоченных итераторов вы можете AVL tree превратить в структуру с поиском\вставкой за O(1)? Мне любопытно как
В принципе, достаточно помнить время поиска\вставки. Это уже много инфы для рассуждений. Сложность О(1) у хештаблицы уже вычеркивает бинарные деревья как вариант реализации, так как сбалансированное AVL или Red-black дерево это O(log n). Сложность O(1) только у массивов. Остается вопрос в адекватной хеш функции без коллизий.
Но я абсолютно согласен, что такие вопросы чрезмерны в подавляющем большинстве случаев. Я это знаю, потому что мне это было отдельно интересно. А в остальном для этого у меня в плюсах всегда была стандартная библиотека, где есть map/unordered_map. Мне встречались варианты собеседований, где вопросы по внутренностям алгоритмов и структур данных были крайне уместны. Первое это automotive отрасль, где один из ISO стандартов не разрешает пользоваться сторонними библиотеками. Поэтому, как я понял, очень много имплементить приходится самому. Второе — это у людей алгоритмы были реально must have, поскольку в проекте было много вычислительной геометрии, свои оптимальные реализации некоторых стандартных вещей и даже несколько патентов на эту тему. Во всех остальных случаях подобные интервью очень многое говорят не только о самомнении интервьюера, но и о серьезности самой конторы.
Помню как-то смотрел ролик от основателя LingQ, где он говорил об основной ошибке при изучении языка — люди сидят на учебных материалах слишком долго и многие так никогда и не окунаются в естественную среду языка, в то время как продираться сквозь непонимание языка оказывается гораздо эффективней. В том ролике он говорил, что на изучение своих первых 4х языков потратил столько же времени, сколько на остальные 12 впоследствии. Нашел его краткую статью на эту тему medium.com/...age-learning-6ebf26117be2
Ассоциациями пользовался, но самым эффективным для меня в итоге оказалось заучивание слов сразу в контексте фразы. Как-то был перерыв с норвежским и многие слова пришлось заново вспоминать. Но, например, фразы наподобие å stille et spørsmål (для датчанина, полагаю, без перевода понятно) намертво впечатались. К сожалению, учить фразами я начал уже после норвежского. Этому меня ирландский научил. Он значительно сложнее языков германских групп (англ., норв., датск.). Тут чтобы сказать простое спасибо тебе нужно знать о глагольных частицах, прошедших условных формах глагола и предложных местоимениях. А можно просто запомнить фразу go raibh maith agat. С ростом багажа фраз мозг постепенно самостоятельно учится разбирать их синтаксис, определять схожести\различия и проводить параллели. Так можно учить язык практически не заглядывая в грамматику. Полагаю, как-то так же мы все учим язык в детстве. Задолго до знания падежей и спряжений.
В остальном, если уровень языка уже позволяет смотреть фильмы и сериалы, то к описанному добавил бы еще чтение художественных и научно-популярных книг. Дает хороший качественный скачок, поскольку сталкиваешься с литературным текстом, зачастую красивым и богатым на формы и обороты.
heroku.com
Це не AWS у тому вигляді, в якому я його пам’ятаю, коли з ним працював. Швидше готовий онлайн контейнер: сам відстежує новий push в git репозиторій, запускає збірку і потім те, що зібрав. Можна залогінитись у bash.
Для більшості мов, наскільки я розумію, є готові білдпакі, тобто образ з pip для python проекту, node.js для node проекту и т.і. В моєму випадку був haskell. Білдпак із haskell stack знайшов на стороні і без проблем запустив веб сервіс на yesod. Все було безкоштовно.
Мне нравится, как это частично показано здесь
Шикарно, спасибо!
Отличный образец научпопа
Оговорился. Конечно же научной фантастики.
Я думаю, что тут неслабое влияние оказывает рынок, в котором большинство из нас работает: то бишь аутсорс и аутстаф.
Возможно. Признаться об этом не задумывался. А может дело в том, что в моих областях все меняется не так стремительно, как в iOS. В Хаскеле от самого концепта, описанного часто формальным языком абстрактной алгебры, до первой удачной его реализации в виде библиотеки порой можно обнаружить разрыв в пару лет, а то и
К слову, что касается литературы по саморазвитию, то тут тоже книга книге рознь. Например, автобиографию Бенджамина Франклина я бы даже сейчас не задумываясь посоветовал любому.
Топим за нового Доктора и надеемся она будет так же крута как Теннант или Смит!
+