Сохранен F 89
https://2ch.hk/pr/res/368316.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Невероятная подготовка к собеседованию

 Аноним Пнд 07 Июл 2014 21:10:59  #1 №368316 
1404753059931.png

Привет. Я, как и многие здесь, являюсь студентом и пришла пора устраиваться на работу. Поэтому я бы хотел узнать у вас что спрашивают на собеседованиях. Особенно интересует C++/Cможет быть Perl еще и что в себя включает "знание и опыт работы в Linux". Также хотелось бы узнать о каких алгоритмах спрашивают, кроме сортировок.
Я, например, могу составить небольшой список по вопросам о C#. Вообщем пишите и я буду обновлять/испралять список. В конце треда у нас будет небольшой FAQ, который будет полезен новичкам.
Ну и прошу писать по делу. А вообще, кулстори тоже приветствуются.

Аноним Пнд 07 Июл 2014 21:24:34  #2 №368325 

Вот то, про что спрашивали о C#:
Основы ООП.
Наследование, инкапсуляция, полиморфизм
Модификаторы доступа. Спрашивали когда какие ставятся по дефолту.
Что такое интерфейс.
Что такое абстрактный класс.
Что такое static. Спрашивали тупые вопросы вроде можно ли создать экземпляр static класса.
Наследоваться от нескольких интерфейсов, абстрактных классов.
Спрашивали про некоторые известные интерфейсы, вроде IComparable, IEnumerable...
Спрашивали что-то про virtual.
Спрашивали про некоторые коллекции.
Когда какую структуру данных нужно юзать.
Спрашивали про Generics.
Спрашивали про многопоточность.
Спрашивали про лямбда выражения, делегаты, вот это всё.
Спрашивали про события.
Спрашивали про свойства что-то насчёт get/set и их модификаторы доступа.
Спрашивали про LINQ.
Спрашивали про то, какие базы данных юзал.
Спрашивали про сериализацию(XML, Json).
Спрашивали что-то про сборки, про директивы препроцессора C#. Всякие там #if, #else, #warning, #error. И что-то про дебаг/релиз. Типа что нужно написать, чтобы какая-то часть кода работала только в дебаге.
Спрашивали еще про await, async.

Добавляйте что-то еще, дополню список.
Повторю еще раз, что очень хотел бы знать что хотят услышать от C/C++/Perl Junior'a. И про какие-то знания о Linux'e. Просто я всегда юзал Windows, а сейчас решил перекатиться.

Аноним Пнд 07 Июл 2014 22:24:08  #3 №368339 
1404757448507.png

>>368316
СОБЕСЕДУЕШЬСЯ НА ШАРПОДЖУНИОРА
@
НАПИШИТЕ ФУНКЦИЮ, КОТОРАЯ РАЗВОРАЧИВАЕТ МАССИВ
@
ЧТО ТАКОЕ АЙЕНАМЕРАБЛ
@
УДИВЛЯЕШЬСЯ ЛЕГКИМ ВОПРОСАМ
@

Есть 100этажный дом и 2 одинаковых стеклянных шара. Шар разбивается, если его сбросить с какого-то n-го этажа, если с (n-1)-го - не разобьется. Если есть 2 шара, то как их надо бросать, чтобы минимизировать число попыток в худшем случае. Например, если бы был 1 шар, то в худшем случае было бы 100 попыток, потому что пришлось бы просто перепробовать все этажи.
@
Представьте, что вокруг Земли по экватору намотана проволока. Ее длина 40000 км. Длину проволоки увеличили на 1м, и она стала парить над Землей, везде на одинаковом расстоянии от поверхности. Можно ли в образовавшееся отверстие просунуть кулак?
@
ЭЭЭ, НУ НЕ ЗНАЮ, ВРОДЕ МАЛЕНЬКАЯ ДЫРКА

Аноним Пнд 07 Июл 2014 22:42:16  #4 №368342 

