Вы видите копию треда, сохраненную 1 февраля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый - https://2ch.hk/pr/res/1295983.html (М)
Самый выразительный - пайтон. Кресты - нагромождение костылей и нечитаемое говно, если пишется кем угодно, кроме тебя самого.
спасибо, без тебя бы точно бы никто не понял бы мистер генерал ясенхуй
Самый выразительный - forth. Питон - вот это реальное нагромождение костылей, лучше уж C++ чем это раздражающее def __govno__.
В итоге проекты на данной парадигме развиваются абы как с кучей навоза лишнего кода, но этот код работает и даже не взрывает компьюктеры при запуске программы. Однако такое балавство чревато десериализацией личности, осуществляющей выробатку самых низших качеств и разрушением ментального потенциала. Проекты на ООП живут в кризисе продуктооборота и при достижения критической точки выбрасываются без возможности быть разобранными падальщиками, так как кишки настолько сильно переплетены и набиты говном, что от них воротит только при одном виде (в результате время потраченное на проект равно нулю).
В этих ваших плюсах есть конечно что-то и хорошее, те же шаблоны и перегрузки, но и они не нужны, так как необходимость в их использование лишь возможно при отсутствии воображения и фантазии программиста не способного для анализва при близко-сопряженного спектра функций определить минимально возможное отличие и привести реализацию к выворачиванию функционала наизнанку, ведь для этого нужно такое большое усилие мысли, которое отсутствует у большинства, потому что они над своим разумом не работают от слова совсем.
Наслаждайтесь и обмазывайтесь своими Сипюлями без возможности на реабилитацию от ментальной дистрофии.
ты так боишся серьезных языков программирования? так может тебе дальше vb лучше и не смотреть?
видишь ли, на с/с++ можно делать практически все, по той причине, что пракатически все сделано на этих яп.
И получают по две тарелки мамкиного борща в день!
>ООП самый большой костыль
что плохого в том чтобы делать композицию данных с методами, их обрабатывающими?
что плохого в том чтобы инкапсулировать данные, скрывая и защищая их?
что плохого в том что на уровне языка реализуются семантические конструкции реализующие статический, динамический и ad-hoc полиморфизм?
что плохого в том, чтобы проектировать архитектуру приложения как совокупность объектов, взаимодействующих друг с другом через посылку сообщений? для многих прикладных областей это очень полезно
>мимо академик
ну как с ооп вообще все задачи моделирования удобней делать
если язык не поддерживает ооп из коробки, то приходится руками многое делать, например, в случает когда задачи моделирования решаются на си
на степике лучше пройти курс от cs center, чем аналогичный от mail.ru, это
https://stepik.org/course/7
и его продолжение
https://stepik.org/course/3206
этот курс бесплатный
второй курс от ребят из яндекса и физтеха на платформе cousera:
https://ru.coursera.org/specializations/c-plus-plus-modern-development
учтите, что он платный, но, в принципе, если вы готовы платить за обучение, лучше взять этот курс, а не другие которые есть на рынке, imho
базовые знания с которыми вы должны выйти на собес можно взять из
мейерс "эффективный и современный c++. 42 рекомендации по использованию c++11 и c++14"
джосаттис "шаблоны c++: справочник разработчика" второе издание
введение в параллельную обработку для самых маленьких:
энтони уильямс "параллельное программирование на c++ в действии"
все на русском, все есть в цифре в сети
видео с конференций и митапов, надеюсь кого-то они развлекут:
cppcon russia
https://www.youtube.com/channel/UCJ9v015sPgEi0jJXe_zanjA/featured
corehard братишек-белорусов
https://www.youtube.com/channel/UCifgOu6ARWbZ_dV29gss8xw
cpp-party от ребят из яндекса
https://events.yandex.ru/events/cpp-party/
cppcon
https://www.youtube.com/user/CppCon
boostcon
https://www.youtube.com/user/BoostCon/featured
meeting c++ от дойчей
https://www.youtube.com/user/MeetingCPP/featured
старички accu
https://www.youtube.com/channel/UCJhay24LTpO1s4bIZxuIqKw/featured
питерский митап по с++
https://www.youtube.com/playlist?list=PLtDc3cNvuhAIU_LRYg6xFaJV_95Kkt79n
на степике лучше пройти курс от cs center, чем аналогичный от mail.ru, это
https://stepik.org/course/7
и его продолжение
https://stepik.org/course/3206
этот курс бесплатный
второй курс от ребят из яндекса и физтеха на платформе cousera:
https://ru.coursera.org/specializations/c-plus-plus-modern-development
учтите, что он платный, но, в принципе, если вы готовы платить за обучение, лучше взять этот курс, а не другие которые есть на рынке, imho
базовые знания с которыми вы должны выйти на собес можно взять из
мейерс "эффективный и современный c++. 42 рекомендации по использованию c++11 и c++14"
джосаттис "шаблоны c++: справочник разработчика" второе издание
введение в параллельную обработку для самых маленьких:
энтони уильямс "параллельное программирование на c++ в действии"
все на русском, все есть в цифре в сети
видео с конференций и митапов, надеюсь кого-то они развлекут:
cppcon russia
https://www.youtube.com/channel/UCJ9v015sPgEi0jJXe_zanjA/featured
corehard братишек-белорусов
https://www.youtube.com/channel/UCifgOu6ARWbZ_dV29gss8xw
cpp-party от ребят из яндекса
https://events.yandex.ru/events/cpp-party/
cppcon
https://www.youtube.com/user/CppCon
boostcon
https://www.youtube.com/user/BoostCon/featured
meeting c++ от дойчей
https://www.youtube.com/user/MeetingCPP/featured
старички accu
https://www.youtube.com/channel/UCJhay24LTpO1s4bIZxuIqKw/featured
питерский митап по с++
https://www.youtube.com/playlist?list=PLtDc3cNvuhAIU_LRYg6xFaJV_95Kkt79n
что конкретно не нравится
Где мне его объявлять получается?
Класс шаблонный ес чо.
ебать на дваче амперсант уродливый
Теперь не подчеркивает, например, что я не объявил переменную, что нельзя такое значение присвоить, что нету такой функции и т. д. Делал сброс настроек, но не помогло.
linux 64bit g++ c++11
ок
Да, всё верно. По стандарту си int должен быть минимум 2 байта, long - четыре байта. long long - 8. На некоторых платформах int в самом деле 2 байта (на ардуине, лол). Видимо, на современных системах 2 байта не дают выигрыша по сравнению с 4 и они увеличили int до 4, ну и ещё там всякое выравнивание в памяти, всё такое.
mingw-64, ексешник компилируется под х64, "-std=c++14".
В первый раз напоролся на четырёхбайтовый long и почти час пытался понять в чём дело.
long double 16 байт, но реально используется только 10, если оценивать машинную эпсилон. То есть шесть остальных можно свободно перезаписывать под что угодно, на значение они не оказывают влияния.
В никсах используется LP64
В виндах LPP64. Вот там как раз лонг будет 32 бита
http://www.unix.org/version2/whatsnew/lp64_wp.html
В игре Civilization есть баг с механикой агрессии и миролюбия. Суть такова, что агрессивность цивилизации измерялась по шкале от 1 до 10. Девятки и десятки были у всяких Чингисханов, Монтесум и Сталиных, а у духовного пацифиста Махатмы Ганди была единичка. И ещё были модификаторы — строй «республика» уменьшает агрессивность на 1, «демократия» — на 2. Соответственно, сразу же, как только индусы открывали Демократию, у Ганди становилась агрессивность −1.
А теперь внимание. Эта переменная была однобайтная и строго неотрицательная(unsigned), от 0 до 255. Соответственно, агрессивность Махатмы Ганди становилась равна 255 из 10. Поэтому, построив у себя демократию, Ганди двигался рассудком, клепал ядрёные бомбы и умножал всех на ноль.
>Ганди двигался рассудком, клепал ядрёные бомбы и умножал всех на ноль.
Типичный undefined behaviour.
Пока вот так пофиксил:
meaning(const char s[]) { strcpy_s(str, s); }
word(const char s[]) { strcpy_s(str, s); }
Есть варианты получше ?
Ты все правильно сделал, потому что текстовый литерал это const char*. Другой вариант -- использовать std::string в аргументе конструктора. Кстати, использование C-style кастов (type) obj считается плохим тоном (у нас в продакшене правда всем похуй, там таких большинство).
Лучше написать вот так:
dictionary.insert(pair<word, meaning>(static_cast<word>("Home"), static_cast<meaning>("Дом"))); ?
И так на месте всех (type) obj ?
А если я определю преобразование obj в int, тоже нужно писать через static_cast<int>(obj) ?
::x обратиться к глобальной переменной x (если у тебя например есть такая же локальная)
В твоем случае приведение типа вообще не оправдано. Если определен конструктор, лучше написать просто word("Home"). В случае с кастом из класса обратно в базовый тип -- да, надо делать статик каст.
Нихуя, беззнаковое переполнение разрешается стандартом.
По поводу использования signed: (не паста)
В transport tycoon при приближении денег к 2 147... я начинал сносить горы и строить острова в морях чтобы потратить их и не получить два миллиарда долга.
Например, в чём разница между:
static_cast<std::underlying_type<MyEnum>::type>(MyEnum::Value);
и просто
int( MyEnum::Value );
?
Пишу свой велосипед, не кидайтесь говном.
https://ideone.com/L9rtWt
https://ideone.com/L9rtWt
https://ideone.com/L9rtWt
Так вот, проблема в том, что функция get_element возвращает какой-то мусор, когда условие не выполняется, несмотря на то, что в блоке else нет оператора return. Почему такой код компилируется и вообще работает, несмотря на то, что не все ветви кода возвращают значение?
открой исходники std, да посмотри
Бля, ты сконструировал массив с нулевым размером, и пытаешься туда запихнуть какой-то элемент, а потом еще получить элемент по индексу в массиве размером 0. Ты ебанутый или что?
>Бля, ты сконструировал массив с нулевым размером, и пытаешься туда запихнуть какой-то элемент
Ты посмотри функцию add_element. Там я делаю realloc, и размер массива увеличивается на 1.
>а потом еще получить элемент по индексу в массиве размером 0
Нет. Я добавил нулевой элемент в массиве. Теперь его размер равен 1. А теперь хочу получить первый элемент в массиве. Так как элемент у меня пока там только единственный (нулевой), первый элемент я получить не могу. И функция не должна мне его возвращать, потому что я поставил ограничения.
Ты мне лучше расскажи, почему функция get_element вообще компилируется и работает? Если что, я про код в else. По-идее функция не должна скомпилироваться из-за того, что не все ее ветви возвращают значения.
>Ты мне лучше расскажи, почему функция get_element вообще компилируется и работает?
Компилируй с -Wall -Werror:
>g++ aaa.cpp -Wall -Werror
aaa.cpp: In member function ‘int Array::get_element(int)’:
aaa.cpp:36:6: error: control reaches end of non-void function [-Werror=return-type]
}
^
cc1plus: all warnings being treated as errors
Почему - потому что философия С++ предполагает, что ты понимаешь, что делаешь, даже если ты стреляешь себе в ногу
Ок, а что тогда за неизвестный мусор возвращается из функции, в случае, если она ничего не должна возвращать?
Зависит от соглашения вызовов - или содержимое стека в том месте, в котором должно было бы быть возвращаемое значение, или содержимое регистра, если по соглашению вызовов возврат значения производится через регистр.
Что значит ничего, блятб? У тебя написано int get_element(), значит будет возвращать инт, какую бы хуйню ты внутри не писал.
обколются своими джаваскриптами и ябутся в жопу
Насколько сильно теряется производительность при этом ?
Скорее только выиграешь, потому что стринги знают свою длину, а си-строки нет
кажется парадоксально, но зависит от того, что ты со строками делаешь
потому, что, внезапно, string знает свою длину, а длину сишной строки нужно каждый раз считать, пробегаясь по всей ее длине..
поэтому некоторые алгоритмы со string работают быстрее..
>кажется парадоксально
Почему? Это нормально.
Если у него много вставок в большую строку например, то вообще надо rope использовать.
Как правило сишные строки быстрее если забить хуй на проверку переполнения буфера и внимательно следить за тем, не вызываешь ли хочешь ли ты в конец строки от ее начала случайно, вызывая тот же strlen. А так они медленнее. Особенно когда string может хранить короткие строки прямо на стеке.
Функция, возвращающая указатель на type.
Почему в 2018 году пишут так, а не type* func() для меня загадка.
Привычка.
Мне быстрее понятнее если указать или ссылка стоит вместе с переменной, а не с типом.
Получил от stepik.org лицензию на продукты JetBrains, поставил ReSharper C++ и увидел, что по его мнению никакого кэмелкейса или названий переменных, совпадающих/похожих со стандартными, не должно быть.
Второе - ладно, логично.
Но насчёт первого я видел и вариант такихПеременных, и таких_переменных.
Есть вообще где-то конкретное соглашение по стилю кодирования?
> Есть вообще где-то конкретное соглашение по стилю кодирования?
https://fabiensanglard.net/fd_proxy/doom3/CodeStyleConventions.pdf
+ свой .clang-format
Это наверняка там в настройках прописывается
clang format вот прямо щас рулит, кстати, прямо вот недавно, с этого года-двух
во многих топовых проектах на гитхабе используется
не хотелось бы тебя расстараивать, но вакансий джунов на кресты очень, очень мало
по крайней мере, по сравнению с другими платформами
можешь сразу попытатся устроится на мида, иногда некоторые фирмы отчаиваются искать нормальных людей и берут новичков с надеждой на то что они быстро вырастут
но готовся к косым взглядам других людей на работе, потому что ты им будешь тупо мешать следующие два года и если бы не приказ сверху, они бы тебя нахуй послали и все, не стали бы ни помогать, ни учить
Указатель же относится конкретной переменной, а не к типу в целом. Аще, когда звездочка должна стоять в скобках, вся твоя изячная конструкция пойдет по пизде.
А куда мне стоит дальше вкатываться ? Есть знания из 1 книги Шилтда(которая для начинающих). Думал Рихтер Дж - Видновс виа, чтобы в api вкатиться, или Шлее М - Qt
эээ, никуда
везде ты будешь посылаем нахуй с такими "знаниями"
десктоп разработка на винде мертва, на с++ декстоп разработка под винду мертва 10 раз, от чтения рихтера тебе ни будет никакого проку, хоть это и охуенная книга, это будут мертвые знания
ебучий qt нужен в россии по большей части во всяких нии и полугосударственных конторах, которые тупо распиливают государственный и военный бюджет, писать на qt - это получать в 3-4 раза меньше веб-макаки, по сути выполняя ту же работу
>https://fabiensanglard.net/fd_proxy/doom3/CodeStyleConventions.pdf
Открыл, первой строчкой в лицо:
>Use real tabs that equal 4 spaces.
>real
>настоящие
А разве не правильней использовать 4 пробела, вместо таба?
>нахуй тогда сипласплас нужон?
разное говно, которого мало в россии и которое недоступно простым долбоебам вроде меня и возможно тебя
компьютерное зрение
машоб
высокочастотный трейдинг
разное говно связанное с программированием под виндус и линукс, в частоности беккенд для йоба-сервисов
разная научная и околонаучная хуита
в общем, если хочешь денех, учи джаву, жс, пеашпи, сишарп, 1с - с этими языками ты никогда не умрешь с голоду. А с 1с так вообще в любом селе можно хорошие бабки делать.
а вот разное говно: раст, питон, го и прочая модное говно никому ненужно в снг.
опыт байтоебли возможно полезен, алгоритмы поучить, понять, как работает память, но не больше. потом нужно пересаживаться на промышленный язык и уже грести на нем.
А в Геймдев вкатиться на плюсах же самое то ?
Видел вакансию у себя в городе от Ubisoft, программиста на С++
>А в Геймдев вкатиться на плюсах же самое то ?
Не знаю, наверное геймдев у нас в основном это какие-нибудь игры уровня три в ряд на андроид на юнити.
можешь сходить в юбисофт, чому нет?
сам я у себя работаю в мухосранской галере на аутсорсе, пишем софт для работы с геоданными
Если хотят именно программиста, а не стажера, то там наверняка нужен опыт и скорее всего опыт на коммерческих проектах.
И останавливаются в развитии. Если вкатываться, то серьезно. В плюсы от полугода до года активной учебы точно уйдет.
Не преувеличиваешь? Моя ситуация: мат фак (не окончен по проёбам), некие способности на уровне "в школке и на практиках в вузе всё легко с полпинка давалось" + 2-3 месяца изучения конкретно крестов не хватит 100% на должность стажёра-джуна?
В моём мухосранске берут и с хуем в руке, лишь бы в голове что то было, кроме хуёв. По крайней мере насколько мне известно.
Чо, нету никаких вариантов? Только два стула?
1)реализуй лопату, чтобы сама копала.
2)напиши программу, считающую сумму двух апельсинов.
Прочитай K&R, Мейерса и Саттера. Я сделал это за неделю в 20 лет и стал богом С++ по сравнению с типичным тридцатилетним дядей.
А работу найдешь, хули не найти. Демпинганешь от рынка процентов 30 и она твоя
Возьми "сложные полноценный проект" на гитхабе и разберись откуда в нём ноги растут. Уметь искать ноги - чуть ли не самый полезный скилл в кодинге.
> Демпинганешь от рынка процентов 30
и тебя не берут, потому что ты себя слишком низко оцениваешь и это подозрительно.
Видишь ли, там говорится одно и то же. То есть усвоил 10% K&R, усвоил 10% Мейерса, усвоил 10% Саттера, а у Мейерса две книжки, у Саттера тоже две - итого уже получается усвоил 50%. А это дохуя по сравнению с типичным дядей, который использует голые new в коде.
Это мой метод. Я быстро читаю много книг об одном и том же, рассчитывая на то, что подсознание будет выхватывать то, что повторяют все - это скорее всего действительно важное, а не просто случайные кукареки автора. И это работает.
>>08658
Студент без опыта низко себя оценивает? Охуенно подозрительно, ага.
>Охуенно подозрительно, ага.
Если речь идет о недооценке относительно рынка студентов без опыта, то подозрительно. Точнее даже не подозрительно, а на 146% выдает, что соискателю лишь бы взяли, а там трава не расти. Абсолютно не практично такого брать: он либо не осилит вовсе, либо через ~пол года начнет терзаться, что мало получает.
Петя получает 50к, Вася 35к, оба тратят по 30к в месяц. Вася откладывает 5к с зарплаты, а Петя 20к. Петя богаче Васи на 300 процентов, а не на 30, как казалось в начале
Походу надо искать что попроще, но там вообще есть такое? Я там в топе выхватил какую то телегу по фейсбуку. Там всевозможные языки и файлов в принципе чуть меньше чем дохуя. Глаза на лоб сьехали.
Чё толку от чтения без практики? За неделю ты много учебных заданий из тех же книжек выполнишь?
Никогда не делал задания в книжках, они скучные и зачем мне это делать, если я могу прочитанное сразу применять на практике.
Еще они как правило расчитаны не на изучение языка, а на основы программирования, которые НЕ нужно учить на си или с++. Да и сами основы программирования нужно учить не на переворачивании строк и разворачивании списков, что тоже дико скучно, а хотя бы тетрис написать.
>Если речь идет о недооценке относительно рынка студентов без опыта, то подозрительно.
Нет такого рынка. Вы сами жалуетесь, что во всех вакансиях опыт от года. Вот ты стучишься на такую вакансию и говоришь, мол, я хуй простой, хочу 70% от з/п первый год, а потом уже 100%, ведь опыт от года. Если ты при этом сам что-то из себя представляешь, тебя с радостью возьмут.
Ну, это уже похоже на деловой разговор.
Только 70% от з/п специалиста - это сильно оверпрайс. В среднем за год он выдаст половину от того, что сделает человек с годом опыта.
+ Зачастую опыт приобретается на ошибках. Если брать человека с опытом, то ошибки остались на чужих проектах. Если брать человека без опыта, то ошибки будут на твоем проекте.
Так что 50% - верхняя граница, выше нецелесообразно.
Я бы скинул, но ргхост пидор не даёт файл загрузить.
500-600 кб загружает и всё, останавливается.
По тому запросу гуглу (от анона) есть эта книга.
Aноны, что за хрень?
Eсть функция, в начале которой я создаю переменную int i=0;
Дальше идет цикл, в котором переменна i увеличивается.
После цикла вывожу ее и она опять 0.
Что я делаю не так?
Да не, на гит можно простячковые проекты заливать или потом кто-то посмотрит что я змейками весь профиль забил и скажет что я довбойоб?
Если у тебя эта переменная вне цикла также обьявлена и инициализирована 0 то ты скорее всего в функцию ее передаешь по значению, соотвественно ты передаешь копию объекта, а после выполнения функции всё что с ней было уничтожается вместе с ней. Так что либо передавай по ссылке/указателю, либо возвращай значение из функции и присваивай его куда-то
Скачиваю исходники, запускаю mingw32-make
Получаю пикрилейтед.
Не подцепились библиотеки, видимо. Как их подцепить? И почему не работают сишные ключевые слова? Попробовал подключить libc, получаю mingw32/bin/ld.exe: cannot find -lc
Ну ахуеть. Пойду задрачивать скорочтение и пилить по 5 книг в неделю. Не верю, что ты 5 книг по 500-1000 страниц мог прочитать за неделю, это блять нужно каждый день от 5 часов сидеть читать.
Всем похуй на твой гит. Хоть модельками сиджея с розовым хуем забей.
Я поехал на рыбалку с батей, кроме самой рыбалки делать было ВООБЩЕ нехуй, но я прихватил с собой ноут с залитыми djvu.
А так в чем проблема читать пять часов. Это вообще хуйня, если книга интересная. Мне было интересно.
> В среднем за год он выдаст половину от того, что сделает человек с годом опыта.
Хуй знает, опыт опыту рознь
В смысле "прокатит"? Спинлок с траем быстрее, чем жёсткий лок (зависит от реализации мьютекса, но в 99% случаев это так).
Очень странно. У меня практически сразу собралось.
Сначала make clean, а потом просто make вызвал и всё ок.
>что плохого в том чтобы делать композицию данных с методами, их обрабатывающими?
Это называется инкапсуляция. Композиция - это другое.
>что плохого в том чтобы инкапсулировать данные, скрывая и защищая их?
Это называется абстракция.
>статический, динамический полиморфизм
Напридумывают дебильных терминов, а потом ябуться в жёппы.
Это всё Ad-hoc полиморфизм.
>что плохого в том, чтобы проектировать архитектуру приложения как совокупность объектов, взаимодействующих друг с другом через посылку сообщений? для многих прикладных областей это очень полезно
В си++ не используется модель акторов искаропки. Используется типичное императивное программирование приправленное особой модульностью под названием объекты.
Я нуфаг, пытаюсь вкатиться в язык, но никак не могу разработать такую поеботу. Может кто помочь?
С контрольными и прочим сразу нахуй. Заебали уже эти хелоуворлдщики из вузов, которые элементарных вещей не знают.
Я хочу чтобы, если есть возможность, обойтись спином. А если ожидание затянулось, то лочить таки мьютекс, чтобы не тратить процессор. adaptive mutex так это вроде называется.
Мьютексы в любой ОС новее 80-х так и работают, не занимайся хернёй.
1000 рублей, яндекс деньги
+ проведу консультацию по непонятным вопросам, полчаса в скайпе, но это максимум
устраивает?
У того же Мейерса это должно быть в какой-то другой книге.
Spasibo
OpenGL для С++ востребован ?
>какие хорошие книги есть по этому ?
Я бы посоветовал очень быстро пролистать redbook по диагонали - это совсем древний opengl версий 1.*, но идеалогия почти не поменялось. Потом Боресков "Расширения OpenGL". Но я понятия не имею что есть на других языках по теме.
>сделать пару простых игр
А возьмёшь с собой?
Я бы тоже не против укрепить знания. Можно попробовать сделать что-то вместе (хотя вот это мне немного не по себе), а можно порознь что-то похожее, что бы ориентировать друг на друга и подсказывать друг другу всякое. Чуть-чуть в теории помню логику opengl и нескольких самых простых графических эффектов, но не более - книжки то прочитал и вроде даже интересно, но по факту едва ли три программы с ним написал, из которых все на уровне хелловорлда.
Скажи ещё, что у тебя преподавателя на зарплате нет.
Но ведь это жалкая поделка, пародия на VS. Ты точно ничего не перепутал?
Что означает этот синтаксис? Массив пустых объектов? Объект пустых массивов?
Надо было ещё меньше кода скинуть.
>А возьмёшь с собой?
Взял бы, но я ещё совсем ньюфаг в плюсах, только на дно потяну. Пока даже змейку в консоли не с первого раза могу сделать.
Лямбда-выражение.
Си норм, а вот Си++ - говно.
Примерно тоже что и [](){}.
>Visual Studio, которая увеличивает скорость разработки и написания кода в РАЗЫ
Только если ты совсем нюфаня
через константную ссылку на существующий map?
или предоставляя доступ к твоей мапе через константные итераторы?
но, к сожалению, не знаю рабочее это решение или нет
а так, по старинке, обычно map агрегируется в пользовательский класс, и дальше работа идет через объект этого класса
Это лямбда выражение, видимо создающее пустое замыкание-заглушку которое там нужно по синтаксису, но не по семантике.
>которая увеличивает скорость разработки и написания кода в РАЗЫ
Нормальные разработчики больше думают, чем педалят код, и скорость написания кода вобщем-то не особо важна.
Если ты имеешь ввиду разные полезности, то для VIM есть куча плагинов. Но ты либо нюфаня, либо макака на галере и тебе важнее быстрее наговнокодить.
Разница в том, что инициализация может вызвать только конструктор, а присвоение - деструктор и любой конструктор.
хуй знает. попробуй хранить индекс последнего нуля и первого отрицательного числа
при проходе
если нашел ноль свапаешь его с индексом последнего нуля +1
если нашел отрицательное, свапаешь его с индексом первого отрицательного -1
Нужно.
https://ideone.com/ADokFj
Типа такого?
Не уверен насчёт граничных условий, правильно ли оно сработает если последнее сортируемое число 0, не будет ли бесконечного цикла если все числа отрицательные, и так далее - но вот что-то типа такого костыля без изменения j при перестановки (потому что переставиться может другой ноль или отрицательное, причём неопределённое число раз, из-за чего тут и нужен дополнительный цикл или подобный костыль).
размер массива известен?
"в одном цикле" - это значит что одно слово "for" должно быть?
1 - рекурсивно. вызывай сам себя с разным размером массива пока не надоест внутри одного цикла.
2 - в одном цикле захуярь два счетчика. иди с начала и с конца массива и меняй элементы местами.
Кажется, всё верно я учёл.
Я проверил на миллионе итераций для 8, 10 и 60 элементов, и алгоритм каждый раз сработал правильно.
Но rand() даёт последовательность всего на 32к или 64к, потому я заменил его нормальный рандом из std и проверил на 100кк при длине массива от 4 до 20, и всё-равно всё стабильно работает.
> иди с начала и с конца массива и меняй элементы местами.
После смены просто не меняй индекс "обхода" (для for напиши i--, например), потому что сменяемый элемент тоже может быть нулям или отрицательным.
Продублирую сюда, так как у меня есть вижуал сдудио и я немного ковырялся в срр. Напишите мне пожалуйста СКЕТЧ кода, как надо сделать, а я доосилю.
Полноэкранные программы не перекроешь никаким адекватным способом.
Ставишь старую версию делфи на 70 мб, в настройках окна ставишь нужную прозрачность, цвет, галку, то что окно должно быть поверх всех окон и пишешь четыре строки для выставления нужных координат. Самый простой вариант, кодинг и winapi вообще не надо знать.
Создаёшь окно вообще без флагов (примеров сотни по запросу "окно на winapi" - просто в коде заместо всяких WS_OVERLAPPEDWINDOW оставь нули), ставишь ему HWND_TOPMOST, чёрный цвет и ставишь ему что-то вроде пикрелейтед. В идеале ещё дописать код, которые будет заново передвигать окно на первую позицию, если ещё какое-нибудь окно с HWND_TOPMOST вылезет наверх.
> Ставишь старую версию делфи на 70 мб
А вот это, получается, будет нормально работать даже поверх полноэкранных вещей?
>в одном цикле
Это лабораторка такая дибильная у тебя или ты прост полагаешь, что выиграешь в производительности?
Двумя циклами гораздо читабельнее будет выглядеть, а общее кол-во операций не больше, чем в одном цикле; а то и вовсе быстрее будет, т. к. меньше условий проверяется.
Так там нужно обращаться к ранее просмотренным индексам. Это не рекурсия получится, а спагетти-код.
Нет, не будет. Поверх полноэкранных это нужно что-то типа стимовского оверлея писать. Я как-то пару лет назад пробовал это нагуглить в течении пары часов, но в результате я не нагуглил даже из какой области там функции. Наверное, это делается или через какое-нибудь чугуниевое winapi, или через какие-то особые фичи directx.
Если таки найдёшь об этом инфу, мне тоже будет очень интересно послушать.
Ушёл, ответить до вечера не смогу, тому что с мобилки не работает ввод капчи из-за уёбища на админе.
Окей, спасибо.
Интересно - насколько сложно реализовать мой черный прямоугольник на уровне самого монитора, лол? Даже не знаю как это назвать - это всплывающее окошечко с настройками яркости и прочим говном. Туда как-нибудь можно по-простому присобачить лишнюю фигуру? Это-то точно будет поверх всех остальных окон.
Тоже пойду спать до вечера.
считай что у тебя весь массив уже отсортирован, кроме двух крайних элементов, к примеру. фикси крайние и вызывай сам себя рекурсивно для середины.
но это я так, примерно, саму идею.
>считай что у тебя весь массив уже отсортирован
В общем случае так считать нельзя.
Если, допустим, в массиве первый ноль встретится на 10-й итерации, нужно будет нулевой с девятым местами поменять.
Если чистую рекурсию пытаться сделать, придется очень некрасиво костылить, чтобы на десятой итерации получить доступ к нулевому.
Молодой человек, вы друной?
ну winsock2
Если нормальное отключение, то read/recv вернёт ноль прочитанных байт. http://man7.org/linux/man-pages/man2/recv.2.html#RETURN_VALUE
Если жёсткое, то >>10288
https://stackoverflow.com/questions/53151521/could-we-access-member-of-a-non-existing-class-type-object
чому в шапке /pr ссылка на старый тред?
Как мне сделать так, чтобы я мог проверить тип параметра шаблона, например чтобы функция f работала для vector<int> и set<int>, но не для list<char>?
> Я просто думал как-то в самом шаблоне это все прописать, шоб на этапе компиляции проверялось.
Тогда юзай enable_if
Одна функция для char, а другая для всего остального
>Отличается
Через первый указатель b ты можешь изменить объект, на который указывает b; b не может указывать на константу.
Второй указатель b может указывать на любой char, константный или нет. Но нельзя изменить объект, на который указывает b, не важно на константу он указывает или нет, через этот b изменить ничего выйдет.
Так у тебя нигде литерал не используется, в обоих случаях ты инициализируешь б неконстантным массивом, что допустимо.
Будет ругаться, когда ты попытаешься
char *b;
b = "Literal";
Тру крестоносцы помогите, ничего не могу нагуглить, нужен крч вывод в определнном формате примерно как на пике. Есть какие идеи? МБ кто изобретет велосипед? Либо просто нужна норм функция для возвращения позиции курсора мб подскажет кто ?
хз. но це не для вуза, для совего проекта
блят, крч есть определенные классы предметов и суть в том что предметы из одного класса со своими именами и свойствами должны выводиться в столбик, но при том столбики находятся в одной строчке.
опять ебано объяснил наверн.
Ааа... всё равно никак. Это ограничение STL такое. Логично, что значение должно быть изменяемо.
ncurses какой-нибудь.
Можно, но ни в коем случае нельзя
Не получится. Только если дрочить вприсядку (вроде подсовывания в insert вручную созданных нод)
Разве что раздать объектам уникальные id и записывать в файл вместо указателей. И запилить менеджер загрузки, который при чтении объектов из файла будет расставлять им настоящие указатели.
С помощью mmap отобразить файл на конкретный адрес памяти, всегда один и тот же.
Выделять память в этом адресном пространстве
>Перед завершением работы программы оба объекта записываются в файл.
Наверное все-же не объекты а копии объектов точнее даже копии их состояний, если только ты не дамп памяти в файл пишешь. После завершения программы твои объекты всё, тю-тю.
>при повторном запуске программы и чтении из файла их связь сохранилась? Т.е. указатель указывал не в ебеня, а на второй объект.
Ты заного создаешь два объекта, инициализируешь из своего файла. Что тебе при этом мешает инициализировать твой указать новым адресом нового второго объекта?
Получается, где-то надо хранить доп. информацию о том, какой объект на какой указывал, т.е. не только адрес, по которому была прошлая инкарнация второго объекта?
>где-то надо хранить доп. информацию о том, какой объект на какой указывал
Надо, если это меняется от случая к случаю. Не надо если "первый" всегда указывает на "второй".
>где-то
Да где угодно, хоть в названии файла, епт.
>не только адрес
Старый адрес вообще хранить бесполезно.
А разве есть способ гарантировать, чтобы это адресное пространство было всегда доступно?
Читай:
https://www.opennet.ru/man.shtml?topic=mmap&category=2&russian=0
http://man7.org/linux/man-pages/man2/mmap.2.html
>If addr is not NULL, then the kernel takes
it as a hint about where to place the mapping
Нельзя.
Если вкратце, то делай свои указатели относительными. С сырыми указателями ты каши не сваришь.
На винде ты это тем более не сделаешь.
Аллоцируй оба класса статически.
Ясно, нескучные говнософты от васянов, единого нет.
Шел 2075-й год, в крестах все ещё не было элементарного менеджера пакетов...
ну, вроде Tools WG чето там в коммитете работает, к 26ом мб родят что-то
f = std::async([](){return 43;});
Что происходит с f во второй строке?
Я так понял будет ждать пока первый не станет валидным. А дропнуть без ожидания нельзя?
Что дальше читать? Есть какой-нибудь годный учебник БЕЗ интеграции сразу с вижуал студио? Просто голый сишарп?
А не, аноны, не надо, вы там в шапке три ссылки на учебники дали.
Да анон че-то ступил. Спасибо.
Первое эквивалентно *=, второе +=, можешь сделать соответствующие макросы.
Для того, что в си не завезли запилили си++
>Есть объект класса, содержащий указатель на другой объект. Перед завершением работы программы оба объекта записываются в файл.
Используй реляционную БД.
Разумеется да, побитовые операторы не ленивые.
о, да, детка
нужно сделать персистентными 2 (два) объекта
и ты советуешь изпользовать реляционную субд
может сразу технологийй big data подключить, ну а хули, кластеризация, распараллеливание, вот это все
Тогда очевидно, что пишешь процедурку, которая их подгружает/десериализует/хуй_знает_что_там_ты_наворотил и сетит/передаёт_в_конструктор нужный указатель.
Никто не упомянул C++, видимо этот язык стал нишей и используют его сейчас только энтузиасты.
https://godbolt.org/z/JI_vj2
Проиграл с полускриптов. С другой стороны и не поспоришь, справедливо.
на гитхаб сходи посмотри, сколько репозиториев появилось новых
Даже когда С++ был везде и даже там, где не нужно, вряд ли бы кто-то, знакомый не только с С++, назвал бы его favourite с британским акцентом. За что его любить?
>используют его сейчас только энтузиасты
А геймдев?
По-моему как раз наоборот: нужно быть большим энтузиастом, чтобы взяться пилить игру на чем-то кроме крестов для пекарни/консолей, про мобилки - отдельный разговор.
Есть класс B у него функция bar()
Есть шаблон класса С с функцией baz()
Как через SFINAE сделать чтобы для С<A> baz вызывала x.foo(), а для С<B> x.bar()?
Короче разобрался if constexpr помог.
Найди в алгоритме ассоциативные операции, оберни их в моноид, а распараллелить моноид - дело десяти минут.
миллиард итераций автотестов, если race condition есть, то с ненулевой вероятностью какой-нибудь тест споткнется
И endl не работает?
Объясните, почему этот код не работает?
Должен удваивать все символы в строке.
Например, при вводе двух букв он удваивает первую, а дальше идут непонятно откуда берущиеся символы.
Формальная верификация. Только не программы, а её модели, и не всей, а отдельных кусков. Потому что там количество возможных состояний ебанистическое.
Лул. И сиди потом запускай еще миллиард чтобы воспроизвести, и еще десять миллиардов чтобы пофиксить.
А объявлять массив таким образом разве можно? Ну, переменной, которая инитится в рантайме. Еще у тебя в циклах неравенства не совпадают: внутри мейна строгое, а в фунции нет.
Вкидывай на ideone код, что ли.
Цикл неверный в функции, в остальном всё верно. Но за первый символ в scanf он принимает перенос строки, пробел или другой используемый тобой разделитель (что хорошо видно если чуть-чуть переписать вывод в Double, потому последней цифры нет (и потому же ты написал в условии <=n, наверное, что в корне неверно).
Оказывается при определённых символах в printf виндоус проигрывает неприятный писк.
>>14794
Можно в си, в стандарте с99, компилятор мне даже предупреждение выдаёт. Но mingw кушает такое даже в с++, тогда массив на стеке выделяется. Постоянно это использую, лол. Стек быстрый, ничего выделять-очищать не надо.
>А объявлять массив таким образом разве можно? Ну, переменной, которая инитится в рантайме.
Только в С99.
>Постоянно это использую, лол. Стек быстрый
VLA не очень эффективны как раз. Лучше фиксированный размер использовать.
>VLA не очень эффективны как раз
Само собой по сравнению с new/delete, если заранее известного размера нет.
Впрочем, что-то я не обнаружил никакой особой неэффективности, не знаю как оно внутри работает, но по идее какая ему разница изменять значение указывающее на верхушку стека на 50 или на заранее неизвестное n. Вот сравнение. Функция рекурсивно вызывает сама себя n раз, в каждой итерации новый массив (размеры которых убывают от n до 1).
Троеточие - вариант с заранее прописанным размером в 201 (на большее стандартного стека не хватает). 10-20% разницы вне зависимости от размеров (могу предположить, что ему при обращении к индексам массивов нужно вычитать лишние значение в случае с VLA). New-delete вообще мусор, если требуются много небольших массивов по сотне байт.
Есть ли литература, в которой объясняют как правильно разбить проблему на классы? Чтобы потом не ебатся из-за того, что не с того края начал.
Я имел в виду, что размер все равно надо проверять, чтобы за стек не вылететь. Так лучше это делать вручную и осознанно ассертом, чем через непортируемые расширения компилятора.
>как правильно разбить проблему на классы
Правильно разбить проблемы на классы невозможно, потому что ООП - псевдонаучная хуита, crackpot science. Единственный способ - качать чуйку опытом.
Я понял, что ошибка где-то в функции и последний символ при 5 элементах он не выводит. Но вот почему он выводит какой-то мусор при двух элементах и как исправить вывод, я не понимаю.
у тебя в мейне в самом начале create_num(x); - что за х? где оо объявлено?
memset(res, 0, len); -> memset(res, 0, sizeof(char) x len);
все размеры массивов из int переделай в size_t
char res = CreateArray(MAX); - res не удаляешь
char s1[MAX]{ 0 }, s2[MAX]{ 0 }; load_num(s1, s2, x); - если длинн числа == MAX - strlen на ней не сработает правильно
в mult10 ты каждый раз уверен, что выделил нормально памяти? я бы вообще все эти char поменял бы на вектора
ну и тд. дальше лень смотреть.
Так-то кресты причесать и получится ява, только не жрущая террабайт памяти на хеллоуворд.
Хотя бы форк какой сделали
Совместимость, сейчас вроде одумались
Да, норм компилируется и даже вроде работает как надо.
Это я уже когда сюда постить собрался, заметил, что ей почему-то не нравится имя функции far(). Меняешь на другое имя и все ок, делаешь опять far и снова она не может найти, где у нее лежит определение close().
Far и near - ключевые слова. Так на 16-битных машинах указатели при работе с сегментной памятью помечались.
>Far
Именно как у меня в малом регистре? Ключевое FAR насколько я знаю в большом регистре.
Да и пример на скриншоте я урезал, оставил только суть. Там использовались и другие библиотечные функции, но VS тупит только c close().
Да, щас прогуглил. В Си есть far. А FAR это из WinSock.
Но в любом случае, у меня far не выделяется как ключевое слово и код компилируется. Видимо нужно какую-то либу подключить, чтобы far стал виден.
Больные ублюдки блядь
Че там
исходи из необходимости
исключения были введены в язык с практической необходимостью: нужен был нормальный способ возвращать ошибки из конструкторов объектов и при перегрузке операторов
страуструп об этом в "дизайне и эволюции" долго расписывал
те НЕ нужно проектировать систему в которой вот прямо везде будут использоваться исключения, используй их при действительной необходимости..
как пример: та же стандартная библиотека - почти не используются исключения, но там где они действительно необходимы - использует
то же касается и множественного наследования
то же касается и виртуальных функций
они используются буквально по одному разу в стандартной библиотеке
но используются
тем с++ и силен - на уровне языка у него много семантических возможнстей, которые в си приходилось делать на уровне библиотек
>ребята, вы молодые, шутливые, поймите, это не то, сюда лучше не лезть, НЕ нужно использовать исключения, мы не гарантируем что это сатанинское поделие будет работать, сами блядь боимся это говно использовать даже в стандартной библиотеке...
Я только на исключениях и привык писать, ибо жава-макака.
В яве вообще правило номер один: есть малейшая ошибка - кидай исключение.
И это нормально блять.
А тут в оказывается в крестах такой ебаный пиздец в стиле 1968 года...
Боюсь представить что будет, если кинуть исключение в многопоточной программе на крестах - наверное вообще пространственный континуум распидорасит.
не, не
привыкай использовать исключения только когда они необходимы
те в крестах исключения это не подход к разработке, а скорее некая фича нужная в 1% случаем, НО без которой иногда не обойтись
зачастую делают, например, так: создают объекты через фабрики, при этом получается что то что может выбросить исключение в конструкторе, инкапсулируется в фабрике
а при грамотном проектировании класса делают не только пользовательские операторы (которые могут выбросить исключение), но и дублируют их функционал через обычные методы (которые уже возвращают код ошибки, но не выбрасывают исключение)
а если вообще по честному писать, то 80% кодеров на крестах вообще не понимают о чем я здесь написал, всем похуй
большинство крестового кода на гитхабе, например, это тупо приплюснутая сишка
Но как я тебе выдам "код ошибки" для сложного типа данных?
Да вообще для любого.
Допустим, функция просто выдает int.
Что бы она ни выдала - это будет легитимным ожидаемым ее значением.
Выдавать максимальное/минимальное значение для типа int?
Лол, так даже это не прокатит ввиду того, что компилятор крестов не гарантирует, что любой тип будет строго какого-то одного значения, он гарантирует лишь не меньше стольки-то байтов.
Как блять я просигнализирую об ошибке, кроме как из исключения?
Этот механизм во всех языках сложнее бреинфака недаром существует и по-дефолту используется.
А если не используется, то используется иной способ, но проблема нихуя не игнорируется
результат работы функции или метода возвращается через out параметры
возвращаемое значение фунции используется для возврата кода ошибки или успешного завершения
>результат работы функции или метода возвращается через out параметры
А я все думал, почему php такой конченый. Теперь я знаю чем вдохновлялись при создании.
Всегда подозревал, что пых - это лайт-версия крестов в плане проектирования и стремлении выстрелить себе в ногу.
В пыхе в последние годы половина стандартной либы кидает исключения, но остальная половина нет и никто не будет переписывать из-за маня-совместимости. Кресты 2.0
>out параметры
Это же пиздец васянство. Еще пизже только возвращать в любой функции йоба-объект, в котором в одном поле ее результат, а в другом - информация об ошибке.
Короче теперь можно ответственно заявить, что кресты - хуевый по современным меркам язык, архитектура которого и тонна говна ради (никому нахуй не нужной) совмесимости с C не сочетаются с реалиями современной разработки.
>
>
перечитай еще разик выше зачем была необходимость вводить исключения в язык
2 случая их использования
и как спроектировать классы, чтобы можно было и через исключения работать и, по необходимости, без них
я все выше написал
стандартная библиотека php хуево спроектирована, это все признают
в то время как стандартная библиотека с++ вполне неплохо спроектирована
к примеру, повторюсь, она использует возможности с++ только в действительно необходимых случаев: исключения кидает лишь несколько методов классов stl, множественное наследование лишь в одном месте, виртуальные функции лишь в паре мест..
те где жизненно необходимо, там они и есть..
Я ее сделал многопоточной, потому как файлов у меня ~60к. Она работает, только результат изменяется от запуска к запуску. То он находит совпадения в 1500 файлах, то в 1700. Я вроде бы и позаботился о том, чтобы потоки друг другу не мешали, но все равно хуйня выходит. Где я обосрался?
https://pastebin.com/a2Fnck6R
Хуй знает что там не так, но, разрешите доебацца:
- 60к файлов - 60к потоков. Серьёзно? У тебя суперкомпьютер что ли? Сделай сраный пул с очередью
- когда итерируешь директорию, ты поддиректории скипаешь?
- нахуй обособлено выражение в 74 строке? Так у тебя с не инкрементится
- контейнеры на пустоту проверяй методом empty(), а не size() > 1
- есть еще мутные места
В общем, как по мне говнокодисто вышло.
Запускаю элементарную программу на ввод даных с консоли.
Казалось бы, ну что блядь может вообще пойти не так?
Когда строки на английском - все норм.
Когда юникод - cout не работает после cin.
Сука.
Язык-чмо, язык-пидорас, язык-говно, язык-костыль.
Русский язык такой, да
>элементарную программу на ввод даных
Элементарный char весит 1 байт
>Когда юникод
символ в юникод весит два байта
Действительно, что тут может пойти не так?
wstring и wcout уже не стандартная библиотека?
>Когда юникод - cout не работает после cin.
У тебя спермопараша всесто ОС, там в принципе юникода нет.
В крестах нет классических псевдослучайных чисел.
Только математические генераторы, которые хуярят тебе всегда одно и то же для заданного сида.
Сам сид никак не пытается вычисляться как в нормальных япах там по сумме времени, температуры, процессорным пукам и прочей хуйне.
Бинго, туда таки подвезли (не прошло и 30 лет) классический стохастический генератор рандома - std::random_device.
Только вот хуйня, эта поебень не работает в половине компляторов, лел.
Язык-газонюх блядь, у каждого ебасоса свой собственный C++, даже страус-труп что-то по этому поводу говорил.
Если в 2 словах, то почему то выдает странный результат.
https://pastebin.com/3tVRKnq0
> - когда итерируешь директорию, ты поддиректории скипаешь?
Там их нет.
> - нахуй обособлено выражение в 74 строке? Так у тебя с не инкрементится
> - контейнеры на пустоту проверяй методом empty(), а не size() > 1
В первых элементах хранится путь к файлу, поэтому и size() > 1
>>16195
>>16179
Я попробовал сделать в один поток. Работает в 3 раза медленнее, но точно. В итоге, разделил все на 4 потока и при таком раскладе время исполнения как и при 60к потоков, да и результат всегда получается точным.
Ты пытаешься проходить одновременно по левой и по правой половинам вектора. В случае с отсортированными половинами это прокатит, а если нет?
{2, 4} и {3, 1}.
2 < 3 - верно - {2}.
4 < 3 - неверно - {2, 3}
4 < 1 - неверно - {2, 3, 1}.
Последнюю итерацию лень продумывать(там либо вставится четверка и будет {2, 3, 1, 4}, либо выход за границы вектора), но уже неправильно работает алгоритм.
Вот если ты хочешь именно так делать, через половины, то тебе нужно рекурсивно вызывать эту функцию для каждой половины перед вставкой в конечный вектор.
>Я попробовал сделать в один поток.
замерь производительность в сравнении с обычным grep
и обосрись
А я и не сомневался, что grep быстрее. На винде он работает за 63 секуны, тогда как моя программа за 54. Но на федоре пкуз отрабатывает за 24 секунды. Мне нужно было свое решение, потому что я хочу проверить директорию на множестве фраз с подсчетом совпадений, и сделать это на плюсах для меня проще, чем в шелле или awk, или еще хуй пойми, на чем.
Точно подмечено, что про последний элемент, про него я забыл.
Как же меня бесит это конченое дерьмо блядь.
Добавили в язык хуйни, тип стандарт, мам, только эта параша из-под коня работает через жопу блядь и по-разному на разных компиляторах.
Причем обсирается в рантайме охуительными ошибками уровня бэ, что даже место в коде не называет, где это произошло.
Есть constexpr int в котором записано некое число.
Эту переменную я использую как аргумент для std::array.
Стоит изменить переменную как программа при запуске крашится.
Приходится удалять объектные файлы и компилить заново.
Как избежать подобной хуйни?
Ну и есть пара годных идей для игорей, а так же свободное время.
Работаю мидл пхп-макакой уже года 4 и c# ещё знаю немного.
Вопрос к знатокам c++, насколько глубоко нужно знать этот язык для использования в рамках этого движка?
Я смотрел, они там накодили какие-то свои базовые классы от которых почти всегда отталкиваешься, поэтому, возможно, есть смысл больше времени потратить на изучение работы конкретно с анриалом, если разработка на чистом c++ и в рамках анриала имеет из общего только синтаксис?
лучше иметь хобби, ни как не связанное с компьютерами, если основная работа у тебя - программирование
выгоришь к хуям
уж поверь мне
Я так и так аутирую большую часть дня за пекой, какая разница что я буду за ней делать. Ну заебет - дропну.
Конструкторы люблю просто.
Наговнокодил недавно, чтобы человечки ходили как в стратегиях и выстраивались разными строями: клином и т.д. Мне очень доставило, но не нравится говнокод. Хочу по красоте делать ежжи.
Дохуя временных объектов.
И зачем ты делаешь функцию, которую вызываешь в другой функции, которую вызываешь рекурсивно?
Сделай вызов сортировки из себя же с условием остановки, когда размер переданного вектора == 1
Все равно не оптимально, но будет лучше, чем сейчас
Хотя всё-таки попрошу хеллоуворды обьяснить. Понял что старая строка улетает в никуда утечка, и нужно перед присваиванием очистить память. Я создал новую строку, и скопировал туда значение от старой строки, после очистил память старой и переприсвоил указатель старой строки на новую объединённую. Но в итоге вылетает ошибка, о которой пишут что я пытаюсь освободить память дважды. Я не пойму где я туплю, может кто указать или намекнуть на фейл? Код cpp.sh/92cpd
>cpp.sh/92cpd
>char * first = "Hello";
>delete [] first;
Ты для first вызываешь delete, но не вызывал new. Какого чёрта?
А разве нельзя просто переприсвоить указатель? Да и так тоже не работает либо я опять ошибку сделал https://onlinegdb.com/By3XiuzbN.
Чем является выражение в фигурных скобках?
Я вижу тут одновременно приведение типа в стиле Си, вызов функции с именем string конструктора класса string? и определение безымянной переменной типа string.
Не то. Что делают фигурные скобки мне ясно, не ясно то, что внутри скобок, сам аргумент инициализатора то бишь : string("Help 2ch!").
настраиваешь, чтобы отладчик заходил в исходники стандартной библиотеки
проходишь по вызовам, перестаешь задавать дебильные вопросы
У вектора вызывается конструктор std::vector<string>(std::initializer_list<std::string>). Фигурные скобки - initializer_list<std::string> из одного элемента-строки, который прямо на месте создаётся с помощью конструктора std::string(const char*). tl;dr создаётся вектор из одного элемента.
Начать писать ты можешь сразу, просто как Си со свистоперделками. Если хорошо пишешь на Си, будешь хорошо и здесь (главное не переборщить: видел несколько си программистов, увидевших TMP и иерархии классов и которые стали совать это повсюду - не надо). Но для достижения Нирваны с идиоматичными™ плюсами 11/14/17/20 нужно потрудиться и читать референсы, книжки и тд.
Ладно, я уже реализовал что хотел с помощью связных списков, но вопрос остается открытым: как реализовать operator+ из класса string? В инете написали чтобы я хуй забил и даже не пытался, а если надо будет - используй готовое. Но мне же интересно!
Что можно использовать в связке с плюсами, чтобы была возможность делать интерфейс не на основе windows forms?
Смотрите, уже два года сижу на билдере, вполне неплохо, но когда понадобилось сделать более-менее современный и минималистичный интерфейс не похожий на win forms, то сразу же начались костыли. Да, можно изъебнуться и начать перерисовывать стандартные кнопки, делать другую логику взаимодействия с окном и так далее, но это настолько противоестественно и костыльно, что просто вогнало меня в тоску.
Есть Qt, но я его особо не изучал, так как там нет community версий, как в VS или билдере. Плюс сложно получить просто один экзешник без поиска qt-шных библиотек.
Знаю, что в VC++ можно делать простенький интерфейс, но тоже на основе winforms.
Ситуация кажется мне безвыходной. Я работаю с расчетными процедурами, так что c++ в моей стезе - это лучший выбор, но что делать с интерфейсом?
Слышал, что на сишарпе есть куча возможностей слепить тот десктопный интерфейс, на который у тебя только хватит фантазии, но получится ли совмещать интерфейс на одном языке, а процедуры на другом?
Возможно, видно, что я не особо разбираюсь в теме, но хотелось бы услышать ваше мнение по этому поводу.
>cpp.sh/92cpd
для first вызвал delete но не было new
для temp есть new но нет delete
нахуя ты first переиспользуешь? у тебя переменные закончились?
Можно. Ты где-то переприсваиваешь first до delete? Я не заметил.
Смотри, тут три области памяти. Стек, куча, область глобальных переменных(статические переменные там же). Объявление строк по типу first/second попадает в область глобальных переменных (что видно по численным значениям указателей). Очевидно, их нельзя удалять через delete, оттого и программа падает.
> Плюс сложно получить просто один экзешник без поиска qt-шных библиотек.
Можно, но это вроде как платная фича (например десктоп клиент телеги сделан так).
> Знаю, что в VC++ можно делать простенький интерфейс, но тоже на основе winforms.
Это просто потому, что все либы уже в системе. И поэтому кажется что не надо искать библиотеки.
https://github.com/ocornut/imgui
вообще чтобы на цпп сделать интерфейс на windows forms надо заморочиться будет. это managed c - микрософтовское извращение.
родное там mfc
а для реально крутых чуваков - wtl
ну про qt ты уже написал.
В сишарпе пишут сейчас дизайн на ксамле, а в кюте есть аналог - qml. У тебя там основа на крестах, дизайн в подязыке на основе json и скрипты на жаваскрипте, довольно удобно как привыкнешь.
Так у меня идея была такая:
1) Есть две строки
2) Создаем третью размерами чтобы вместила обе, и копируем туда обе строки подряд
3) Возвращаю ее в качестве результата
Но в программе мне нужно использовать ее не один раз. Как очистить память от предыдущей строки, ведь если я просто перемещу указатель старая строка останется где-то висеть без доступа. Поэтому я пытался модифицировать в самой функции всё, но вышло тоже криво. Можешь ответить кстати, при строках вида char * str = "321321"; память в куче выделяется или в стеке? Не нашёл ничего в инете
При строках вида char * str = "321321" память выделяется только под указатель, на стеке ясное дело. Сам строковый литерал зашивается в статической области памяти и удалять его не надо.
А если я соеденил две строки, и присвоил значение первой. То есть код такого вида
first = strcat_m(first,second)
Со старой строкой не нужно ничего делать? Ведь в самой функции память то выделяется ну для общей строки, а если просто сменить указатель на другой, старое выделение пропадает. Я сейчас попробую модифицировать, но вот тут у меня диссонанс основной произошёл, из-за которого я в тред и отписал.
> память в куче выделяется или в стеке?
Специально же скриншот прицепил. В области статических и глобальных переменных (сегмент данных, если по науке это называть, вроде бы). Это не стек и не куча, эту память во время работы программы никаким способом нельзя освободить.
>3) Возвращаю ее в качестве результата
Я бы завёл статическую переменную-указатель внутри функции - если он равен 0, то функция вызывается первый раз и нужно просто вызвать new, если нет, то нужно сначала освободить старый указатель. Угу, в памяти всегда будет висеть результат последнего выполнения функции. Сам смотри, приемлемо ли это.
Или можно явно потребовать, что память под новую строку должен освободить вызывающий код, что тоже вполне логично. Типа, ты просто пишешь char* s = strcat_m(,), и чуть позже delete[] s.
Такой код корректен? Ошибок не даёт, но это такой себе показатель cpp.sh/3gqsk. В любом случае спасибо тебе и еще одному или не одному анону за помощь. Почему-то тут отвечают на вопросы, которые в инете хуй найдешь
>cpp.sh/3gqsk
Нет.
Ты зачем освобождаешь str_dest, вдруг он ещё нужен за пределами твоей функции?
Я вот это имел ввиду. Вывел значения указателей, для наглядности.
https://ideone.com/Goq7nh
>Ты зачем освобождаешь str_dest, вдруг он ещё нужен за пределами твоей функции?
У меня строка выступает в роли массива. Я обьединяю старую строку и какую-то часть, после чего удаляю старую и переношу указатель на новую, объединённую. Ты делаешь примерно тоже самое, но не удаляя старую строку,а используя статическую. За помощь в любом случае спасибо, я вроде разобрался.
А, ты таким ебанутым способом используешь strcat_m в цикле, и с помощью условия избегаешь освобождения памяти из сегмента данных. Посмотрел только код функции, не смотрел основной. Это весьма контринтуитивное поведение strcat_m. Лучше тогда в функцию передавать указатель на указатель в первом аргументе.
>>17581
Тут надо решить какое поведение ожидаеться от функции.
Если это создание новой строки с = a + b, то в функции надо выделить память подновую строку, скопировать туда переданные строки и вернуть указатель на новую строку. Прототип ф-и: char strcat_m(const char str1, const char str2)
Если добавление к существующей строке a += b, то я бы первым параметром сделал указатель на указатель на модифицируемую строку. В ф-и выделить новую память, скопировать туда всё, удалить старую строку (если указатель не ноль), присвоить указателю новое значение и вернуть указатель на строку. Прототип: char strcat_m(char str1, const char* str2).
В первом случае можно передавать указатели на литералы в str1 и str2. А во втором только в str2, а для str1 уже надо предварительно выделить память. Ну там strdup какойто написать можно.
Блять, звездочки проебал.
Еще раз спасибо, впрочем на данный момент я такие же мысли в голове и держу. А звёздочки из-за местного движка проебуются постоянно.
Там не в этом проблема, из рекурсии не получается выйти.
Спасибо что посмотрел на код, все равно эту сортировку оставлю и потом вернусь к ней.
Так вот тебе и выход из рекурсии: в начале функции проверяешь размер полученного вектора, если один - возвращаешь этот же вектор(один элемент уже отсортирован), если больше - делишь на две половины, вызываешь для каждой эту же функцию сортировки и все будет работать.
Очень нравилось байтоёбсто и всё это самое в виде скользких мест о которых знают только реальные олды на С++.
Но чем глубже я стал углубляться тем больше понимал, что С++ мягко говоря ебал я в рот. Все олды знают какие подводные бывают и что сам С++ унаследовал из Си проблемы из-за которых работает через жопу. Понял, что лучше использовать связку Си+(Питоно например) чем С++.
Короче говоря выкатился из С++ года два назад и сразу же вкатился в Java потому что нужна была работа а не хуи пинания. По началу бомбило от Java, но сейчас все устраивает, иногда тоскую, что нет возможностей Сишных.
Часто приходит мысль(первая любовь) обратно вкатится в С++, например попробовать с графикой поработать. Движок дум2 поковырять - разобраться что да как в графике устроено. Физику прикрутить. То есть интересно работа над движком. С высшей математикой проблем нет.
Стоит оно того или похуй! Повышать экспертность в Java дальше.
Честно, не знаю. Есть Страуструп, но по мне он написан так, что если ты уже не знаешь основных концепций плюсов, то ничего не поймёшь. Я начал ещё школьником, который только знал Си да Паскаль вкатываться в плюсы в 2011-2012 годах, как раз когда best practices нового стандарта только начинали складываться и было много повсюду разных обсуждений, поэтому получилось получилось как-то самому разобраться. Но это довольно длительное время заняло. Так что я могу посоветовать только почитать шапку - может, там нормальные книги есть.
И что что на си? Мне теперь делать для таких как ты поправку ой ребята а дум написан на си.
Ты думаешь, что я си не знаю? Я си знаю лучше чем С++. Но суть в другом. Я жду ответа от анонов с похожим опытом, может они тоже тосковали по С++ и может даже имеют опыт обратного вкатывания.
А ты можешь дальше троллить. Больше ты биссира не получишь, свинья залётная.
Блять. Тупой же не поймет нихуя.
>тосковали по С++
По байтоебству, работой с памятью и всем остальным разнообразием и возможностями.
нет, я плюсовик. Но ты прав конечно, как я альфач. Просто жирдяй
спасиб, с наступающим!
А ты взрослый, которому сказать нечего. Потому что нет опыта. Ясно.
или начинать лучше с учебников, где учат программировать в старом с++ стиле, игнорируя все современные улучшения?
труп страуса читай
Что дебильного в моем вопросе?
В книжках об этом не пишут, а если и упоминают, то где-нибудь глубоко в сносках.
Нагуглить тоже не могу, т. к. не понимаю сам контекст, что тут собственно гуглить? Перебирать все возможные случаи и контексты применения круглых скобок? Не более ли это "дебильно", чем мой изначальный вопрос?
>настраиваешь, чтобы отладчик заходил в исходники стандартной библиотеки
проходишь по вызовам
...и просто утопаешь в "дебильных" вопросах.
Чувак, я с этим вопросом столкнулся на 357 станице книжки Липпмана ''эта книжка висит у вас в шапке в рекомеyдациях, а всего там 1124 страниц. Учти пожалуйста объективно мои возможности, ок?
>>настраиваешь, чтобы отладчик заходил в исходники стандартной библиотеки
проходишь по вызовам
А если string заменить, скажем, на int, то никаких видимых вызовов вообще не происходит.
>прямо на месте создаётся с помощью конструктора
Вот с этого места можно поподробнее?
Где причина, а где следствие?
Определение объекта вызывает конструктор, или вызов конструктора определяет объект?
В какой момент вызывается деструктор для объекта, который "прямо на месте создаётся с помощью конструктора".
>vector<string> text{string("Help 2ch!")}
Это можно аппроксимировать по шагам вот так
std::string s("Help 2ch!");
std::initializer_list<std::string> l = { std::move(s) };
std::vector<std::string> text(l);
Только у "s" и "l" нет имён в первоначальном примере. Они, если я не ошибся, prvalue являются.
>Определение объекта вызывает конструктор, или вызов конструктора определяет объект?
Какой-то философский вопрос. "Прямо на месте" я имел ввиду лишь то, что у создаваемого объекта нет имени.
>В какой момент вызывается деструктор для объекта, который "прямо на месте создаётся с помощью конструктора".
Тогда, когда он выйдет из скоупа. Как у всех.
>В какой момент вызывается деструктор для объекта, который "прямо на месте создаётся с помощью конструктора".
Строкой после создания управляет вектор. Читай про rvalue references.
нахуа у тебя там strcmp ??
Спасибо, анон
Зачем Страуструпа?
Он для обучения плох.
Он больше походит как на некий справочник с комментариями.
Заметил. Сложно читается и такое чувство, что написано для тех, кто уже знаком с языком. Чего посоветуешь почитать нюфагу?
Липпман/Прата/Шилдт
Можно просто идти по какой-то одной книжке и смотреть параллельно аналогичные темы в других.
Ну это я к тому что если что-то непонятно, то смотреть у других автором объяснение и примеры.
Результат sizeof беззнаковый. В визуал студии, например, твой код вообще не скомпилируется, выдаст ошибку.
Алсо, sizeof не функция, а оператор.
У тебя i в цикле не проинициализирована, там может быть что угодно, скорее всего там какое-нибудь очень большое число типа 12391284193, вот цикл и прерывается, не делая ни одной итерации. Студия какая-нибудь тебе просто не даст такое скомпилить.
for (int i; i < ArSize; i++)
{
double temp = 0;
cout << "Enter number: ";
cin >> temp;
if (check(temp))
{
numbers = temp;
total += temp;
}
else
break;
}
вот первая строчка цикла for (int i; i < ArSize; i++)
total не обнуляешь
когда среднее считаешь - выводи результат в скобках
i не инициализирована реально.
Я его внимательно читал, и есть серьезные консёрны к дядам а-ля Ниблер, которые, судя по всему, очень сильно оторваны от процесса реальной разработки в своем ворохе шаблонов. Я, скорее, на стороне простых парней, нежели этих очень умных, но далеких от нас супер-дядь.
С++ знаю достаточно, чтобы выступить на С++ Russia в свое время
Работает около 10 секунд
>Почему может очень долго работать стандартная сортировка?
Потому, что она очень долго работает
все также решаю задачки. вроде все работает, но после 29 строки получаю 3.99435e-315 или вообще segmentation fault , помогите плес
https://pastebin.com/87SHDVNw
бля, я тупой.
Не должен
Текст задачи прикладывай хотя бы.
10кк элементов -- это довольно много, особенно если сравнение сложное. К тому же на таком числе элементов квиксорт вырождется в мердж сорт, скорее всего. Сортируй в несколько потоков, хули.
используй чёт-нечётную сортировку с добавкой openmp
да, сложность сортировки выше, зато параллелится не хуже мёрджа и кодится быстро (реализация под с++ на педивикии есть)
отсортируется за хуйню
Современные контроллеры такие толстые (меньше 500 рублей за 100 мгц ARM), что использовать можно все.
Обратить внимание нужно на zero-cost abstractions в первую очередь. Можешь так и гуглить.
std::swap(a, b);
std::swap(c, d);
Сделать что-то типа
std::swap({a, b}, {c, d});
std::tie не помогает. Можно заранее обернуть a, b и c, d в tuple/pair, но тогда их потом обратно распаковывать.
>std::swap({a, b}, {c, d});
Я имел в виду скорее std::swap({a, c}, {b, d}); Надеюсь вы поняли.
В принципе можно сделать какую-нибудь функцию вида (набиваю от балды, давно не метапрограммировал):
template <typename T, typename ...Ts>
void swapmany(T& a, T& b, Ts... args)
{
std::swap(a,b);
swapmany(args...);
}
Но зачем
>Можно заранее обернуть a, b и c, d в tuple/pair
логичный и менее всех остальных извращенский способ
да и к тому же, если у тебя пара значений, то почему ты их изначально в std::pair не хранишь?
ты хоть сам-то понял, что написал?
тебя же таки взяли на работу
значит твоей квалификации должно быть достаточно для выполнения служебных обязанностей
>видишь ли, на с/с++ можно делать практически все, по той причине, что пракатически все сделано на этих яп.
Во-первых не все сделано на них. Во-вторых это не значит, что нужно делать все на C/C++. На Лиспе, Хаскелле, Окамле или Эрланге тоже можно сделать все что угодно.
У тебя выраженный парадокс Блаба.
«Парадокс Блаба» описан в очерке «Побеждая посредственность». Его сущность состоит в том, что программист, знающий некоторый язык («Блаб»), «думает на Блабе» — выражает решение любой задачи в средствах Блаба, а имеющиеся в более мощном языке дополнительные средства в его глазах ничего не стоят, так как он не умеет их применять. Только когда программист по каким-то внешним, дополнительным причинам изучит более мощный язык, он получит возможность смотреть на Блаб «сверху вниз» и увидит его ограниченность. Таким образом, ограниченность Блаба сама по себе не может стать стимулом для изучения более мощного языка, так как для осознания этой ограниченности необходимо уже знать такой язык. Этим Грэм объясняет то, что программисты обычно не желают изучать более эффективные инструменты программирования, чем те, которыми они уже владеют (в частности, непопулярность Лиспа.
На любом языке можно написать что угодно. Программирование это инженерия. Это значит, что программисты должны решать любые задачи. Некие инженеры то ли выпилили то ли оптимизировали сборщик мусора в Common Lisp, чтобы использовать его вместо Си. Другие пишут свои рантаймы для языков или свои языки, те же vk.com и facebook такое делали. Важно думать не на языке, а использовать язык как инструмент. Думать на языке это парадокс Блаба. Любой язык имеет хоть небольшие, но ограничения. C/C++ одни из худших языков, у которых плюсов намного меньше чем минусов. Но ты их превозносишь. А почему, потому что парадокс Блаба. Оглянись вокруг, есть языки намного мощнее с точки зрения построения простых и мощных программ. И даже если они медленнее чем C/C++ их можно ускорить, это решается. Какими бы быстрыми не были C/C++, их уже не сделаешь лучше.
>видишь ли, на с/с++ можно делать практически все, по той причине, что пракатически все сделано на этих яп.
Во-первых не все сделано на них. Во-вторых это не значит, что нужно делать все на C/C++. На Лиспе, Хаскелле, Окамле или Эрланге тоже можно сделать все что угодно.
У тебя выраженный парадокс Блаба.
«Парадокс Блаба» описан в очерке «Побеждая посредственность». Его сущность состоит в том, что программист, знающий некоторый язык («Блаб»), «думает на Блабе» — выражает решение любой задачи в средствах Блаба, а имеющиеся в более мощном языке дополнительные средства в его глазах ничего не стоят, так как он не умеет их применять. Только когда программист по каким-то внешним, дополнительным причинам изучит более мощный язык, он получит возможность смотреть на Блаб «сверху вниз» и увидит его ограниченность. Таким образом, ограниченность Блаба сама по себе не может стать стимулом для изучения более мощного языка, так как для осознания этой ограниченности необходимо уже знать такой язык. Этим Грэм объясняет то, что программисты обычно не желают изучать более эффективные инструменты программирования, чем те, которыми они уже владеют (в частности, непопулярность Лиспа.
На любом языке можно написать что угодно. Программирование это инженерия. Это значит, что программисты должны решать любые задачи. Некие инженеры то ли выпилили то ли оптимизировали сборщик мусора в Common Lisp, чтобы использовать его вместо Си. Другие пишут свои рантаймы для языков или свои языки, те же vk.com и facebook такое делали. Важно думать не на языке, а использовать язык как инструмент. Думать на языке это парадокс Блаба. Любой язык имеет хоть небольшие, но ограничения. C/C++ одни из худших языков, у которых плюсов намного меньше чем минусов. Но ты их превозносишь. А почему, потому что парадокс Блаба. Оглянись вокруг, есть языки намного мощнее с точки зрения построения простых и мощных программ. И даже если они медленнее чем C/C++ их можно ускорить, это решается. Какими бы быстрыми не были C/C++, их уже не сделаешь лучше.
Ничего ты на нем не сделаешь. И никто другой не сделает. Даже простой алгоритм на нем будет выглядеть как простыня.
>Однако такое балавство чревато десериализацией личности, осуществляющей выробатку
>необходимость в их использование
>для анализва при близко-сопряженного спектра функций
Совсем ты поехал, шизик, уже гласные путать начал.
То что ООП костыль - он прав. В остальном, я бы по другому сформулировал почему это костыль.
Статья "Почему объектно-ориентированное программирование провалилось?" http://blogerator.org/page/oop_why-objects-have-failed
>Этим Грэм объясняет то, что программисты обычно не желают изучать более эффективные инструменты программирования, чем те, которыми они уже владеют (в частности, непопулярность Лиспа.
Со статьи Грэма прошло 18 лет, любой фронтэндер пилит асинхронный код на жс с монадами, на питоне написаны и используются CAS для обучения нейросетей, go худо-бедно используется, взлетает rust, руби-разработчики переходят на эликсир, а лисп как был в жопе, так и остался в жопе. Но это не лисп обосрался, это ему парадокс блаба в штаны насрал.
"Программисты обычно не желают изучать более эффективные инструменты программирования, чем те, которыми они уже владеют" - это ложное утверждение. Программисты желают изучать более эффективные инструменты программирования, если это повышает их эффективность и зарплату. А бизнес желает вводить такие инструменты, они же эффективные. Этот процесс не очень быстрый, но работающий в эту сторону. И что языки, что фреймворки, усложняются. А вот лисп нихуя не эффективный, это хуевый язык, героически решающий проблемы, которые он сам перед собой поставил.
Common Lisp непопулярен, потому что он перегруженное сущностями неортогональное говно с хуевым синтаксисом, от которого прутся поехавшие.
А С++ популярен, потому что свою задачу он решает хорошо. Какую задачу? Бля, да это же парадокс блаба - лиспер нихуя не знает С++ и что с помощью него делает. Бгг.
Лисп последний язык, который осваивает программист. Поэтому лиспер не может не знать C++, потому что в начале он освоил его, а потом Лисп. Так же и Руби, это обычно один из последних языков. К нему приходят из C/C++/Java. Но почти никогда не бывает так, чтобы в C/C++/Java пришли из Руби.
Парадокс Блаба бывает у тех, кто знает только один язык, или несколько но с одной и той же парадигмой. Программисты C/C++/Java больше всех этим страдают. Потому что знают только эти 3 ограниченных языка, одинаковых по сути. Лисп почти никогда не бывает первым языком, поэтому у тех кто на нем пишет не может быть парадокса Блаба. Они уже знают несколько языков.
>Некие инженеры то ли выпилили то ли оптимизировали сборщик мусора в Common Lisp, чтобы использовать его вместо Си
А могли бы сразу взять нормальный язык вместо динамической скриптодрисни. Такое себе достижение - судя по тому что ты это не используешь и даже толком не знаешь насколько успешно оно получилось.
>И даже если они медленнее чем C/C++ их можно ускорить, это решается.
О, мой любимый борщеаргумент. Разумеется это неправда. JS тому отличный пример, зачем далеко ходить.
>>21883
>Потому что знают только эти 3 ограниченных языка, одинаковых по сути.
Очнись, сейчас 2019 на дворе, все мейнстримные языки калька друг с друга. Язык без лямбд нужно с огнем искать и не найти. Это в 2000-х функциональщина была чем-то элитным, а теперь жс-дристня в каждом браузере есть, а bind в плюсовом стандарте. Уже давно не нужны все эти хаскели чтобы со всем этим играться. Твои понты устарели минимум на десятилетие. Все что могли предложить функциональные языки успешно перетекло в мейнстрим, лисп изучать совсем не обязаельно.
>«Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой.
>Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг — из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле».
Чертовски прав, я, блять, стопятсот раз перепишу, потому что тот метод не обязательно здесь, блять, а эти методы в отдельную капсулу можно выделить, а вот это лишнее и можно убрать.
Сколько плюсов, столько же и минусов...
подобные != одинаковые
особенно, если из С сразу в ЖАБУ мимо крестов, врубиться в ООП сложно, знакомыми останутся разве что main, некоторые операторы и простейшие типы.
>Лисп последний язык, который осваивает программист
Согласен, когда тебе осталось жить несколько дней, только на такое говно мамонта можно их потратить. Нет, язык может и хороший, даже применяется много где, но кому оно надо? WutFace
>А могли бы сразу взять нормальный язык вместо динамической скриптодрисни. Такое себе достижение - судя по тому что ты это не используешь и даже толком не знаешь насколько успешно оно получилось.
Во-первых, есть статья на эту тему. Если не ошибаюсь 1996 года. Опубликована в специальном научном журнале. То есть прочитать ее можно только за деньги. Во-вторых, они и так взяли нормальный язык. С типизацией у CL все в порядке.
>А могли бы сразу взять нормальный язык вместо динамической скриптодрисни. Такое себе достижение - судя по тому что ты это не используешь и даже толком не знаешь насколько успешно оно получилось.
Факт в том, что инженеры сделали Лисп языком для реал-тайма. Хотя такие как ты постоянно кичатся, что такое можно писать только на C/C++. Хотя сами то никогда и не писали никакого реал-тайма.
>Разумеется это неправда. JS тому отличный пример, зачем далеко ходить.
Пример чего? У JS свой особый рантайм. Он решает свои задачи. Инженеры взяли, и обвесили его, и получился Node.js. И таким образом JS сейчас почти на любых устройствах поддерживается. За несколько лет экосистема JS обросла огромным количеством кода. В C/C++ по сей день нет такой крутой экосистемы. И никогда не будет.
>Все что могли предложить функциональные языки успешно перетекло в мейнстрим, лисп изучать совсем не обязаельно.
Система типов Хиндли-Милнера везде? А Лисповое метапрограммирование? Только в лиспах оно есть.
>подобные != одинаковые
>особенно, если из С сразу в ЖАБУ мимо крестов, врубиться в ООП сложно, знакомыми останутся разве что main, некоторые операторы и простейшие типы.
Какая разница, ООП там не причем. Концептуально это Си-подобные императивные языки.
Подобные, да. Но парадигмы отличаются. Сравнивать жабу и кресты некорректно. Сравнивай жабу с сисярпом.
>Согласен, когда тебе осталось жить несколько дней, только на такое говно мамонта можно их потратить. Нет, язык может и хороший, даже применяется много где, но кому оно надо? WutFace
Лисп это последняя ступень языков. Не все до нее вообще доходят. Поэтому мало кто на Лиспе писал или пишет. Зато про C/C++ знает любой школьник. А это значит, что уровень программистов на этих языках в несколько раз ниже. В Лисп приходят уже с годами опыта и с десятком языков за плечами.
Да банально тем, что в Сисьтом С нет классов, а в ЖАБЕ нет указателей - только ссылки и то на стеке...
>Все что могли предложить функциональные языки успешно перетекло в мейнстрим, лисп изучать совсем не обязаельно.
Ничего не перетекло. Лямбды это еще не все. Мышление программистов стало еще более ограниченное.
Сразу видно, что ты не отличаешь языки как инструменты. Для тебя все они одинаковые, все понты, и бла-бла-бла. Это похоже на парадокс Блаба. Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать.
>Да банально тем, что в Сисьтом С нет классов, а в ЖАБЕ нет указателей - только ссылки и то на стеке...
И что с того. Концептуально код от этого не меняется. И там и там императивный.
>императивный
ПНаскаль тоже реализует императивную парадигму.
Он тоже С от этого стал?
В жабе от С только простейшие типы, операторы да сама жабаэм, почему все сгоняют в одну парашу?
>ПНаскаль тоже реализует императивную парадигму.
>Он тоже С от этого стал?
Да, но он кстати не Си-подобный.
>>22007
>В жабе от С только простейшие типы, операторы да сама жабаэм, почему все сгоняют в одну парашу?
С точки зрения парадигмы, это похожие языки. Код на них выглядит как последовательное изменение состояния программы. Scala например уже совсем другая. Хотя и поддерживает императивщину.
В том-то и дело, анон, что похожие только лишь с точки зрения парадигмы. Спасибо, что решил напомнить мне суть императивной парадигмы, но тогда либо перечисляй все языки с императивщиной, либо не ставь рядом жабу и кресты, это языки лишь в стопяцотом колене имеют схожие корни, но не более того. Это неприятно читать.
Почему visual studio так долго устанавливается?
Что это вообще такое?
Как я понимаю это ИДЕ и компилятор. И, видимо, еще что-то...
Объясните кто разбирается, плес
Это дохуя всего. IDE, компилятор, SDK винды, дотнет, и прочее
Так она весит то сколько. Полная версия 30ГБ.
>Лямбды это еще не все
Давайте придумаем, что должно входить в Better C.
Это должен быть лоу-левел язык с:
>сильной системой типов (желательно с дедукцией типов, но можно и без этого)
>нормальным параметрическим полиморфизмом
>нормальными uniqueness type и линейными типами без костылей в виде семантики движения
>с нормальной моделью компиляции
>с нормальными корутинами и асинхронностью (тут либо должно быть сразу встраивание в язык, либо возможность менять синтаксис, потому что те же упомянутые выше по треду ranges, реализованные как обычная библиотека, требуют дохрена строк кода)
>с поддержкой SOA/AOS в стиле Jai
>со встроенной поддержкой интринсиков процессора
Вроде как Раст многим пунктам удовлетворяет, но что-то в нём не то.
> Это похоже на парадокс Блаба. Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать.
Пиздежь, я более чем уверен, что ты даже пару реализаций на Хаскеле на назовешь. Я вот с ходу могу вспомнить десяток популярных которые на С/С++.
>>21992
>Хотя сами то никогда и не писали никакого реал-тайма.
Вот кстати, это возражение очень смешное. Можно подумать реал-тайм это что-то такое особо элитное, дико хайтечное и недоступное обычным смертным. Хотя на самом деле - любая компьютерная игрушка это уже "софт" реал-тайм со всеми вытекающими.
>>21991
>Во-первых, есть статья на эту тему.
>1996 года.
>Опубликована в специальном научном журнале.
>То есть прочитать ее можно только за деньги.
>нормальный язык.
>С типизацией у CL все в порядке.
Суть борщетехнологий просто. Ору
>Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы
Насколько я помню, тру языки для написания хай-энд компиляторов и парсеров в научной среде - окамлы и другие ML, не?
Компиляторов чего?
>Пиздежь, я более чем уверен, что ты даже пару реализаций на Хаскеле на назовешь. Я вот с ходу могу вспомнить десяток популярных которые на С/С++.
Я регулярно вижу вакансии на Хаскелле, а уж на гитхабе проектов на нем вообще море. И что интересно, на Хаскелле проекты всегда крутые. Зайди в Хаскелл чат и сам спроси что они пишут. Можно просто чат полистать даже чтобы понять. И сравни с тем чем в основном занимаются C/C++ разрабы, скукотищей.
>Вот кстати, это возражение очень смешное. Можно подумать реал-тайм это что-то такое особо элитное, дико хайтечное и недоступное обычным смертным. Хотя на самом деле - любая компьютерная игрушка это уже "софт" реал-тайм со всеми вытекающими.
Просто адепты C/C++ постоянно козыряют, что реалтайм. И типа на Хаскелле такое не напишешь. Чепуха, и на Хаскелле можно написать , а еще потом выясняется, что там реал-тайма у них никакого нету, а просто слова.
>Суть борщетехнологий просто. Ору
Нашел статью, написана в 91, даже не в 96 https://dl.acm.org/citation.cfm?id=114679&dl=ACM&coll=DL
А вот сайт этой компании http://www.gensym.com/?option=com_content&view=article&id=47&Itemid=54
Почитай внизу ABOUT GENSYM, там вкратце написано чем они занимаются. Их система написана на CL. Они затюнили сборщик мусора, или выпилили вообще. И спокойно используют CL.
>Насколько я помню, тру языки для написания хай-энд компиляторов и парсеров в научной среде - окамлы и другие ML, не?
А чем Хаскелл хуже ML или Окамла? Это очень похожие языки, можно сказать из одного семейства.
Присмотрелся.
> обработка ошибок как в win32api
> дженериков нет и не будет
> официальный сайт и документация без подсветки синтаксиса, потому что главный разработчик (!) языка считает что она не нужна (!!)
> ущербный менеджер пакетов
> конфликты т.к. один монолитный путь GOPATH на все
>Их система написана на CL.
Была написана. В 1996 году. Каких-то жалких 23 года назад. Ее разработчики на пенсию уже вышли. А система могла быть 10 раз переписана с на любом языке.
>>22346
>Ну давай разъясни чем они отличаются.
OCaml может в ООП например. А так конечно, что один, что другой, что С++, что Python все одинаковая текстовая дрисня.
>Была написана. В 1996 году. Каких-то жалких 23 года назад. Ее разработчики на пенсию уже вышли. А система могла быть 10 раз переписана с на любом языке.
Статья 1991 года, а не 96-го. Система естественно еще старше. Она упоминается в журнале Computer World 1988 года. И работает до сих пор, ее не переписывали. Погугли G2. Вот статья 2010 года. Там про G2 и разные Лиспы http://www.ijcst.com/vol1issue2/monika.pdf
>Была написана. В 1996 году. Каких-то жалких 23 года назад. Ее разработчики на пенсию уже вышли. А система могла быть 10 раз переписана с на любом языке.
Эта система огромна. Ее не будут переписывать. Во первых это невозможно. Во вторых Лисп дает им те фичи, которые они нигде больше не получат, только в Лиспах. Эту систему используют Наса, Dow, и много кто еще.
Здесь хорошо описано http://www.drdobbs.com/review-g2-82/199102973
>OCaml может в ООП например. А так конечно, что один, что другой, что С++, что Python все одинаковая текстовая дрисня.
Это не важно. Он тоже из ML семейства.
>Каких-то жалких 23 года назад. Ее разработчики на пенсию уже вышли.
Спроектировали систему 2 человека. Они же и владельцы компании. Естественно они уже не пишут код. У них денег достаточно чтобы держать штат сильных архитекторов.
То есть программисты лиспа нужны только чтобы поддерживать легаси типа вот этого говна мамонта конца 80х, которое уже никто не берется переписать на нормальном языке? То есть как Кобол? Понятно.
Получается все чем ты пользуешься, включая ОС - легаси-...овно. Почему тебя так крутит от того, что кто-то решает инженерные задачи успешно, создает крутые проекты вне мейнстрима?
Ты мыслишь как дилетант. Проекту больше 20 лет. Он огромен, это не сайтик. Никто в здравом уме не будет это переписывать. Тем более что проекты на Лиспах не переписывают на другие языки, это бессмысленно. Все завязано на макросах. У них там встроенные языки. На любом другом языке такой проект потребует сотни, если не тысячи программистом, и неизвестно сколько денег и времени.
>Пиздежь, я более чем уверен, что ты даже пару реализаций на Хаскеле на назовешь
На эМэЛях, лиспах, фортах пишутся eДСЛи, как правило они узкоспециализированные и юзаются в коммерческих проектах как ноухау, но можно и нагуглить опенсурсные.
Суть в том, что любую грамотно спроектированную программу можно рассматривать как еДСЛ. Хачкель и лисп - инструменты, позволяющие выглядеть этому еДСЛ, как языку со своей семантикой и синтаксисом. В СИ, жабе и прочем говне такое невозможно - всегда будут вылезать уёбищность хост языков.
Давайте троллить их оператором цикла.
Пишут. Clojure используют или в Boeing или в AirBus. Есть десятки и сотни очень крупных проектов на Лиспах. В основном это серьезные продукты, именно продукты, не заказной софт. В консалтинге Лиспа естественно нет. Чуть более мелких проектов еще больше. В Питере есть команда Health Samurai, они пишут на Clojure серьезную систему, уже много лет.
>Круто, конечно, что когда-то там в 80х, когда С++ не было, кто-то написал нормальный софт на лиспе. А сейчас на лиспе пишут что-нибудь?
У тебя вообще не правильная постановка вопроса. Какая разница пишут или нет? Все редкое всегда самое ценное. Например на Феррари очень мало кто ездит, на нее трудно найти запчасти, но мало кто из-за этого не стал бы на ней ездить. Или какой-нибудь раритетный хотрод. Он ценен именно тем, что сделал качественно, по старинке, не как у всех. Лисп тоже ценен этим. Его создавали математики. Давно, когда еще люди делали все с умом. Тогда не было ширпотреба. Аналогов до сих пор нет. Это вершина высокоуровневых языков.
Вот и Вагиф Абилов говорит, что нет причин не писать на языке, если им мало пользуются. Они начали писать на F#. Он тоже мало распространен. Посмотри сам, он хорошо объясняет почему доводы о малом распространении неправильные. Очень интересный доклад, а Вагиф очень интересный рассказчик.
https://www.youtube.com/watch?v=GXuol9L_0KI
Иди работать.
>пишут на Clojure серьезную систему, уже много лет.
ЛОЛ, прямо как Кнут, который свою книжку писал 40 лет и так и не дописал.
хватит толстить, ты ещё нам Пролог посоветуй.щ
У меня возникает ощущение, что с тобой что-то не так. Может быть тебе найти себе другое занятие. Ты вообще понимаешь, что серьезные проекты живут много лет. Все время эти проекты поддерживают. Фиксят баги, добавляют новые фичи. У тебя извращенный взгляд на все.
Анон тебе говорит о том, что программа написана так, что легко поддерживается и улучшается, и нет необходимости переписывать её с нуля, как это в большинстве случаев происходит, а ты со своим неуместным сарказмом тут.
>найти себе другое занятие
>У тебя извращенный взгляд на все.
Откуда ты все обо мне знаешь?
>Ты вообще понимаешь, что серьезные проекты живут много лет
Я отказываюсь это понимать.
Обычно, в норме, если человек или группа людей ставят себе целью решить задачу, то они таки находят ей решение, после чего берутся за что-нибудь новое.
А когда десятками лет пилят и перепиливают один и тот же электронный блокнотик, это тупо распил и желание ничего по жизни не делать.
>>22505
Та, которая 40 лет писалась - она одна, в нескольких томах.
>Обычно, в норме, если человек или группа людей ставят себе целью решить задачу, то они таки находят ей решение, после чего берутся за что-нибудь новое.
Health Samurai написали медицинскую систему. И теперь продают ее в клиники США. Если они ее выбросят, то за счет чего зарабатывать? И зачем писали тогда?.
>Я отказываюсь это понимать.
Пересмотри свои взгляды на жизнь. С таким подходом тебе будет не легко. Нужно быть гибче.
>Та, которая 40 лет писалась - она одна, в нескольких томах.
Ну вот, таки написал. А говоришь, что нет. Уже 3 издание есть.
>за счет чего зарабатывать?
Погоди, ты контекст-то не упускай из виду.
Речь-то о сравнительной эффективности языков программирования. В пику сиплюсплюсам поставили в пример некую мед. систему, которую делают уже 20 лет. Это какбе не в пользу эффективности языка говорит.
А система оказывается уже написана и продается. И все, что в данном случае от языка требуется - это по большому счету имитация бурной деятельности. Вот не похеру на каком языке эту имитацию делать?
Короче говоря, если без сарказмов, я твой пример нахожу неудачным в изначальном контексте дискуссии. Тем более, что Самураевская система не уникальна и есть много аналогов, написанных на других языках.
>Короче говоря, если без сарказмов, я твой пример нахожу неудачным в изначальном контексте дискуссии. Тем более, что Самураевская система не уникальна и есть много аналогов, написанных на других языках.
Ее пишет маленькая команда. На C++ потребовалось намного больше людей. Кода на Clojure меньше. Поэтому пишется быстрее. Сама разработка на Лиспах быстрее на много, REPL Driven Development. Поддерживать проект проще. Можно переписывать прямо рабочий код, который запущен. И самое важно, язык дает такие плюшки, которых нет в других языках. Макросы к примеру.
Ты видать совсем не понимаешь как работает промышленный софт. В любой программе есть баги, и всегда появляются новые хотелки. Заказали сделать новый функционал. Сделали. Нашли багу. Выпилили.
>разработка на Лиспах быстрее на много
>Поддерживать проект проще
>переписывать прямо рабочий код, который запущен
В сухом остатке
>В любой программе есть баги, и всегда появляются новые
Ты оказываешься с полурабочим проектом на руках. И все, что остается, это прокачивать навык продажи нерабочего говна.
>Ты видать совсем не понимаешь как работает промышленный софт
Я совсем не понимаю зачем вообще курить языки программирования, если ты любое говно умеешь продавать? Не проще ли найти рынок попроще, недвижимость там, подержанные яхты или еще чего?
>Ты оказываешься с полурабочим проектом на руках.
Ты оказывается вообще не в теме. Зачем тебе программирование, если ты не понимаешь в нем ничего, и не хочешь понимать.
Сколько лет пишут Windows/Linux/MacOS? И ты хочешь сказать в них нет багов? И если их будут писать еще 100 лет, в них все равно будут баги. И кроме того, нужно каждый день добавлять новый функционал.
Разработка софта это не построение здания. Один раз построили и все. Софт как живой организм, он постоянно движется, его изменяют, улучшают. Если этот процесс остановится, то софт умрет.
Лисп лучший язык (не кложа и не cl?)
в голос с бинго
>Лисп последний язык, который осваивает программист
Ты из каких маняфантазий это взял? Почему лисп, почему не хаскель, coq, agda или ATS?
Нет, чувак, лисп, это такой энтрилевел немейнстримных языков программирования. Живет себе школьник, живет, пишет хелловорлды, а потом открывает то, что, по мнению школьника, позволяет ему наебать систему: нужно выучить волшебную пилюлю, и он сразу же станет крутым высокооплачиваемым программистом. И открывает он с большой вероятностью лисп.
>Парадокс Блаба бывает у тех, кто знает только один язык, или несколько но с одной и той же парадигмой
Нет. Парадокс Блаба никаких суженных трактовок не допускает, блабом может быть и лисп. Я на бордах давно и помню эту гонку шизиков за более крутым языком. Сначала школьники читали зеноцифала на sql.ru и приходили с лиспом. Потом кто-то выучил хаскель и начал ссать на лисперов. Потом хаскель стал слишком мейнстримом и обоссывать начали уже любители пруверов.
Проблема в том, что Грэм не прав: нет никакого континуума мощности языков. И лисп говно, и хаскель говно, а пруверы нужно использовать там, для чего они разрабатывались, а не чтобы выебываться на бордах.
>>21992
>Факт в том, что инженеры сделали Лисп языком для реал-тайма. Хотя такие как ты постоянно кичатся, что такое можно писать только на C/C++. Хотя сами то никогда и не писали никакого реал-тайма.
Реалтайм это всего лишь гарантированное время выполнения, которое может быть произвольно большим. То есть если у тебя программа отвечает на запросы сутки, но гарантированно отвечает, то это реалтайм.
В лиспе есть сборщик мусора, поэтому если использовать стандартные сборщики мусора, реалтайм в нем невозможен - в любой момент сборщик может застопорить код и начать собирать мусор.
Проблема в том, что если ты знаешь лисп настолько, чтобы написать для него сборщик мусора, то писать хороший С++ код без сборки мусора совсем для тебя проблемой не будет. И получить из коробки то, длячего в лиспе нужно писать свой сборщик.
>>21994
>В C/C++ по сей день нет такой крутой экосистемы. И никогда не будет.
Экосистема С называется юникс.
>>21995
>Система типов Хиндли-Милнера везде? А Лисповое метапрограммирование? Только в лиспах оно есть.
Лисп является динамической скриптодрисней. Хиндли-Милнер есть в статических языках.
Это к вопросу, о последнем языке и прочей еботе. Если бы ты действительно знал, что такое ХМ, ты бы уже перешел с лиспа на хаскель.
Потому что как динамическая скриптродрисня лисп нааамного хуже питона или жс, а как йоба язык для йоба мамкиных мыслителей он сосет у статических функциональных языков.
>>22005
>Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать.
Интерпретаторы и компиляторы пишут для llvm, который написан на С++.
>>22384
>Статья 1991 года, а не 96-го. Система естественно еще старше. Она упоминается в журнале Computer World 1988 года. И работает до сих пор, ее не переписывали
О том и речь, что лисп это древняя скриптодрисня, которая до сих пор используется в древнем как говно мамонта софте. Как только появились нормальные скриптовые языки, от этого фортрана мира скриптов отказались.
>>22441
>На эМэЛях, лиспах, фортах пишутся eДСЛи, как правило они узкоспециализированные и юзаются в коммерческих проектах как ноухау, но можно и нагуглить опенсурсные.
А вот и читатель зиноцефала. Не поскажешь, где этот мегагений сейчас, наверное запилил свой стартап и с такими-то знаниями стал триллиардером.
>>22567
>И самое важно, язык дает такие плюшки, которых нет в других языках. Макросы к примеру.
Макросы - зло и в 100% случаев являются неправильным решением.
Добро они для программистов, которые в достаточно старой системе могут вообще не бояться увольнения, потому что кроме них в этом говнище все равно никто не разберется.
>Лисп последний язык, который осваивает программист
Ты из каких маняфантазий это взял? Почему лисп, почему не хаскель, coq, agda или ATS?
Нет, чувак, лисп, это такой энтрилевел немейнстримных языков программирования. Живет себе школьник, живет, пишет хелловорлды, а потом открывает то, что, по мнению школьника, позволяет ему наебать систему: нужно выучить волшебную пилюлю, и он сразу же станет крутым высокооплачиваемым программистом. И открывает он с большой вероятностью лисп.
>Парадокс Блаба бывает у тех, кто знает только один язык, или несколько но с одной и той же парадигмой
Нет. Парадокс Блаба никаких суженных трактовок не допускает, блабом может быть и лисп. Я на бордах давно и помню эту гонку шизиков за более крутым языком. Сначала школьники читали зеноцифала на sql.ru и приходили с лиспом. Потом кто-то выучил хаскель и начал ссать на лисперов. Потом хаскель стал слишком мейнстримом и обоссывать начали уже любители пруверов.
Проблема в том, что Грэм не прав: нет никакого континуума мощности языков. И лисп говно, и хаскель говно, а пруверы нужно использовать там, для чего они разрабатывались, а не чтобы выебываться на бордах.
>>21992
>Факт в том, что инженеры сделали Лисп языком для реал-тайма. Хотя такие как ты постоянно кичатся, что такое можно писать только на C/C++. Хотя сами то никогда и не писали никакого реал-тайма.
Реалтайм это всего лишь гарантированное время выполнения, которое может быть произвольно большим. То есть если у тебя программа отвечает на запросы сутки, но гарантированно отвечает, то это реалтайм.
В лиспе есть сборщик мусора, поэтому если использовать стандартные сборщики мусора, реалтайм в нем невозможен - в любой момент сборщик может застопорить код и начать собирать мусор.
Проблема в том, что если ты знаешь лисп настолько, чтобы написать для него сборщик мусора, то писать хороший С++ код без сборки мусора совсем для тебя проблемой не будет. И получить из коробки то, длячего в лиспе нужно писать свой сборщик.
>>21994
>В C/C++ по сей день нет такой крутой экосистемы. И никогда не будет.
Экосистема С называется юникс.
>>21995
>Система типов Хиндли-Милнера везде? А Лисповое метапрограммирование? Только в лиспах оно есть.
Лисп является динамической скриптодрисней. Хиндли-Милнер есть в статических языках.
Это к вопросу, о последнем языке и прочей еботе. Если бы ты действительно знал, что такое ХМ, ты бы уже перешел с лиспа на хаскель.
Потому что как динамическая скриптродрисня лисп нааамного хуже питона или жс, а как йоба язык для йоба мамкиных мыслителей он сосет у статических функциональных языков.
>>22005
>Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать.
Интерпретаторы и компиляторы пишут для llvm, который написан на С++.
>>22384
>Статья 1991 года, а не 96-го. Система естественно еще старше. Она упоминается в журнале Computer World 1988 года. И работает до сих пор, ее не переписывали
О том и речь, что лисп это древняя скриптодрисня, которая до сих пор используется в древнем как говно мамонта софте. Как только появились нормальные скриптовые языки, от этого фортрана мира скриптов отказались.
>>22441
>На эМэЛях, лиспах, фортах пишутся eДСЛи, как правило они узкоспециализированные и юзаются в коммерческих проектах как ноухау, но можно и нагуглить опенсурсные.
А вот и читатель зиноцефала. Не поскажешь, где этот мегагений сейчас, наверное запилил свой стартап и с такими-то знаниями стал триллиардером.
>>22567
>И самое важно, язык дает такие плюшки, которых нет в других языках. Макросы к примеру.
Макросы - зло и в 100% случаев являются неправильным решением.
Добро они для программистов, которые в достаточно старой системе могут вообще не бояться увольнения, потому что кроме них в этом говнище все равно никто не разберется.
>Нет, чувак, лисп, это такой энтрилевел немейнстримных языков программирования.
Просто тебя не устраивает, что Лисп мощнее чем C++. Ты же не привел ни одного аргумента.
>Парадокс Блаба никаких суженных трактовок не допускает, блабом может быть и лисп.
Вот именно. Ты уходишь от трактовки. А она проста. Есть программист знающий язык Блаб. Он думает на нем. Но почему? Потому что не видел других языков, так написал Грэм. Именно потому, что не видел других языков. Ты опускаешь этот смысл, и еще говоришь что я неправильно трактую. Лисп не может быть Блабом, потому что в Лисп приходят из других языков. Они уже знают кучу языков, включая C++ скорее всего.
Ты снова не привел ни одного аргумента.
>Реалтайм это всего лишь гарантированное время выполнения, которое может быть произвольно большим.
Так вы же говорите, что на языках со сборщиком мусора это невозможно. Я это опроверг приведя реальный пример.
>Проблема в том, что если ты знаешь лисп настолько, чтобы написать для него сборщик мусора, то писать хороший С++ код без сборки мусора совсем для тебя проблемой не будет. И получить из коробки то, длячего в лиспе нужно писать свой сборщик.
Проблема в том, что лиспер такого уровня никогда не будет писать на C++. Это подтверждают статьи и проекты. Проще решить задачу сборщика мусора один раз и потом всю жизнь писать на мощнейшем языке, нежели всю жизнь строить костыли и бороться с ограничением языка.
>Экосистема С называется юникс.
Не правда. Си и на винде работает. Получается там нет у него экосистемы. В JS экосистема кросс-платформенная.
Что ты называет экосистемой? Есть в Си менеджер пакетов? В JS огромное количество удобных инструментов для решения многих задач разработки. Они единообразны. В Си все разрозненное, архаичное, устаревшее. Нет там такой простоты и удобства.
>Лисп является динамической скриптодрисней.
Снова у тебя словесный понос. Снова ты без аргументов. Никаких адекватных доводов против динамической типизации ты не приведешь. И доводов за статическую тоже. Я давно заметил, что адепты статической типизации мыслят угловато. Они очень ограничены. Категоричны. И обычно не могут последовательно излагать свои мысли. Так как их мозг связан, их руки связаны. Они привыкли быть связанными статической типизацией. Динамическая типизация развязывает руки.
>Интерпретаторы и компиляторы пишут для llvm, который написан на С++.
Да неужели. Можно подумать все они только для LLVM написаны. А что же было до LLVM? Не писали компиляторов/интерпретаторов? Снова ты без аргументов.
>О том и речь, что лисп это древняя скриптодрисня, которая до сих пор используется в древнем как говно мамонта софте. Как только появились нормальные скриптовые языки, от этого фортрана мира скриптов отказались.
Опять словесный понос без единого аргумента. Ты пишешь на потомке Фортрана если что.
>Макросы - зло и в 100% случаев являются неправильным решением.
Ты про какие макросы, про Сишные вероятно? Тогда я согласен. Сомневаюсь, что ты знаешь про Лисповые макросы.
>Лисп является динамической скриптодрисней.
Есть типизированные Лиспы, Typed Racket к примеру.
>Просто тебя не устраивает, что Лисп мощнее чем C++.
Для начала необходимо было бы дать определение "X мощнее Y", затем доказать "мощнее значит лучше" и из этого уже выводить какой-то силлогизм.
Почему меня это могло бы не устраивать? Я скриптую на лиспе свой emacs и мне как-то похуй, что там за скриптовый язычок. Если бы лисп имел хоть какой-то смысл, я бы на нем писал. Проблема в том, что смысла нет.
>Ты же не привел ни одного аргумента.
Я не привожу аргументы за свою позицию, я планомерно разъебываю твою. Ты написал: "Лисп последний язык, который осваивает программист", что является ложью.
Далее:
>Проблема в том, что лиспер такого уровня никогда не будет писать на C++. Это подтверждают статьи и проекты.
Они подтвеждают только то, что некоторые лисперы такого уровня не будут писать на С++. Они не подтверждают то, что все лисперы так будут делать.
>Не правда. Си и на винде работает. Получается там нет у него экосистемы.
Есть, cygwin называется, плюс MS запилила убунту. А вот без утилит GNU да, винда становится очень грустной для разработки на Си. Но разработка на ноде под нее ничуть не веселее.
>Есть в Си менеджер пакетов
dpkg, например
>В Си все разрозненное, архаичное, устаревшее. Нет там такой простоты и удобства.
Ну так и пиздуй писать на жс, жсребенок, при чем здесь лисп? С лиспом ты вообще охуеешь от кучи левых биндингов к сишным библиотекам, написанным аутистами-энтузиастами, и от необходимости компилировать эти библиотеки под последние версии ОС. Хули ты хотел, жизнь вне мейнстрима тяжела и страшна.
>Никаких адекватных доводов против динамической типизации ты не приведешь
Аргумент был не против динамической скриптодрисни, аргумент был против человека, который спизданул "Хиндли-Милнер", понятия не имея, что это такое.
>Да неужели. Можно подумать все они только для LLVM написаны. А что же было до LLVM? Не писали компиляторов/интерпретаторов? Снова ты без аргументов.
Алё, это твой аргумент разъебан, ты писал "Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать", на что ответ в общем-то простой, самая популярная платформа для создания новых языков написана на С++.
Ты сначала приведи аргумент, который нельзя разъебать, а потом кукакрекай что-то про то, что у меня-де аргументов нет.
>Опять словесный понос без единого аргумента.
Вот здесь аргумент как раз есть, попробуй его найти.
>Ты про какие макросы, про Сишные вероятно? Тогда я согласен. Сомневаюсь, что ты знаешь про Лисповые макросы.
Понятно, что ты сомневаешься. Ведь в твоей картине мира все убого и черно-бело: есть лисперы в белом, а есть идиоты, которые пишут на С++. Но как всегда в убогой подростковой картине мира, такой взгляд ничего не стоит.
Для начала попробуй привести пример того, что требует макросов и никак иначе. А я покажу лучший способ и почему способ на макросах хуевый.
>Просто тебя не устраивает, что Лисп мощнее чем C++.
Для начала необходимо было бы дать определение "X мощнее Y", затем доказать "мощнее значит лучше" и из этого уже выводить какой-то силлогизм.
Почему меня это могло бы не устраивать? Я скриптую на лиспе свой emacs и мне как-то похуй, что там за скриптовый язычок. Если бы лисп имел хоть какой-то смысл, я бы на нем писал. Проблема в том, что смысла нет.
>Ты же не привел ни одного аргумента.
Я не привожу аргументы за свою позицию, я планомерно разъебываю твою. Ты написал: "Лисп последний язык, который осваивает программист", что является ложью.
Далее:
>Проблема в том, что лиспер такого уровня никогда не будет писать на C++. Это подтверждают статьи и проекты.
Они подтвеждают только то, что некоторые лисперы такого уровня не будут писать на С++. Они не подтверждают то, что все лисперы так будут делать.
>Не правда. Си и на винде работает. Получается там нет у него экосистемы.
Есть, cygwin называется, плюс MS запилила убунту. А вот без утилит GNU да, винда становится очень грустной для разработки на Си. Но разработка на ноде под нее ничуть не веселее.
>Есть в Си менеджер пакетов
dpkg, например
>В Си все разрозненное, архаичное, устаревшее. Нет там такой простоты и удобства.
Ну так и пиздуй писать на жс, жсребенок, при чем здесь лисп? С лиспом ты вообще охуеешь от кучи левых биндингов к сишным библиотекам, написанным аутистами-энтузиастами, и от необходимости компилировать эти библиотеки под последние версии ОС. Хули ты хотел, жизнь вне мейнстрима тяжела и страшна.
>Никаких адекватных доводов против динамической типизации ты не приведешь
Аргумент был не против динамической скриптодрисни, аргумент был против человека, который спизданул "Хиндли-Милнер", понятия не имея, что это такое.
>Да неужели. Можно подумать все они только для LLVM написаны. А что же было до LLVM? Не писали компиляторов/интерпретаторов? Снова ты без аргументов.
Алё, это твой аргумент разъебан, ты писал "Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать", на что ответ в общем-то простой, самая популярная платформа для создания новых языков написана на С++.
Ты сначала приведи аргумент, который нельзя разъебать, а потом кукакрекай что-то про то, что у меня-де аргументов нет.
>Опять словесный понос без единого аргумента.
Вот здесь аргумент как раз есть, попробуй его найти.
>Ты про какие макросы, про Сишные вероятно? Тогда я согласен. Сомневаюсь, что ты знаешь про Лисповые макросы.
Понятно, что ты сомневаешься. Ведь в твоей картине мира все убого и черно-бело: есть лисперы в белом, а есть идиоты, которые пишут на С++. Но как всегда в убогой подростковой картине мира, такой взгляд ничего не стоит.
Для начала попробуй привести пример того, что требует макросов и никак иначе. А я покажу лучший способ и почему способ на макросах хуевый.
>Для начала необходимо было бы дать определение "X мощнее Y", затем доказать "мощнее значит лучше" и из этого уже выводить какой-то силлогизм.
>Почему меня это могло бы не устраивать? Я скриптую на лиспе свой emacs и мне как-то похуй, что там за скриптовый язычок. Если бы лисп имел хоть какой-то смысл, я бы на нем писал. Проблема в том, что смысла нет.
Так где критерии какой язык мощнее? Опять завуалированные пустые слова.
>Я не привожу аргументы за свою позицию, я планомерно разъебываю твою. Ты написал: "Лисп последний язык, который осваивает программист", что является ложью.
Снова без аргументов. В Лисп приходят после C++. После многих других языков. Так сложилось исторически, и так складывается логически. Потому что этот язык как дзен. Сразу его нельзя понять. Поэтому к нему приходят не сразу. Когда вдоволь намучился, когда начинаешь понимать что важно, а важна простота, универсальность, удобство, тогда и приходишь к дзену. А в Лиспе как раз все это есть, простота, удобство, универсальность.
>Они подтвеждают только то, что некоторые лисперы такого уровня не будут писать на С++. Они не подтверждают то, что все лисперы так будут делать.
Покажи хоть одну статью, где бы автор после Лиспа говорил, что C++ лучше, и писал бы на нем. Я могу привести где автор после C++ и Лиспа говорит, что Лисп лучше. После иномарок на жигули не садятся.
>Есть, cygwin называется, плюс MS запилила убунту. А вот без утилит GNU да, винда становится очень грустной для разработки на Си. Но разработка на ноде под нее ничуть не веселее.
Это все не то. Разрозненные непонятные штуки. Это не экосистема, а обрывки.
>>22915
>dpkg, например
Это не менеджер пакетов Си. Это пакетный менеджер ОС.
>Ну так и пиздуй писать на жс, жсребенок, при чем здесь лисп? С лиспом ты вообще охуеешь от кучи левых биндингов к сишным библиотекам, написанным аутистами-энтузиастами, и от необходимости компилировать эти библиотеки под последние версии ОС. Хули ты хотел, жизнь вне мейнстрима тяжела и страшна.
Ты забыл, что Лисп это не язык, а семейство языков. Поэтому чтобы писать на Лисп никаких биндингов компилировать не нужно. JS очень зрелый инструмент. И сейчас уже более продвинутый чем C/C++. Ты снова пустословишь без аргументов.
>Аргумент был не против динамической скриптодрисни, аргумент был против человека, который спизданул "Хиндли-Милнер", понятия не имея, что это такое.
Я знаю что это. Ты писал или кто, что во всех языках есть все фичи из функциональных языков. Оказывается нету.
>Алё, это твой аргумент разъебан, ты писал "Тебе не понятно почему на Хаскелле пишут интерпретаторы/компиляторы, а на C/C++ стараются этого не делать", на что ответ в общем-то простой, самая популярная платформа для создания новых языков написана на С++.
>Ты сначала приведи аргумент, который нельзя разъебать, а потом кукакрекай что-то про то, что у меня-де аргументов нет.
Опять ты без аргументов. LLVM тут не причем. На Хаскелле за последние годы было написано много языков. На C++ думаю что единицы, а может не одного. Потому что Хаскелл дает более мощные абстракции. В нем не выстрелишь в ногу как в C++. Его код лаконичнее, его проще поддерживать.
>Вот здесь аргумент как раз есть, попробуй его найти.
Ну и где же? Это словесный понос с использованием детских обзывалок.
>Понятно, что ты сомневаешься. Ведь в твоей картине мира все убого и черно-бело: есть лисперы в белом, а есть идиоты, которые пишут на С++. Но как всегда в убогой подростковой картине мира, такой взгляд ничего не стоит.
>
>Для начала попробуй привести пример того, что требует макросов и никак иначе. А я покажу лучший способ и почему способ на макросах хуевый.
Обоснуй что Лисповые макросы это антипаттерн. Ты это утверждал, но не привел ни одного аргумента.
>На Хаскелле за последние годы было написано много языков
писать язык на языке а 2019... да даже 5 лет назад если, вам чё, языков мало?
> В Лисп приходят после C++. После многих других языков. Так сложилось исторически, и так складывается логически.
И где же откровения всех этих тысяч богоподобных лисперов, которые долгие годы страдали, меняя недоязыки, на пути к постижению истины?
Выдаешь желаемое за действительное.
> Для начала попробуй привести пример того, что требует макросов... А я покажу лучший способ и почему способ на макросах хуевый.
> Обоснуй
Этот демагог обосрался. Несите нового.
>Так где критерии какой язык мощнее? Опять завуалированные пустые слова.
Лол, ты пишешь "Лисп мощнее чем C++.", а потом ждешь от меня критерии? Это я тебя, манька, спрашиваю, где критерии.
>Снова без аргументов. В Лисп приходят после C++.
Я могу привести тебе кучу программистов, которые знают лисп, и не пишут на нем. При этом они знали лисп еще в то время, когда С++ не существовало. Алекс Степанов, например (при чем в его случае это схемка, но я-то думал, что мы в CL говорим, а тут ты говоришь, что обо всех лиспах сразу, впрочем и для CL можно найти такого человека, мне лень). Поэтому утверждение "Лисп последний язык, который осваивает программист" - ложь упоротого школьника.
Истинность или ложность утверждений не зависит от наличия аргументов. Мои утверждения истинные, несмотря на то, что мне лень расписывать их такому идиоты как ты, который сначала пишет, что лисп мощнее, чем с++, а потом требует от собеседника критериев мощности языка, который не помнит нить диалога и в принципе уже доказал, что является тупым жсребенком. Ты из-за своей тупизны рискуешь попасть в ловушку имиджборд и стать очередным золотцем, если кто-то не хочет тебе что-то доказывать, это не значит автоматически, что ты прав. Вполне возможно, от тебя просто плохо пахнет.
>Это не менеджер пакетов Си. Это пакетный менеджер ОС.
Я тебе двумя постами назад написал, что экосистема си называется юникс.
>Ты забыл, что Лисп это не язык, а семейство языков. Поэтому чтобы писать на Лисп никаких биндингов компилировать не нужно.
Вот это наркомания. Лисп - семейство языков, ПОЭТОМУ никаких биндингов компилировать не нужно. Что ты там по поводу аргументов кукарекаешь, если у тебя даже подобия логики нет.
>JS очень зрелый инструмент. И сейчас уже более продвинутый чем C/C++.
Продвинутый по каким критериям? Я вот хочу написать VST-плагин, мне этот зрелый инструмент уже можно использовать, или в манямирке тупых школьников, рассматривающих мир исключительно через призму "кто кому даст пизды" такие вопросы в принципе не рассматриваются? ЖС нормальный инструмент, один из лучших сейчас, к сожалению. А лисп - говно ебаное. Именно как инструмент. Как развлечение для аутистов - норм.
>Я знаю что это. Ты писал или кто, что во всех языках есть все фичи из функциональных языков. Оказывается нету.
Хиндли-Милнер это не фича, это система типов, при чем в ней даже гетерогенный контейнер не запилишь, не говоря уже йобе типа boost::units. То есть видишь ли, в чем прикол, подобный код:
template<typename L, typename R> auto add(L lhs, R rhs) { return lhs + rhs;}
для ХМ-языков является невыполнимой задачей - даже если ты найдешь способ сделать operator+ полиморфным (что в хаскеле потребует переписать прелюдию, например), вывод типов сломается. А С++ похуй, он выводит типы не решая какие-то там уравнения, а тупо сверху вниз. Потому что шаблоны С++ sort of динамически типизированы и это дает большую свободу в написании кода (а как минус ты получаешь хуевые сообщения об ошибках), а ХМ-языки так не умеют. Лисп, собственно, умеет, он же является динамической скриптодрисней. И мы вместо континуума мощности попадаем в пространство, в котором языки друг с другом не сравнимы. И мечте ньюфага о серебрянной пуле сбыться не суждено: чтобы стать таким крутым как я, ты будешь должен заниматься программированием очень много лет, и хуй тебе поможет "выучить лисп" как ты думаешь. Впрочем, не похоже, чтобы ты собирался его учить.
>Ну и где же? Это словесный понос с использованием детских обзывалок.
Прямо в процитированном тобой тексте: лисп это древняя скриптодрисня, которая до сих пор используется в древнем как говно мамонта софте. Как только появились нормальные скриптовые языки, от этого фортрана мира скриптов отказались.
Что тут непонятного? Даже твои примеры касаются именно что древнего софта. Это в 80-е альтернативой лиспу были скрипты для юниксовой консоли. Сейчас же скриптовых языков как грязи. Единственное (!!!) достоинство именно лиспа - гомоиконность. То есть фактически лисп предлагает 99% времени смотреть на уебищный синтаксис, чтобы в 1% случаев было удобнее писать макросы, которые сами по себе являются злом. Ну такое.
>Обоснуй что Лисповые макросы это антипаттерн. Ты это утверждал, но не привел ни одного аргумента.
Приведи конкретный пример использования макроса.
>Так где критерии какой язык мощнее? Опять завуалированные пустые слова.
Лол, ты пишешь "Лисп мощнее чем C++.", а потом ждешь от меня критерии? Это я тебя, манька, спрашиваю, где критерии.
>Снова без аргументов. В Лисп приходят после C++.
Я могу привести тебе кучу программистов, которые знают лисп, и не пишут на нем. При этом они знали лисп еще в то время, когда С++ не существовало. Алекс Степанов, например (при чем в его случае это схемка, но я-то думал, что мы в CL говорим, а тут ты говоришь, что обо всех лиспах сразу, впрочем и для CL можно найти такого человека, мне лень). Поэтому утверждение "Лисп последний язык, который осваивает программист" - ложь упоротого школьника.
Истинность или ложность утверждений не зависит от наличия аргументов. Мои утверждения истинные, несмотря на то, что мне лень расписывать их такому идиоты как ты, который сначала пишет, что лисп мощнее, чем с++, а потом требует от собеседника критериев мощности языка, который не помнит нить диалога и в принципе уже доказал, что является тупым жсребенком. Ты из-за своей тупизны рискуешь попасть в ловушку имиджборд и стать очередным золотцем, если кто-то не хочет тебе что-то доказывать, это не значит автоматически, что ты прав. Вполне возможно, от тебя просто плохо пахнет.
>Это не менеджер пакетов Си. Это пакетный менеджер ОС.
Я тебе двумя постами назад написал, что экосистема си называется юникс.
>Ты забыл, что Лисп это не язык, а семейство языков. Поэтому чтобы писать на Лисп никаких биндингов компилировать не нужно.
Вот это наркомания. Лисп - семейство языков, ПОЭТОМУ никаких биндингов компилировать не нужно. Что ты там по поводу аргументов кукарекаешь, если у тебя даже подобия логики нет.
>JS очень зрелый инструмент. И сейчас уже более продвинутый чем C/C++.
Продвинутый по каким критериям? Я вот хочу написать VST-плагин, мне этот зрелый инструмент уже можно использовать, или в манямирке тупых школьников, рассматривающих мир исключительно через призму "кто кому даст пизды" такие вопросы в принципе не рассматриваются? ЖС нормальный инструмент, один из лучших сейчас, к сожалению. А лисп - говно ебаное. Именно как инструмент. Как развлечение для аутистов - норм.
>Я знаю что это. Ты писал или кто, что во всех языках есть все фичи из функциональных языков. Оказывается нету.
Хиндли-Милнер это не фича, это система типов, при чем в ней даже гетерогенный контейнер не запилишь, не говоря уже йобе типа boost::units. То есть видишь ли, в чем прикол, подобный код:
template<typename L, typename R> auto add(L lhs, R rhs) { return lhs + rhs;}
для ХМ-языков является невыполнимой задачей - даже если ты найдешь способ сделать operator+ полиморфным (что в хаскеле потребует переписать прелюдию, например), вывод типов сломается. А С++ похуй, он выводит типы не решая какие-то там уравнения, а тупо сверху вниз. Потому что шаблоны С++ sort of динамически типизированы и это дает большую свободу в написании кода (а как минус ты получаешь хуевые сообщения об ошибках), а ХМ-языки так не умеют. Лисп, собственно, умеет, он же является динамической скриптодрисней. И мы вместо континуума мощности попадаем в пространство, в котором языки друг с другом не сравнимы. И мечте ньюфага о серебрянной пуле сбыться не суждено: чтобы стать таким крутым как я, ты будешь должен заниматься программированием очень много лет, и хуй тебе поможет "выучить лисп" как ты думаешь. Впрочем, не похоже, чтобы ты собирался его учить.
>Ну и где же? Это словесный понос с использованием детских обзывалок.
Прямо в процитированном тобой тексте: лисп это древняя скриптодрисня, которая до сих пор используется в древнем как говно мамонта софте. Как только появились нормальные скриптовые языки, от этого фортрана мира скриптов отказались.
Что тут непонятного? Даже твои примеры касаются именно что древнего софта. Это в 80-е альтернативой лиспу были скрипты для юниксовой консоли. Сейчас же скриптовых языков как грязи. Единственное (!!!) достоинство именно лиспа - гомоиконность. То есть фактически лисп предлагает 99% времени смотреть на уебищный синтаксис, чтобы в 1% случаев было удобнее писать макросы, которые сами по себе являются злом. Ну такое.
>Обоснуй что Лисповые макросы это антипаттерн. Ты это утверждал, но не привел ни одного аргумента.
Приведи конкретный пример использования макроса.
Язык инструмент. Инструментов не бывает много.
>>23073
А где ты видел тех, кто после Лиспа приходят в C++? Или вообще с Лиспа начинают? Вот как минимум один разработчик, пришедший в Лисп после C++ http://rigidus.ru/about/index.html
>>23077
Ну так где аргументы, что "Макросы - зло и в 100% случаев являются неправильным решением."? Это твои слова.
>Я другой анон. Всё же скажи, о чём спор-то?
Некто утверждает, что Лисп дерьмо, но не приводит ни одного аргумента. При этом расхваливая C++, про который все знают, что он спроектирован как Франкенштейн.
Ну окъ. Можешь бойкотировать кресты, а пока сходи абулику пожалуйся, что в зекаче обсуждают плохой язык.
>А что разве C++ хорошо спроектирован?
на нём бы никто не писал тогда 1)
он не развивался бы 2)
Абсолютно нелогичная аргументация. В мейнстриме всегда все самое плохое. Так уже устроен человек. Тянет его на все самое плохое. 100 лет назад еще были здравые идеи у человечества. Сейчас уже нет. Это я к тому, что популярность не показатель качества. Популярное = ширпотреб.
Все самое ценное всегда мало распространено. Умных всегда меньше чем глупых. Удачных инженерных решений всегда меньше чем неудачных. Эксклюзив всегда будет для избранных.
Какой самый популярный язык - Java. Сейчас уже почти все говорят, что он ужасен. Уже понаписали кучу языков для JVM. Только чтобы на джаве не писать. Но вот парадокс, это самый популярный язык. Это не удивительно. В мейнстриме всегда трэш. Большая часть людей не умеет думать своей головой. За них думают другие, телевизор, интернет, реклама, лозунги, авторитеты. Сами они не принимают решений. Они просто их берут откуда-то. Ты в их числе кстати. Твоя аргументация это выдает.
Ага. А Евклид со своей геометрией - ориентированный на быдло долбоеб, Колмогоров единственно верный мужик.
съеби уже отсюда, немейнстримовый уникум, всем похуй на твое говно мамонта
Ты же выбрал C++ потому что услышал (скорее всего еще в школе) что он самый крутой. Это 100%. Такой стереотип существует. И все на него ведутся. Я когда то сам в это верил. Пока не попробовал больше десятка разных языков. Мне есть с чем сравнить.
Нужно же думать умом головы. А не другими местами, или слушать других. Скольким языкам ты уделил хотя бы неделю изучения?
А ты лютый прорицатель. Я в школе на бейсике писал и узнал о плюсах только после паскаля, си, пролога и лиспа, которым уделял не только прочтение статьи на Википедии. После них были ещё джава, шарпы и PL/SQL. И я, в отличие от тебя, понимаю, что для каждого языка есть своя цель - микроконтроллер на си, задача Эйнштейна - на прологе, решение УМФ - на мэпле/маткаде, компьютерное зрение - на плюсах. Но мне нравятся плюсы и все тут, хоть я работаю на другом языке.
Ты же не будешь бросать свою любимую жену просто потому что услышал, что где-то за тремя морями есть баба с сиськами больше и квадратной пиздой?
Прикольно
Чому студия ругаецца? Вроде все нормально же. Числа сгенерились, все збс. Ну подумаешь возможна потеря данных. Ну и хер с ней.
И правда ведь. Спасибо, анон. Держи няшек.
я услышал в школе, что С++ самый крутой язык. Спустя 15 лет - работаю С++ сеньором помидором, и продолжаю так считать.
Русский, английский
Вернитесь к программе из листинга 7.7 и замените три функции обработки
массивов версиями, которые работают с диапазонами значений, заданными парой
указателей. Функция f ill_array () вместо возврата действительного
количества прочитанных значений должна возвращать указатель на место, следующее за
последним введенным элементом; прочие функции должны использовать его в
качестве второго аргумента для идентификации конца диапазона данных.
Когда наполняю массив, если ввести букву начинается ад и израиль. Кто может подсказать что подразумевается в функции наполнения массива под не правильным вводом?
Научись наконец инициализировать переменные (int i = 0). if (!cin) -- какая-то хуйня. Если хочешь безопасного ввода, считывай через std::getline в std::string и парси строку. В твоем случае например строка должна состоять из одного символа-цифры.
Чему сочувствуешь то?
>if (!cin) -- какая-то хуйня. Если хочешь безопасного ввода, считывай через std::getline в std::string и парси строку.
У него пример из книжки Праты, епта. if (!cin) -- не какая-то хуйня, а данность, условие задачи.
Это не листинг 7.7, это перепиленный с ошибками листинг 7.7.
>что подразумевается в функции наполнения массива под не правильным вводом?
То, что cin сочтет неправильным.
1. Есть смысл вкатываться?
2. Какой диапазон задач решаешь?
3. Без него можно прожить всю жизнь?
мимо ios - 2 года
В глаза ебусь, в шапке висит оказывается! Тогда следующий реквест:
Шаблоны C++. Справочник разработчика. 2 издание 2018 года.
С меня как всегда.
c=a+b;
cout<<c;
что тут левое а что правое?
и можно еще объяснить на примере этого кода что такое литералы
я так понял это 5 и 6?
>что тут левое а что правое
c = a + b можно разделить на два шага. Сначала ты высчитываешь значение a + b, а затем полученный результат ты присваиваешь переменной с. Так вот полученный результат (a + b) - rvalue, c - lvalue.
Вроде в https://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c/ нормально расписано.
Вообще, подучил бы Си сначала.
Вы видите копию треда, сохраненную 1 февраля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.