Как хорошо вы знаете стандартную библиотеку?

    Вопрос возник, потому что сам очень плохо помню стандартные АПИ языков, на которых часто пишу (Python, Java, JS). Это снижает производительность и настораживает: доктор, а я один такой?

    В опросе верстальщики могут считать «стандартной библиотекой» атрибуты HTML-тегов и CSS-свойства.

    Only registered users can participate in poll. Log in, please.

    Как хорошо вы знаете стандартную библиотеку ваших основных языков?

    • 14.4%Отлично: заглядываю в документацию изредка868
    • 64.9%Твердо помню только самые основные функции, часто сверяюсь с документацией/подсказками в IDE3912
    • 19.1%Плохо: ни в чем не уверен, держу документацию открытой постоянно :(1151
    • 1.6%Другое97

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 82

      +1
      Потихотьку собираю что типа шпаргалки по часто используемым API и сниппетам кода.
      Потом распечатаю большой плакат и повешу перед собой на стену.
        +27
        Если что, вот полезная ссылка — OverAPI.com
          +4
          С/С++ раздел у них явно хромает, хоть бы ссылку на cppreference.com добавили
            +1
            Во как, и как такой ресурс мимо прошёл, непонятно! Спасибо огромное!
          +18
          Не вижу ничего ни плохого ни грустного в том, чтобы держать описание стандартной библиотеки всё время открытым. Если пишешь на нескольких языках регулярно (или не очень), невозможно просто всё это запомнить да и смысла нет.
            +5
            Поддерживаю, если пишешь на 5+ языках, знать досканально стандартную библиотеку даже одного языка просто нереально. Главное — понимать абстракции и структуру библиотеки, знать стандартный способ решения задач в языке. Ну и сделать редактор/среду разработки своим помощником :)
              0
              Полностью согласен и думаю, что скорее необходимо знать, что может библиотека в принципе. А уж всякие там конкретные сигнатуры, что они принимают — это дело техники. К слову замечу, что некоторые люди на собеседованиях (не хочу сказать, что эти собеседования бестолковые, но с ними явно что-то не так) проверяют не знание принципов, а чуть ли не порядок аргументов в методах.
            +41
            Знать всё досконально не обязательно. Главное — понимать все принципы и уметь быстро искать информацию.
              +3
              Ваши слова, да всем кадровикам бы в уши!
                0
                А еще лучше все помнить и уметь быстро вспоминать, тогда ваша ценность как специалиста резко пойдет вверх.
                К сожалению, судя по статистике, мы далеко не все так можем.
                  0
                  Если сдавать сертификационные экзамены, то память быстро улучшается :-)
                    0
                    Но ненадолго :(
                      +1
                      Это скорее относится к категории зазубривания. Такие знания легко теряются если не подкреплены практикой и хорошим пониманием.

                      Для меня важны три вещи, чтобы помнить долго или «вечно»:
                      1. Получить информацию.
                      2. Понять ее не просто на уровне базового понимания и высоких абстракий, а на «аппаратном» уровне.
                      3. Опробовать на практике.

                      Что собственно ведет к коментарию iLLuzor.
                0
                Персональная база знаний FTW. С годами груз изученных технологий накапливается, ассортимент одновременно используемого становится все шире, и держать в голове даже тривиальные C++/stl/python/django/twisted/html/css/javascript/jquery одновременно и в достаточном объеме уже не получается :(.
                  0
                  Вы не один такой. 2 варианта:- либо стареем, либо прогрессируем (… и пользуемся большим кол-вом технологий, чем можем досконально изучить).
                    +37
                    Случай из жизни, рассказывал отец товарища, работавший одно время на Байконуре.
                    Старший специалист спрашивает младшего про микрик (микровыключатель с несколькими выводами, где в одном состоянии замкнута одна пара выводов, а в другом другая):
                    — Помнишь, когда какие контакты замкнуты?
                    — (подумав) Нет, не помню.
                    — Правильно, нельзя помнить! Только сверяться с документацией.

                    В космосе, конечно, требуется надежность более высокого уровня, чем в обычном ПО, но все равно не понимаю грустный смайлик в третьем варианте.
                      +1
                      В программировании чаще полезно помнить, потому что компилятор или интерпретатор случаи перестановки аргументов, допустим, быстро выявит.
                        +10
                        Не факт. Даже если это язык с сильной типизацией — параметры могут быть одного типа.
                          +13
                          Забавный случай из своей практики: я довольно неплохо помнил стандартный API модуля QtGui, и большинство функций писал на автомате, не заглядывая в доки. И написал как-то диалог подтверждения об удалении с маской QMessageBox::NoButton | QMessageBox::Yes, доверяя автокомплиту и отрывочной памяти. все верно — почти, только QMessageBox::NoButton — это отсутствие кнопки, соответственно диалог подтверждения выглядел как «Удалить сверхважное? Да!»
                            +8
                            В истории порадовало еще то, что наконец-то «API» (интерфейс) мужского рода, а не среднего :)
                              +5
                              Междумордие — оно
                            0
                            Меня вот бесит, что у fputs, fread и fwrite файл в конце пишется, а у fprintf и fscanf — в начале. Да, у fprintf и fscanf varargs, но можно было остальные функции подогнать под них. Вообще, ставить файл в начало логичнее: сначала выбираем, какой файл, а потом указываем, что с ним делаем (я говорю про код, а не про направление аргументов у cdecl). Более объектно-ориентированно.
                              0
                              Это тяжёлое наследие Unix.
                          +4
                          Редко ищу в документации (основной язык PHP) «вроде была функция которая это делает», но часто (обычно средствами IDE) ищу точное название, порядок аргументов и т. п. Но открыв однажды документацию редко закрываю её до очередного ребута.
                            +2
                            Во-во! Логика именования и порядок аргументов в функциях PHP настолько суровые, что приходится постоянно уточнять.
                            +9
                            Кажется, что знаешь все основные моменты, пока не возникает необходимость набрать код в простом текстовом редакторе. Без автокомплита, без сниппетов и подсказок. Тогда можно затупить над банальными вещами, которые впрочем легко гулятся.
                              –55
                              Я ваще так же без понятия API ява питон и скрипт, поэтому когда таки приходится писать на этом изврате, то не использую никаких либ а все велосипеды пишу вручную. Ибо лень читать доки по эти говноязыкам.
                              • UFO just landed and posted this here
                                  +5
                                  Что такое
                                  ява питон
                                  ?
                                  +1
                                  что же тогда не изврат по-вашему?

                                  И кстати, стандарты явы много куда перенесены из-за их удобства, так что вы явно ошибаетесь.
                                    0
                                    Там есть inline assembly для системных вызовов?
                                      0
                                      Пишите в машинных кодах по памяти, да? :-)
                                      0
                                      У меня все IDE помнит, ориентируюсь по подсказкам, автокомплиту. В официальные доки по API не помню когда последний раз глядел.
                                        +2
                                        хех а новые API порой упрощают жизнь местами =) хотя конечно и «по старинке» тоже можно успешно прожить… но всё-таки чейнджлоги новых API читать необходимо для большей продуктивности =) ИМХО
                                          0
                                          В Java 7 try-with-resources мно-ого кода экономит. :-) И прозрачность повышает.
                                          Так что все-таки новые фичи имеет смысл знать.
                                          +1
                                          msdn всегда открыт на втором мониторе…
                                            0
                                            as3/flex: Лезу в документацию очень редко, когда нужно сделать какую-нибудь крайне нестандартную вещь.
                                            web&c#/wpsdk: твердо знаю только основы.
                                              0
                                              В 98% случаев знаю нужное свойство, атрибут, правило, метод. Это, как мне думается, из-за развитой фотографической памяти.

                                              2% — те случаи когда доходит до редко используемого, например, CSS правила white-space, значений для которого, на данный момент, я могу вспомнить только два — inherit и nowrap.
                                                0
                                                У меня память больше позиционная, но результат примерно такой же. :-)
                                                Только в Java.
                                                0
                                                Не то чтобы не получается запомнить, как-то не думаю об этом, но иногда ловлю себя на мысли, что забыл совсем простую вещь.
                                                Пытался конспектировать важные и частоиспользуемые вещи в Zim, но не прижилось.
                                                А чем пользуетесь вы?
                                                  0
                                                  Официальной документацией :) Смысл конспектировать, есои гуглится быстрее чем конспекты ищутся :)
                                                    0
                                                    Да кто ж его знает, может есть какой крутой инструмент для добавления сниппетов/заметок.
                                                    0
                                                    Лучший способ развить память — решать всякие задачки на знание спецификации.
                                                    Для Java на эту тему есть Java Puzzlers, например.
                                                    А также примеры сертификационных экзаменов.
                                                    +3
                                                    Я пишу на питоне, у меня постоянно в одной консоли открыт ipython. Право, быстрее переключиться в другую консоль, нежели сидеть и читать доки в браузере.
                                                      0
                                                      К сожалению, некоторые модули задокументированы непонятно или неполно.
                                                        0
                                                        Ну под рукой же интерпретатор и сам скриптовый язык. Можно попробовать всегда выполнить что-то. А если совсем все плохо — залезть в исходники.
                                                      +1
                                                      Вам верстальщики могут весь опрос исказить. Это все же не тоже самое что программирование, даже просто по объему и взаимозаменяемости.
                                                        +7
                                                        Результаты опроса отразят не реальное знание разработчика, а его мнение об этом знании.
                                                        Например, человек может считать, что хорошо помнит стандартную библиотеку и не заглядывать даже в документацию. А на самом деле, он может не догадываться о существовании многих полезных модулей и ими не пользоваться.
                                                        Другой же, может изучить практически всё и часто прибегать к документации, вспомнив, что под его текущую задачу где-то что-то в библиотеке было.
                                                          0
                                                          Нет смысла засорять оперативную память мозга информацией, которая требуется редко и, при необходимости, может быть легко добыта из внешних источников. Если же информация применяется в работе часто, она сама перемещается в оперативную память с целью оптимизации, т.е. сокращения времени доступа.
                                                            +2
                                                            Особенно раздражают вопросы по на собеседовании типа «какие методы есть у класса Object». Это что, знание наизусть апи как-то характеризует меня как качественного программиста?
                                                              +2
                                                              Это уже не знание фреймворка, а знание основ среды.
                                                                +2
                                                                Может это вопрос на сообразительность? Можно ведь что-то в ответ предположить.
                                                                Хотя, зачем я себя обманываю, многие и правда такое спрашивают, всерьез считая это мерилом компетентности.
                                                                  +3
                                                                  Если говорить о среде .NET, то большинство методов класса Object регулярно используется на практике. Если человек не знает этих методов, можно сделать вывод о низкой сложности и малом разнообразии задач, которые решал этот человек. На мой взгляд, это не может быть плюсом.
                                                                    +1
                                                                    Понятно, что ценность этих конкретных знаний зависит от платформы. Думаю, Vitamon имел в виду вопросы на зубрёжку.
                                                                  0
                                                                  Не поверишь — недавно задал себе этот вопрос, и в ответе совершенно забыл про finalize() (Java) :-)
                                                                  Долго смеялся.
                                                                    0
                                                                    Часто про finalize() лучше не вспоминать.
                                                                  0
                                                                  Пишу на AS3, в документацию заглядываю в среднем раз в неделю
                                                                    +10
                                                                    В стандартной библиотеке основного рабочего языка (D) есть мой код :)
                                                                      0
                                                                      D это замечательно.
                                                                      А какого рода программы вы пишете, если не секрет?
                                                                    0
                                                                    точно знаю что есть, не помню точно названия методов, порядок параметров…
                                                                      +1
                                                                      Нет пункта «не использую стандартную библиотеку» :)
                                                                        0
                                                                        «Другое»
                                                                          +3
                                                                          Другое может значит что угодно, например «я домохозяйка».
                                                                        +1
                                                                        Если не знаешь — прочти документацию, если думаешь что знаешь — прочти два раза.
                                                                          0
                                                                          А если знаешь — проверь на частные случаи :-)
                                                                          +1
                                                                          Не нашел своего варианта: «Отлично знаю, но постоянно держу открытой документацию, чтобы не напрягать мозг когда это не нужно»
                                                                            0
                                                                            помниться фраза «Математик не обязан помнить все константы» (но должен уметь их вычислить).
                                                                            Программист не тот, кто помнит всё наизусть, а тот кто знает что и как можно сделать, а мелочи типо параметров функций всегда можно найти в гугле.
                                                                              +4
                                                                              Ха! стандартная библиотека… Тут приходится гуглить, порой, как в каком языке строчку к строчке прилепить… то "+", то "||", то ".", то вообще ".concat()" или «CONCATENATE». Бесит!)
                                                                                +3
                                                                                NSString *helloWorld = [@"Hello" stringByAppendingString:@" world!"];
                                                                                
                                                                                  +1
                                                                                  Ну зачем так громоздко… короче ведь так:
                                                                                  char[] helloWorld = "hello" ~ " world!";
                                                                                    0
                                                                                    А "hello"" world!" в Objective-C не работает?
                                                                                0
                                                                                По памяти знаю только те вещи, который очень часто использую в коде, остальное либо гуглю, либо автокомплит в IDE помогает.
                                                                                  +1
                                                                                  Пишу на java и javascript, редко на python. В основном подсказками IDE пользуюсь, причем производительность возрасла, когда на столе появилась бумажка с хоткеями этой самой IDE :)

                                                                                  Мне кажется, важно знать основные концепции и подходы (как уже писали выше) и обязательно изучить инструменты разработки под свой язык. Хотя, с другой стороны, есть люди, которые комфортно пишут в простейшем текстовом редакторе и не чувствуют дискомфорта. Тут уж каждому свое.
                                                                                    +4
                                                                                    Мой папа будучи рабом физико-химических наук с 35-летним стажем, без понтов и степеней, не помнил почти ни одной формулы, кроме очень простых конечно. Зато имел магическую способность вывести, любую формулу на клочке бумаги за 20-30 секунд, потом задумывался и говорил что-то типа: «Так, тут еще коэффициент какой-то должен быть, наверное постоянна Больцмана». Мне первый раз это снесло голову, когда я эту формулу учил-учил и выучить не мог, а он настолько свободно понимает устройство мира в общем и конкретного процесса в частности, что создать формулу просто из воздуха, для него было нормальной рутиной.
                                                                                    Бессмысленно учить язык, но нужно чувствовать то, как он работает.
                                                                                      0
                                                                                      Аналогия не совсем точная. «Вывести» сигнатуру конкретного метода или его название, если не помнишь, нельзя. Вопрос главным образом в продуктивности. Я считаю, что неплохо знаю свои рабочие языки, но пишу код медленно, потому что постоянно отвлекаюсь на документацию.
                                                                                        +1
                                                                                        В наше время важнее быстро читать и находить ошибки при чтении, а также выстраивать в голове картину неизвестного доселе мира.
                                                                                        +1
                                                                                        Я также в школе развлекался на тему «сколько нужно знать формул, чтобы остальные быстро вывести».
                                                                                        Оказалось, 4 штуки. :-)
                                                                                          0
                                                                                          Плюс точное понимание, из чего и в каком порядке выводятся остальные формулы.
                                                                                          Но лучше, конечно, когда и первые формулы являются следствием понимания «устройства мира» — тогда вообще ничего не нужно помнить :)
                                                                                        +1
                                                                                        Десяток лет сижу на перле, и в среднем раз в несколько дней заглядываю в доку по поводу какой-нибудь банальной substr :) Неожиданностью для себя самого стало то, что со временем подобные функции из ходовых ушли куда-то на задний план и стали использоваться редко. И вроде бы я даже помню порядок ее аргументов, но проверить через доку и не ждать сюрпризов от отладки — имхо совсем не стыдно и в случае фейла выйдет гораздо дешевле, чем найти то же самое глазками.
                                                                                          +1
                                                                                          Когда кодишь постоянно, то помнишь большую часть стандартной библиотеки. По крайней мере ту часть которую хоть раз использовал в коде… Сейчас пописываю время от времени, приходится чаще заглядывать… Забывается…

                                                                                          Обычно смотришь список аргументов и порядок. Иногда проще забить, как помнишь. Если не прав, то либо компилятор/интерпретатор поправит, либо тесты… Тесты это наше всё…

                                                                                          Only users with full accounts can post comments. Log in, please.