>>368339
Ну вторая задача вроде элементарная.
2pr1 = 40 000 000
r1 = 20 000 000 / p
2pr2 = 40 000 001
r2 = 20 000 001 / p
length = r2 - r1 = 31 см
Ну, наверное, можно.Если это мой кулак.
А первую как решать? Я только такое решение придумал. Кидаем шар с первого этажа и с этажа n/2. И потом также только уже с половиной. Ну, рекурсивно, как-бы. В итоге получается log2n.

sageАноним Пнд 07 Июл 2014 22:42:46  #5 №368343 

>>368339
Прикольные задачи, зачем ты их сюда приплел?

Аноним Пнд 07 Июл 2014 22:46:42  #6 №368345 

>>368339
И, кстати, развернуть массив то как правильно?
Так?
for(int i=0; i<arr.length/2; i++){
var member = arr;
arr = arr[arr.length-i-1];
arr[arr.length-i-1] = member;
}

Аноним Пнд 07 Июл 2014 22:48:24  #7 №368346 

>>368345
Не отобразился индекс почему-то. arr[ай], конечно же, вместо arr.

Аноним Пнд 07 Июл 2014 22:48:52  #8 №368347 

~ 16 см, а не 31.

Аноним Пнд 07 Июл 2014 22:51:40  #9 №368348 

>>368347
Вроде нет. На дефолтном калькуляторе Windows7 посчитано. Почему у тебя в 2 раза меньше? Это же радиус.

Аноним Пнд 07 Июл 2014 22:56:22  #10 №368349 

>>368348
Потому что 40 000 001 / 2 != 20 000 000, а = 20 000 000,5

Аноним Пнд 07 Июл 2014 22:56:24  #11 №368350 

>>368343
Затем, что у меня это СПРОСИЛИ НА СОБЕСЕДОВАНИИ. Нет, не на учителся математики, на шарподжуниора.
>>368342
Вторую я тоже решил, просто я в ахуе от того, что такое спрашивают.
>А первую как решать? Я только такое решение придумал. Кидаем шар с первого этажа и с этажа n/2. И потом также только уже с половиной. Ну, рекурсивно, как-бы. В итоге получается log2n.

Я тоже сначала думал про бинарный поиск, но если шар разбивается, его уже не вернуть. Могу сказать, что ответ 14. Как кидать не скажу :3

>>368345
Ну что-то типа того. Я еще сначала сказал .Reverse().ToArray(), но чувак мне сказал свой метод написать.

Аноним Пнд 07 Июл 2014 22:58:49  #12 №368352 

>>368342
Шара же только два. Я думаю нужно сначала повышать шагами, как только первый шар разобьется то вернуться на шаг назад и повышать по еденичке пока не рабоьется второй. Если вероятность этажа на котором шар разобьется равномерная, то разбив все этажи на N групп, d среднем потребуется N/2 броска что бы разбить первый шар (если начинать снизу естественно) и 100/(2*N) бросков что бы разбить второй шар. Общее количество бросков N/2 + 100/(2*N), производная 1/2 - 100/(2*N^2) равна нулю в точке N = 10, следовательно выгоднее всего разбить этажи на 10 груп. Это если распределение равномерное.

Аноним Пнд 07 Июл 2014 22:58:55  #13 №368353 

>>368349
А, блять. ЛОЛ. Тупанул да.

Аноним Пнд 07 Июл 2014 23:02:20  #14 №368354 

С окружностью таких ебаных расчетов проводить не нужно, же. Если длина окружность увеличивается на l, то ее радиус увеличивается на l/(2*pi), без раницы какой длины окружность.

Аноним Пнд 07 Июл 2014 23:04:14  #15 №368356 

>>368352
Да, ты прав. Я минуты через 2 тоже сказал, что надо бросать 1й шар с интервалом в 10 этажей, потому что 10 это корень из 100. Так-то это оптимальное решение, но тут надо еще минимизировать максимальное число попыток. Вот если у тебя 1й шар разбился на 10, то тебе придется 2й бросить еще 10 раз в худшем случае, итого 11 попыток. А если 1й разиблся на 100, то там в худшем случае будет 20 попыток.

Аноним Пнд 07 Июл 2014 23:06:18  #16 №368358 

>>368350
Приняли хоть?

Аноним Пнд 07 Июл 2014 23:07:28  #17 №368359 

>>368352
Можешь объяснить математически причём тут производная? Я помню из матана экстрэмумы, точки максимума и всё такое, но почему мы тут применяем это?

Аноним Пнд 07 Июл 2014 23:10:02  #18 №368361 

>>368356
Откуда 20, 11? Там же максимум 10 раз для первого шара и потом через 1 этаж, то-есть максимум 4 раза, так как 1 этаж из этой группы уже проверен. Разве нет?
другой кун

Аноним Пнд 07 Июл 2014 23:11:20  #19 №368362 

Двачую вопрос ОПа про Линукс.
Меня уже с двух собеседований за неделю пидорнули за то, что нет опыта работы на нем.
Причем на вопросы про язык, алгоритмы и библиотеки я вполне удачно отвечал как никак ~15 собеседование за последние 3 года, лол, но вот тот факт, что на предыдущих работах кодил лишь под винду их не устроил пробовался на c++ миддла, 2 года опыта.
Можно ли как-нибудь узнать что там нужно вообще понимать и уметь без ебли с установкой Федоры и прочими красноглазными компиляциями ядра штуками?

Алсо вопрос про стеклянные шары спрашивали на собеседовании в Яндекс. Ты не туда пробовался, ОП?

Аноним Пнд 07 Июл 2014 23:38:24  #20 №368370 

>>368339
Да, т.к. высота проволоки над поверхностью будет 0,15915494309189533576888376335284 метра.

Аноним Пнд 07 Июл 2014 23:45:31  #21 №368374 

Бросаем до половины, если разбился, то второй начинаем бросать с 1-го этажа вверх, если не разбился, то с 50-го вверх. В общем случае, та же линейная сложность, где вы там логарифмическую находите, хуй знает.

Аноним Втр 08 Июл 2014 00:07:48  #22 №368396 

Еще появилась идея посчитать вероятности, по типу, как в доказательстве QuickSort. Так как распределение, очевидно, равномерное, то должно получиться что-то на базе натурального логарифма.

Аноним Втр 08 Июл 2014 00:30:14  #23 №368412 

у меня токая хуйня получилась с первой задачей:
http://ideone.com/u1IbNN

Аноним Втр 08 Июл 2014 00:37:03  #24 №368420 

>>368362
Если ты не идешь писать софт конкретно под линукс, то скорее всего требуется знание командной строки, баш-скриптинга и общего представления о работе линуха.

Аноним Втр 08 Июл 2014 00:55:04  #25 №368428 

>>368412
не, шаг необязательно должен быть фиксированным

Аноним Втр 08 Июл 2014 01:02:26  #26 №368433 

>>368339
>100 этажный дом
>проволока
Я ебал. HR совсем пизданулись

Ребята Аноним Втр 08 Июл 2014 01:21:44  #27 №368445 

Расскажите пожалуйста что должен знать С/С++ Junior? Ну вот были у меня в универе плюсы, но мне кажется, что я нихуя не знаю. Что мне вообще учить? Какие темы? Нюансы?
Хорошо бы, если кто-то написал еще про Perl что-то.
На хедхантере же куча вакансий с такими требованиями. Наверняка, тут есть ребята, которые ходили на подобные собеседования.

Аноним Втр 08 Июл 2014 01:36:57  #28 №368450 

>>368445
Ну я ходил.
Читай Страуструпа, потом Мэйерса и Саттера.
Удели внимание полиморфизму, RAII и шаблонам (про метапрограммирование почитай еще).
Обязательно посмотри алгоритмы например в Кормене.
Пойми как строится и зачем нужны бинарные кучи, хэш и деревья поиска.
Ну еще и про STL почитай у того же Мэйерса.
Удачи.
Хуй знает где ты там нашел кучу вакансий жуниорских на плюсы, я в свое время чуть жопу не порвал, пытаясь хоть что-то найти, имея при этом неплохие теоретические знания и отсутствие опыта.

Аноним Втр 08 Июл 2014 02:50:14  #29 №368462 

>>368450
А если не конкретно про С++, к примеру? То есть что вообще должен знать ПРОГРАММИСТ?
Вот закончил второй курс вузика, а в голове имею только основы синтаксиса С++ вместо каких-то более-менее полезных знаний, и у меня бескрайне бомбит от людей, которые начинают работать уже со второго курса.
В общем, пытаюсь заниматься самообразованием, но охуеваю от того, сколько всего мне надо знать, чтобы хоть что-то уметь.

Ну и вопрос в том, в каком направлении стоит двигаться для начала? Скажем, почитать Кнутта? Или вообще удариться в основы математики потому что она у меня несколько проёбана, лол? Что вообще реально нужно при разработке реального ПО?
К примеру, я думал угореть по джаве и приложениям под андроид, но ведь язык -- всего лишь средство, и в любом случае мне нужно иметь какие-то основы.

Аноним Втр 08 Июл 2014 05:00:00  #30 №368464 

>>368462
О, я как раз на плюсы устроился жуниором после второго курса. Учи STL, бусты неплохо, но вообще на работе разберешься. В общем базовые вопросы синтаксиса, типа RAII, эксепшны, что надо в классе перегрузить чтобы можно было в тот или иной контейнер запихнуть, ну вот такого сорта.

Аноним Втр 08 Июл 2014 09:10:43  #31 №368469 

>>368462
> при разработке реального ПО?
При разработке реального ПО нужно уметь разбираться в области, для которой это ПО пишется, и уметь сформулировать ТЗ для кодомакак, которые будут реализовывать. То есть настоящий разработчик - это не тот, кто знает "синтаксис С++", его можно вообще не знать.

Аноним Втр 08 Июл 2014 09:38:38  #32 №368474 

>>368462
>что вообще должен знать ПРОГРАММИСТ
Алгоритмы (что подразумевает владение математическим аппаратом). Еше полезно представлять себе, как работает компилятор и во что он, собственно, компилирует.

Аноним Втр 08 Июл 2014 09:53:30  #33 №368481 

>>368469
>при разработке реального ПО нужно уметь разбираться в области, для которой это ПО пишется, и уметь сформулировать ТЗ для кодомакак
совок не палится
в реальности всё зависит от задачи
достаточно распространена ситуация, когда важны тонкости реализации, а ТЗ при этом очень простое

IDE Аноним Втр 08 Июл 2014 18:53:15  #34 №368662 

А какую среду разработки для C/C++ посоветуйте? У меня стоит вижуал студия, но там же какой-то компилятор странный и вообще там visual c++.

Аноним Втр 08 Июл 2014 20:23:41  #35 №368698 
1404836621649.jpg

>>368358
Не приняли. Никакого батхёрта, кстати. 2 курс, живу с мамкой, могу и не работать.

Аноним Втр 08 Июл 2014 20:26:03  #36 №368701 

>>368662
Чем странный-то? Норм все. Еще есть какой-то плагин Tomato Visual Assist или че-то такое, погугли про него.

Аноним Втр 08 Июл 2014 21:10:39  #37 №368706 

>>368481
В реальности, формулировка ТЗ, формализация требований, контроль качества, и так далее - это целые дисциплины, которыми занимаются отдельные профессионалы.

Аноним Втр 08 Июл 2014 21:11:04  #38 №368707 

>>368662
VS либо eclipse c плагином для c++. Во всем остальном чего-то не хватает.

Аноним Втр 08 Июл 2014 21:12:16  #39 №368708 

>>368707
>Во всем
"Всем" fix

IDE Аноним Втр 08 Июл 2014 21:29:30  #40 №368714 

>>368701
>>368707
А что вы скажете про Qt? Вроде видел в вакансиях кое-где. Но там нужно разбираться еще с какими-то либами, да?

Аноним Втр 08 Июл 2014 21:48:48  #41 №368721 

>>368316
Знание и опыт работы в линупсе подразумевает разное.
Очень часто, если целевая платформа - *nix (Linux, xBSD, Solaris, HP-UX и т.п.) - разработчики реально используют линукс в качестве воркстейшена.
В случае быдлокодерства на похапе - обычно речь идёт о том чтобы ты не сел в лужу с элементарными правами доступа, путями и case-sensitivity файловой системы на серваке.
Ну и иногда о том что тебе придётся с нуля разворачивать свой говнокод на VDS, пользуясь одним ssh/scp.

Аноним Втр 08 Июл 2014 21:50:10  #42 №368723 

>>368714
>какими-то либами.
Какие-то либы называются Qt.
И у них кстати есть своя среда (QT Creator) - качай да разбирайся.

sageАноним Втр 08 Июл 2014 22:41:01  #43 №368812 

>>368721
>*nix
вот хочется взять вот и уебать сразу

Аноним Втр 08 Июл 2014 22:51:00  #44 №368821 

>>368812
Предложи другое понятие для UNIX-совместимого говна.
Только прежде чем ты пёрнешь "позикс" скажу что сертификацию на ISO/IEC 9945 ни линупс, ни свободная бздя никогда не проходили.

Аноним Втр 08 Июл 2014 23:20:35  #45 №368847 

>>368707
Чего не хватает в Code Blocks?

Аноним Втр 08 Июл 2014 23:35:05  #46 №368854 

Расскажите кто-нибудь про собеседования на Junior Python + Django, если тут есть пережившие подобное.

sageАноним Втр 08 Июл 2014 23:39:57  #47 №368857 

>>368821
unix: Mac OS X, FreeBSD, HP/UX, AIX, Solaris,..
linux: ...

Аноним Втр 08 Июл 2014 23:51:43  #48 №368863 
1404849103644.jpg

>>368847
Например подсветки тел циклов как в плагинах к ВС

Аноним Втр 08 Июл 2014 23:52:43  #49 №368865 

>>368847
Например удобного дебаггера я не нашёл

Аноним Срд 09 Июл 2014 02:15:13  #50 №368903 

>>368662
крайне не советую переходить с вижуал студии на что-нибудь еще, если собираешься писать под винду. Во первых, visual c++ и с++ - разные языки, в студии есть компиляторы для обоих. Во-вторых, по оптимальности, скорости, устойчивости, удобству разработки нет ни одно IDE, которая под виндой бы сравнилась со студией. Лучше выучи как следует студию 2010 или 2012 скажем, и будет тебе безмерное счастье под виндой. Если хочешь, могу ответить на большинство вопросов про студию и помочь с ней, пиши на мыло

Аноним Срд 09 Июл 2014 02:17:09  #51 №368904 

>>368903
fix не visual c++, a managed c++

Аноним Срд 09 Июл 2014 02:58:33  #52 №368914 

>>368903
Пока микрософт запилит все фичи C++11 в свой конпелятор пройдёт ещё лет 5.

sageАноним Срд 09 Июл 2014 09:12:07  #53 №368941 

>>368914
многое там появилось раньше gcc
а что тебе не хватает?

IDE Аноним Срд 09 Июл 2014 10:15:33  #54 №368945 

>>368903
Спасибо, буду использовать её тогда. А вообще, я почти 2 года на шарпе в ней пишу.

Аноним Срд 09 Июл 2014 10:43:48  #55 №368951 

>>368903
Лень переползать с 2005 на новье. Есть смысл?

sageАноним Срд 09 Июл 2014 11:37:47  #56 №368957 

>>368951
на 2010+ если надо C++11
на 2013 если надо winrt

WPF Аноним Срд 09 Июл 2014 18:00:53  #57 №369050 

Расскажите пожалуйста про WPF. Вот я увидел вакансию, написано требуется знание WPF. Я имел дело только с Windows Forms. C# я знаю хорошо. Смогу ли я за пару дней освоить азы ? И что лучше почитать? Кроме msdn.

Аноним Срд 09 Июл 2014 19:48:17  #58 №369066 

>>369050
http://www.wpf-tutorial.com/
Не возвращайся, пока не прочитаешь.

Аноним Чтв 10 Июл 2014 01:17:19  #59 №369123 

>>368464
Ну, то есть для начала достаточно средств непосредственно самого языка, и в рот ебать всё остальное -- придёт с опытом, я правильно понял?

>>368474
Ок, алгоритмы-то это и так понятно. Про компиляторы вообще не думал. Спасибо.

Аноним Чтв 10 Июл 2014 11:51:51  #60 №369175 

>>369123
http://lurkmore.to/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BF%D0%B0%D1%81%D1%82%D0%B0:%D0%9F%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%D0%B5#mws_tEAIJGG

Аноним Птн 11 Июл 2014 18:31:21  #61 №369551 

>>369175
> javascript - это почти что scheme с другим синтаксисом
Проиграл.

Аноним Птн 11 Июл 2014 18:35:24  #62 №369554 

>>369551
Так и есть, лол.
Jacascript - изуродованная сишным синтаксисом схема.

Аноним Птн 11 Июл 2014 19:47:34  #63 №369570 

>>369554
В целом я с тобой согласен, но, например, в JavaScript никогда не будет аналога define-syntax. Эти парни лучше объяснят:
pros: http://www.crockford.com/javascript/javascript.html
cons: http://journal.stuffwithstuff.com/2013/07/18/javascript-isnt-scheme/

Аноним Птн 11 Июл 2014 19:53:33  #64 №369573 

>>369554
Схема - это диалект Лиспа, а JavaScript императивный язык. Откуда в Лиспе циклы?

Аноним Птн 11 Июл 2014 19:56:23  #65 №369575 

>>369573
Чем не цикл?

(define (loop left right)
(if (< left right)
(begin
(display left)
(newline)
(loop (+ left 1) right))))
Аноним Птн 11 Июл 2014 19:57:03  #66 №369577 

>>369551
>scheme
>с другим синтаксисом
А говно - это шоколад с другим вкусом.

Аноним Птн 11 Июл 2014 20:00:24  #67 №369578 

>>369575
Это рекурсия.
Цикл императивен, это итерация - последовательное выполнение операторов.
Рекурсия - это вызов функции, никакой императивщины.

Аноним Птн 11 Июл 2014 20:02:35  #68 №369579 

>>369578
Попробуй написать цикл со счетчиком (FOR), там очень хорошо видна разница между императивным и функциональным стилем.

Аноним Птн 11 Июл 2014 20:09:09  #69 №369580 

>>369577
В языке синтаксис не главное, в отличие от шоколада, так что мимо.
Скорее подойдёт «сок — это фрукты в другой форме», что в общем верно.

>>369578
Откуда вы только берётесь. Важно не то, как код выглядит, а то, что он делает. Компиляторы Scheme обязаны реализовывать оптимизацию хвостовой рекурсии, а с ней то, что я привёл — самый настоящий цикл (никакого каскадного возврата из вызовов не будет).
Читай SICP: https://sarabander.github.io/sicp/html/1_002e2.xhtml#Linear-Recursion-and-Iteration

>>369579
> Попробуй написать цикл со счетчиком (FOR)
Чем то, что я привёл — не цикл со счётчиком? Переменная цикла — left.
Ну или вот более явно:

(define (for-loop body start end step)
(let iter ((i start))
(if (< i end)
(begin
(body i)
(iter (+ i 1))))))

Более того, в лиспе есть присваивание. А ещё специальный синтаксический сахар типа while и do который нахуй не нужен
Аноним Птн 11 Июл 2014 20:16:29  #70 №369583 

>>369579
Ещё один вариант:


(define (for-loop body start end)
(letrec ((i start)
(loop (lambda ()
(if (< i end)
(begin
(body i)
(set! i (+ i 1))
(loop)))))))

Теперь похоже?
Аноним Птн 11 Июл 2014 20:55:11  #71 №369607 

>>369580
>В языке синтаксис не главное, в отличие от шоколада, так что мимо.
В Лиспе главная фича - таки синтаксис, позволяющий писать какие угодно макросы.

Аноним Птн 11 Июл 2014 21:26:19  #72 №369612 

>>369580
Здесь различие не в синтаксисе, а гораздо глубже - в парадигме (мышлении).
Что такое классический FOR? Это использование переменных, т.е. наличие некоей среды, которая изменяется во время итерации командами. Мы отдаем приказы среде, командуем, КАК нужно сделать, чтобы получился такой-то результат.
Твой код - математические формулы, нет никакой среды, нет никаких переменных. Мы говорим, ЧТО нам нужно, а как компилятор будет делать (хвостовой рекурсией как в схеме или call'ами в других диалектах), это уже детали реализации.
Т.е. мы мыслим по-разному - в первом случае занимаемся байтоеблей, во втором - сосредотачиваемся на сути задачи.

>>369583
Вот здесь уже больше похоже на императивный стиль, но все потому, что лисп не чистый язык.

Аноним Птн 11 Июл 2014 23:29:34  #73 №369633 

>>369612
> Что такое классический FOR?
Ты что-то путаешь. Классический FOR выглядит вот так:

for {переменная} in {коллекция / диапазон}
{делаем что-то, переменную цикла не перезаписываем}

Для того, чтобы реализовать эту схему никакие присваивания не нужны. В некоторых языках здесь присваивание используется явно (классические for-циклы в крестах), в некоторых языках их нет (например, циклы в Python). Единственное условие — выполнение должно быть итеративным, то есть без возвратов к предыдущим итерациям. Код, который я приводил (>>369575, >>369580, >>369583), этому условию удовлетворяет и даже подчиняется той же самой схеме (переменная — условие вхождения — тело). Повторюсь: наличие циклов никак не связано с парадигмой языка и не является признаком императивщины.

> Это использование переменных, т.е. наличие некоей среды, которая изменяется во время итерации командами.
И даже это верно для Scheme. Меняющееся состояние — это аргументы внутренней функции.

> Твой код - математические формулы
Нет. В моём коде нет никаких формул, в нём описывается процесс, именно императивно описывается. Формулы — это больше рекурсия. Сравни два примера (оба на Scheme):
(define (factorial n)
(if (zero? n)
1
(* (factorial (- n 1)) n)))

(define (factorial n)
(let iter ((k n) (p 1))
(if (zero? k)
p
(iter (- k 1) (* p k)))))

Какой из них описывает математическую формулу? Только первый. Второй описывает процесс, так же, как обычно пишут на императивных языках, но без присваивания. Всё почему? Потому что циклы не имеют к присваиваниям никакого отношения. При этом оба варианта можно написать и на JavaScript.

> но все потому, что лисп не чистый язык
Ты ушёл куда-то в сторону. В JavaScript есть присваивания. В Scheme тоже. И начало сей дискуссии положено утверждением о связи этих языков. JS и Scheme, а не JS и Haskell.
Аноним Птн 11 Июл 2014 23:57:12  #74 №369640 

>>368350
>>368339
>Есть 100этажный дом и 2 одинаковых стеклянных шара.
msum1 1 =1
msum1 n =n + msum1 (n -1)
"ghci> " msum1 14 -> 105 "ghci> " msum1 13 -> 91
100-14= 86, 86-13=73,73-12=61,61-11=50,50-10=40,40-9=31,31-8=23,23-7=16,16-6=10,10-5=5,5-4=1.

Аноним Суб 12 Июл 2014 00:20:33  #75 №369643 

>>369607
Сейчас да, потому что остальные идеи уже абсорбировались мейнстримом.
http://www.paulgraham.com/diff.html

Аноним Суб 12 Июл 2014 01:35:05  #76 №369668 

Ребята. Что мне можно почитать по C++? Я вроде уяснил основной синтаксис, основные плюшки. Хочу дальше изучать его. Или может быть посоветуйте что-нибудь написать на нём, чтобы гуглить и разбираться с какими-то новыми технологями?

Аноним Суб 12 Июл 2014 03:44:19  #77 №369680 

>>369668
http://www.cppgm.org/about.html

Аноним Суб 12 Июл 2014 03:51:24  #78 №369681 

>>368941
Например constexpr
Которая будет в 14 студии.
http://msdn.microsoft.com/en-us/library/hh567368.aspx
Вот тут списочек есть.

Аноним Суб 12 Июл 2014 04:47:08  #79 №369692 
1405126028423.jpg

>>368863
Няша, что это за плагин такой? Хотеть!

Аноним Суб 12 Июл 2014 04:59:51  #80 №369695 

>>369691
>>369691
>>369691
>>369691

Аноним Суб 12 Июл 2014 05:40:42  #81 №369701 

>>368316
Посоны, поясните, реально ли устроиться джява-макакой без образования и опыта?

sageАноним Суб 12 Июл 2014 09:57:36  #82 №369714 

>>369701
только если ты красивая девушка

Аноним Суб 12 Июл 2014 10:48:34  #83 №369720 

>>369714
Почему? Я же неплохо умею в джяву и многие фреймворки.

sageАноним Суб 12 Июл 2014 11:01:46  #84 №369723 

>>369720
>неплохо умею в джяв
найди элемент в массиве

Аноним Суб 12 Июл 2014 11:44:23  #85 №369727 

>>369680
Прочел, но всё-равно не понял. То-есть это курс, который проводят время от времени. Нужно записаться сейчас, чтобы тебя потом оповестили. Так?

Аноним Суб 12 Июл 2014 17:34:26  #86 №369792 

>>368339
>Есть 100этажный дом и 2 одинаковых стеклянных шара. Шар разбивается, если его сбросить с какого-то n-го этажа, если с (n-1)-го - не разобьется. Если есть 2 шара, то как их надо бросать, чтобы минимизировать число попыток в худшем случае. Например, если бы был 1 шар, то в худшем случае было бы 100 попыток, потому что пришлось бы просто перепробовать все этажи.
@
Представьте, что вокруг Земли по экватору намотана проволока. Ее длина 40000 км. Длину проволоки увеличили на 1м, и она стала парить над Землей, везде на одинаковом расстоянии от поверхности. Можно ли в образовавшееся отверстие просунуть кулак?
Как научиться решать эту парашу? Я кучу таких задач решал и все равно не все решить могу.

sageАноним Суб 12 Июл 2014 22:15:55  #87 №369854 

>>369792
>Я кучу таких задач решал и все равно не все решить могу.
>долбоеб ходил в школу только чтобы бухать и курить
Общество сказало - ты заткнулся в тряпочку и подчинился. Наслаждайся теперь своей среднеклассовой жизнью.

Аноним Вск 13 Июл 2014 01:02:52  #88 №369889 

>>369792
Прочитать Кнута "конкретную математику" и "искусство программирования" и решить хоть часть задач
Например решение первой я представляю тут >>369640 как обобщение варианта >>368352 только с тем отличием что шаг увеличения не 10, а 14-n потому что с шагом число попыток в худшем случае не возрастает - первый шаг 14 второй 13 + 1, третий 12 + 2....

Аноним Вск 13 Июл 2014 13:11:22  #89 №369936 

>>369889
Ага, это правильный ответ
запостил-задачу-кун

comments powered by Disqus