Это копия, сохраненная 20 февраля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Senior'а должность, если нет крещенья,
Которым к вере истинной ведут!
Без тайн крестов познаешь лишь мученья:
Макакинг гостевух из года в год
Иль в крудошлепство с Python погруженье.
И всякий раз, листая тот байт-код,
Которым обратились твои муки,
Юнец-тимлид брезгливо скривит рот.
Так, запоздало вняв моей науке,
Ты будешь гнить, как листья под дождем,
И на себя в конце наложишь руки.
А перед смертью вспомнишь вновь о том,
Что мог, кресты познав, прожить иначе,
И, этого желая всем нутром,
Ты от бессилья горького заплачешь.
TL;DR Читаешь https://goo.gl/kVaela , делаешь примеры и суешь в http://ideone.com , ошибки копипастишь в гугл, непонятное ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее. И прочитай FAQ, расположенный ниже, в нем много полезного.
Унаследованная памятка:
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.
Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode
Старший брат: >>609376 (OP)
Предыдущий: >>622611 (OP)
FAQ:
Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
+ C++ действительно быстрый - по скорости они вместе с C с большим отрывом уделывают любой другой язык. Замедление относительно C находится в районе 0-20% а в ряде случаев C++ оказывается даже быстрее, причем проявляется только при использовании высокоуровневых конструкций (в крестах ты никогда не платишь за то, чего не используешь).
+ C++ один из наиболее выразительных и мощных языков, позволяющий использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи.
+ C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Q: Но он же давно устарел!
A: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по крестам, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".
Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.
Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
Для нюфань:
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela
Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa
<устарело> Герберт Шилдт - C++. Базовый курс (2010) - https://goo.gl/qMLAFl
<устарело> Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004) - https://goo.gl/QvjR6x
Учимся не писать говнокод:
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все.
Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR
Проектирование:
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать.
Ален Голуб - Веревка достаточной длины, чтобы выстрелить себе в ногу (2001) - https://goo.gl/fBmuxp
Джеймс Коплиен - Программирование на C++ (2005) - https://goo.gl/Y1WGdU
Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC
Ахтунг! Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).
Наиболее детальные описания языка:
Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
<устарело> Бьерн Страуструп - Язык программирования C++ (2010) - https://goo.gl/iZBDiV
Стандарт C++14 (на ангельском) - https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
Последняя на данный момент версия черновика стандарта C++17 (на ангельском) - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4567.pdf
Тонкости языка (для гурманов):
Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
Также для легкого чтения подойдет книжка c историей создания C++:
Бьерн Страуструп - Дизайн и эволюция C++ (1994) - https://goo.gl/FqbPwo
Отдельные аспекты:
Читать по необходимости.
Энтони Уильямс - Параллельное программирование на C++ в действии (2012) - https://goo.gl/qJfBkD
Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
Дэвид Абрахамс, Алексей Гуртовой - Шаблонное метапрограммирование на C++ (2009) - https://goo.gl/isSt7j
Дэвид Вандевурд, Николаи Джоссатис - Шаблоны C++. Справочник разработчика (2003) - https://goo.gl/0M4NpG
Роберт Седжвик - Фундаментальные алгоритмы на C++ (2001) - https://goo.gl/4jwxSl (части 1-4), https://goo.gl/yDuQgG (часть 5)
Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года. Фичи последних стандартов не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Q: Ты охуел? В этих книгах по тысяче страниц! Хочу коротких статей.
A: Вот тебе блоги, факи, референсы и всякое такое:
Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru
Блог с хорошо расписанными фичами новых стандартов - http://scrutator.me
Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/ или более подробно на ангельском http://en.cppreference.com/w
Блог Герба Саттера (на ангельском) - http://herbsutter.com
Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru
Блог еще одной тянки, много о Qt и оптимизации (на ангельском) - https://katecpp.wordpress.com
Куча других блогов (на ангельском) - https://www.quora.com/What-are-the-best-blogs-on-C++
Большой FAQ по C++ (на ангельском) - https://isocpp.org/wiki/faq
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс:
Видеокурс на тытрубе - https://www.youtube.com/watch?v=atVgLRzl3rI
Еще один - https://youtube.com/watch?v=MOpF5lk3cLY
Среди прочих есть несколько курсов по C++ - https://stepic.org
И еще есть вот такое, если проникся:
Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos
Q: Я готов начать погроммировать! Куда мне писать код?
A: Под шиндошс удобно использовать IDE Microsoft™ Visual Studio®. Базовую версию (2015 Community) можно бесплатно скачать отсюда: https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия). Чтобы начать писать код, нужно запустить Visual Studio, кликнуть "Файл - Создать - Проект - Пустой проект", после создания кликнуть слева правой кнопкой мыши по пункту "Файлы исходного кода", выбрать "Добавить - Создать элемент - Файл C++". Свои хэллоуворлды писать в этот файл, в дальнейшем можно добавить другие файлы и хедеры. Чтобы скомпилировать и запустить проект, нужно нажать "Сборка - Собрать решение", а затем "Отладка - Запуск без отладки".
Под *nix, как правило, уже предустановлен компилятор gcc (если нет, используй sudo aptitude install gcc), так что достаточно сохранить хэллоуворлд, набранный в текстовом редакторе, и выполнить g++ helloworld.cpp и ./a.out. Но удобнее установить какую-нибудь IDE, например, весьма удобную CodeLite (sudo aptitude install codelite codelite-plugins), и работать в ней. Ее также можно использовать и в шиндошс, но тогда сперва придется установить MinGW (http://mingw.org).
Еще у нас есть IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует - https://www.jetbrains.com/clion
Можно также не устанавливать ничего, а запускать свои хэллоуворлды на http://ideone.com, выбрав в левом нижнем углу язык C++14.
Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:
Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio - http://cppcheck.sourceforge.net
Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
Гугловские утилиты для контроля корректности кода - https://github.com/google/sanitizers
Гугловский фреймворк для автоматизации тестирования - https://code.google.com/p/googlemock
Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:
boost
Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
http://www.boost.org - скачать бесплатно без смс.
http://www.solarix.ru/for_developers/cpp/boost/boost-library-list.shtml - краткие аннотации к большинству компонентов.
http://sindicollo.blogspot.ru/2008/09/boost.html - документация к некоторым компонентам.
http://www.boost.org/doc - документация (на ангельском).
Литература:
Ариндам Мукерджи - Learning Boost C++ Libraries (на ангельском) (2015) - https://goo.gl/b0gPN1
Qt
Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
http://www.qt.io/ru - скачать бесплатно без смс.
http://doc.crossplatform.ru - документация к 4.8.
http://doc.qt.io - более полная документация к обеим версиям (на ангельском).
Литература:
Макс Шлее - Qt 5.3. Профессиональное программирование на C++ (2015) - https://goo.gl/aZ66gK
Макс Шлее - Qt 4.8. Профессиональное программирование на C++ (2012) - https://goo.gl/Slb1In (книга) + https://goo.gl/toUDWc (исходники примеров)
Марк Саммерфилд - Qt. Профессиональное программирование (только Qt 4.х) (2011) - https://goo.gl/qpkZFm (книга) + https://goo.gl/LIIECh (исходники примеров)
Другие хорошие библиотеки:
Несколько специализированных библиотек для часто встречающихся задач. Все маленькие, быстрые и простые в освоении:
libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году) - http://curl.haxx.se
SFML - работа с графикой и аудио - http://www.sfml-dev.org
FLTK - графические интерфейсы - http://fltk.org
И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке http://cppquiz.org/ , пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Добавлена инфа о том, что делать после прочтения материалов из шапки.
Книги по проектированию отделены от best practices в самостоятельный пункт.
Небольшие дополнения в тексте.
Добавлены книги Коплиена и Голуба.
Ссылки на архивач пронумерованы.
Предыдущие треды на архиваче:
#1 https://arhivach.org/thread/94971/
#2 https://arhivach.org/thread/94972/
#3 https://arhivach.org/thread/99414/
#4 https://arhivach.org/thread/100995/
#5 https://arhivach.org/thread/105148/
#6 https://arhivach.org/thread/109335/
#7 https://arhivach.org/thread/112797/
#8 https://arhivach.org/thread/114519/
#9 https://arhivach.org/thread/117109/
#10 https://arhivach.org/thread/120019/
#11 https://arhivach.org/thread/122683/
#12 https://arhivach.org/thread/124637/
#13 https://arhivach.org/thread/125532/
#14 https://arhivach.org/thread/127327/
#15 https://arhivach.org/thread/128133/
#16 https://arhivach.org/thread/134437/
#17 https://arhivach.org/thread/135285/
#18 https://arhivach.org/thread/139690/
Старые ненумерованные треды:
https://arhivach.org/thread/45477/
https://arhivach.org/thread/48611/
https://arhivach.org/thread/60085/
https://arhivach.org/thread/66322/
https://arhivach.org/thread/69413/
https://arhivach.org/thread/73221/
https://arhivach.org/thread/77999/
https://arhivach.org/thread/79194/
https://arhivach.org/thread/82038/
https://goo.gl/vvs9GP
https://goo.gl/ZnBsYt
Отдельные Qt-треды:
https://arhivach.org/thread/15387/
https://arhivach.org/thread/65590/
Добавлена инфа о том, что делать после прочтения материалов из шапки.
Книги по проектированию отделены от best practices в самостоятельный пункт.
Небольшие дополнения в тексте.
Добавлены книги Коплиена и Голуба.
Ссылки на архивач пронумерованы.
Предыдущие треды на архиваче:
#1 https://arhivach.org/thread/94971/
#2 https://arhivach.org/thread/94972/
#3 https://arhivach.org/thread/99414/
#4 https://arhivach.org/thread/100995/
#5 https://arhivach.org/thread/105148/
#6 https://arhivach.org/thread/109335/
#7 https://arhivach.org/thread/112797/
#8 https://arhivach.org/thread/114519/
#9 https://arhivach.org/thread/117109/
#10 https://arhivach.org/thread/120019/
#11 https://arhivach.org/thread/122683/
#12 https://arhivach.org/thread/124637/
#13 https://arhivach.org/thread/125532/
#14 https://arhivach.org/thread/127327/
#15 https://arhivach.org/thread/128133/
#16 https://arhivach.org/thread/134437/
#17 https://arhivach.org/thread/135285/
#18 https://arhivach.org/thread/139690/
Старые ненумерованные треды:
https://arhivach.org/thread/45477/
https://arhivach.org/thread/48611/
https://arhivach.org/thread/60085/
https://arhivach.org/thread/66322/
https://arhivach.org/thread/69413/
https://arhivach.org/thread/73221/
https://arhivach.org/thread/77999/
https://arhivach.org/thread/79194/
https://arhivach.org/thread/82038/
https://goo.gl/vvs9GP
https://goo.gl/ZnBsYt
Отдельные Qt-треды:
https://arhivach.org/thread/15387/
https://arhivach.org/thread/65590/
>Добавлена подборка проверочных вопросов для мамкиных language lawyer'ов.
Это и есть ссылка из
>инфа о том, что делать после прочтения материалов из шапки.
?
Ага.
https://arhivach.org/thread/135285/#618225
https://arhivach.org/thread/135285/#618252
Какая разница между
void func(int *i){}
void func(int &i){}
Указатели более гибкие, но и ебли больше. Ссылки более автоматизированы, и имеют высокоуровневые фичи наподобие rvalue-семантики.
Константную ссылку, если параметр не изменятся (только входные данные). Указатель, если в параметре возвращается инфа (например, такое бывает, когда нужно вернуть больше одного объекта, и неудобно все пихать в возвращаемое значение).
Если твой параметр не может быть NULL/nullptr, то используй ссылку.
И даже констатную ссылку, если возможно.
Ссылка на численные типы бесполезна.
А ещё ссылку нельзя "переуказать" в отличие от указателя. Ссылка всегда разыменована
иди нахуй, штеудопидор
А здесь, дорогие друзья, мы с вами видим типичного представителя Sishkoblyad Vulgaris. На время уборки клетки его выпустили наружу. Агрессивные повадки и неумелые попытки применить свой опыт в незнакомом окружении - отличительная черта этих неуклюжих зверьков.
Разбирался с этим туториалом.
Там где Q_D(Label) - схватил ошибку
"d_func was not declared in this scope"
Рили не гуглится, уже хуй знает что делать. У кого было?
в .h
int switcher
в .cpp
(в конструкторе)
switcher = 0
(в функции)
switch (switcher)
{ case ... }
Запускаю.
free(): invalid pointer
Через раз - запускается.
да там вокруг этого switch`а все, один хер.
то ему, блять, int не нравится, то еще что.
а вот сейчас сюда написал - заработало, сука, как миленькое
возвращаюсь к вопросу - ну шо за хрень, ребят
Покажи полный код, а то так ничего понять нельзя.
Понял почему заработало. Я внезапно с отладки на выпуск перевел.
А вот обратно вернул - опять free(): invalid pointer
У меня указателей то нет тут, откуда он вообще это взял, ума не приложу
НУ БЛЯ
ТАМ НеВаЖНО ЧТО ДАЛЬШЕ
ТАМ СВИЧИ)
Главное инвалид поинтер. Знаешь такую ошибку?
Ну free(). Free вызвал.
А потом заработало.
Что это могло быть?
шта?
Я же говорил - я с микроволновки
Может я вообще ASCII-кодами по цифроклаве каждый символ тут набираю
А что ж мне еще, с микроволновкой то на северном полюсе делать?
Яйца клал уже туда. И свои тоже.
Теперь вот решил делом заняться, а тут такая хрень.
Редактор сабов.
Хуесос.
пиши вузик
пиши все олимпиадки которые были
пиши технологии которые знаешь
пиши ссылку на гитхаб с проектами
этого будет достаточно
><устарело> Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004)
Котаны, насколько устарело? У меня издание 2006 года (4е издание). Легко читается. Есть ли смысл учить по этой книге а потом добрать знаний по новшествам либо лучше сразу брать новую кригу? эта в бумажном варианте, а читать с монитора ну совсем не круто
При этом паралельно смотрю разные видео на тытрубе, кстати.
перед тем как найти там что искал успел пару раз заблудиться и начать искать сначала
ТЫ так написал что не совсем понятно- С++ лучше не учить или по этой книге лучше не учить? Знаю немного на уровне того что такое переменная, функции, массивы, циклы, немного о том как создавать классы, вообщем самые основы. Ну а по алгоритмам-рекурсия, динамика, сортировки, немного графы. Вообщем все то что можно взять из паскаля, лол.
Кстати, почему если с++ так охуенен, то в перепись-треде, большинство анонов с норм ЗП указали JS и PHP? С плюсами всего пара человек. Цель-хотя бы за пол года устроится на работу.
Читай всё норм. Она самая лёгкая из всех что я видел. Потом лимпмана прочитаешь.
C++ лучше вообще не учить. Работу с большой вероятностью на крестах ты не найдешь - нужны только спецы, джуны на крестах никому не нужны. При том, что "для себя" как язык - дерьмо и для любителей себе в ногу стрелять, плюс писать на них долго.
Существуют потому, что на них невъебенное количество уже написаного софта и библиотек, и все это не выкинуть.
Поскольку кресты невъебенно сложны и полностью их не знает наверное даже труп страуса - ты рискуешь угрохать хуеву тучу времени на их изучения и остаться нахуй никому не нужным.
А что лучше вместо крестов из серьёзного программирования? Сишарп, ява? Меня кресты привлекают тем, что они могут работать без дотнета/жабы. Можно запрограммировать даже небо, даже Аллаха!
Я не кодил ни на том, ни на этом. Лично я делю их так: сишарп фичастее и лучше как язык, а зато ява без анальной привязки к винде и может в ведроид.
Алсо, если че - яву можно и в бинарь компилить.
А вон на моей работе мы компилили скрипты на си в байткод, лол.
Плюс (минус) - у сишарпа анальный зоопарк из разных несовместимых версий дотнета.
Я бы на твоем месте выбрал из трех неустаревших книг, в которых есть последние стандарты. Книги для ньюфагов натурально взаимозаменяемы, а если в выбранной что-то непонятно, то можно моментально посмотреть конкретно это тему в джвух других. В таком режиме очень легко работать, в отличие от хайлевел книжек, которые обычно в единственном варианте, да еще и на ангельском.
>сишарп фичастее и лучше как язык
До сишарпа его задачу выполнял дэлфи. Сишарп убил дэлфи. Дотнет помог ему в этом. ЕМНИП дотнет и под дэлфи работал. Один детский язык занял место в песочнице другого детского языка. За это он не может быть фичастым и хорошим.
Кстаи я нуфаг мечта лет через 30 работать в иностранном вузе и написать свою книгу. Накидайте мне за шёку книжки таких же энтузиастов чтобы я посмотрел какое это говно и отговорить.
>нужны только спецы
Ну толсто же. Разница только в том, что можно на недельку нырнуть в какой-нибудь пистон и сразу бежать на собеседование, а с крестами придется поработать. Это не запредельно сложно, если у тебя больше 90 пунктов айсикью.
>Работу с большой вероятностью на крестах ты не найдешь
TIOBE и агрегаторы вакансий а также мой личный опыт с тобой не согласны. В том же гейдеве полно вакансий, например. Другое дело, что требования там выше, чем для крудошлепов, отсюда кукареки про НИПОРАБОТАТЬ.
>Существуют потому, что на них невъебенное количество уже написаного софта и библиотек
Только одна из причин. Когда-то на фортране было дохуя софта и библиотек, но он успешно вытеснился. Верить, что язык без кучи объективных преимуществ находится в топе только из-за легаси, по меньшей мере наивно.
>крудошлепов
Лол ниразу не слылаш такое слово и не могу понять что оно означает. Кого это ты так назвал? Неосиляторов?
Однажды путник увидел в стороне от дороги, по которой он шел, двух ожесточенно спорящих людей. Заинтересовавшись и подойдя поближе, он услышал, что они спорят о том, что лучше употреблять на завтрак: говно или мочу. Когда спорщики утомились и на минуту замолчали, путник горячо обратился к ним:
- Добрые люди! Почему вы ограничиваете выбор пищи столь неприятными на вкус блюдами? Разве не лучше завтракать пшеничной лепешкой и бутылкой вина?
- Говна поешь! - воскликнул один из спорщиков и метнул в путника куском засохшего навоза. Второй спорщик расстегнул штаны и помочился на путника.
Зато в следующий раз будет в тхт писать и ссылку на гитхаб туда положит.
Так он же не узнает об этом - ему перезвонят.
Это они не с тебя потешаются, а вместе с тобой. Продолжай платить за интернет.
Твой провайдер
Ох. Ты меня успокоил. Потому что мне нравится учить С++, ве логично и понятно, а тот кун немного напряг отсутствием работы.
>ве логично и понятно
До тех пор, пока до писания на нём не дошёл. Потом ещё полюбишь. И игрища с указателями/ссылками/константами полюбишь, и прочую уб-хуиту вроде негарантированного порядка выполнения аргументов.
>Программист-разработчик C/С++
>Наши ожидания:
>Языки программирования и библиотеки: C, C++, Borland C++ Builder (VCL), С#, Visual Basic, Pascal, Microsoft Visual Studio 6, Microsoft Visual Studio 2005, Boland Builder 6, SQL, Java, Eclipse, Microsoft Office, Novell Netware; .Net ; gcc, make, shell script;
Поясни, если шаришь, какой уровень должен быть? Что я должен уметь написать? Именно пример задания. Смутно понимаю что на практике должен уметь джуниор ну или хоть стажер.
Пиши справочник телефонный или эмулятор файловой системы. Обращай внимание на аккуратность кода, стиль, структуру, тесты. Помни золотое правило: "твой код будет поддерживать маньяк садист, который знает где ты живёшь".
Поищи тестовые задания разных компаний. Порешай задачи с hackerrank и codility.
Signed integer overflow, motherfucker
Чет он поправился, если это он, конечно.
Пиздишь. В этом году взяли двух интернов. Один туповат, через 4 месяца нахуй послали. Второй годный и скоро джуном станет
Поясни за интернов?
Скоро практика, летом если быть точнее. Вот и думаю, сейчас ли пытаться встрять джуном, или подождать произв. практики и разослать резюме по компаниям, где есть возможность прохождения практики.
Сложный выбор .-.
ООО НИИ Рога и копыта?
Хуйня.
Классика - вот это вот все без упоминания крестов, и в конце
Желание работать на джаве
Тешу себя мыслью что это просто ебанутые эйчары
Встрявай сразу. Так и пиши - молодой толковый, возьмите интерном. но лучше через преподов вкатываться. Ещё всякие "школы/университеты" в конторах, где можно выделиться и попасть в компанию
Я бы хотел пойти в графику, так что нет, гейммейкера не скачал.
Если с гейдевом не получится, я бы хотел работать в прикладной отрасли, чтобы видеть результат своей работы, а если хватит мозгов, то можно бы и в написание прошивок, железяки мне тоже нравятся.
Чо там работать-то? Проблематично было года 2 назад, когда даже привязка цпп бэкэнда не особо документирована была.
Ну у меня есть проблемы с TableView. Я написал rowdelegate для него, но не могу сделать так, чтобы между колонками была линия черная. Костылил через rectangle черного цвета после самой ячейки для headerdelegate, оно работает. А для row нет.
Вот линк -- http://pastebin.com/R1HfQ2ja
Если да - реально ли перейти с Ардуиновских "крестов" на настоящие?
А нахрен тебе ардуина?
Алсо на моей работке прошлой (текущей нет, дома сычую) мы делали так - паяли контроллеры на базе stm32. Под него была прошивка на крестах, нативная ("Операционка"). И был самописный компилятор своего диалекта сишки в байткод. Сабжевый байткод загружался в контроллер по USB - и там исполнялся операционкой и управлял разными аггрегатами. Получалось мегагодно. Несмотря на то, что контроллеры те были говно в плане надежности (2/3 модулей выбрасывали/перепаивали, платы тоже отбраковывались) - схема такая охуенно удобная и пиздатая. Байткод тот может имполняться или виртуалкой на компе (когда не контроллеры, а промышленный комп какой-то йобой рулит), или как связка планшет на ведроиде/комп на винде/линупсе/ одноплатник для интерфейса оператора и контроллер для управления оборудованием.
Вот купил stm32f4 дискавери и хочу написать все свое, ибо у меня было много претензий.
Вообщем, посоветуйте годных книг (больше 700-800 стр. - нахуй такие книги) с короткими и строгими формулировками как у того же Шилдта и задачников, где можно все от и до опробовать, а то как-то прочитал и забыл к херам, что прочитал, ибо не применял.
Нет, свой байткод. У кодера, с которым работал - была голубая мечта использовать таки джабный байткод, а не свой.
Я вот тоже хочу с ним разобраться и компилить таки в джабный. А так - простенькая виртуальная машина, все операции - на стеке. Суть байткода - свой диалект сишки был запилен для кооперативной многозадачности, чтобы не ебаться с синхронизацией и прочей еботой (еще когда контроллеров не было и сабж выполнялся на ПК). Там просто есть CreateTask, а в функциях которые выполняются надо делать Wait() - передать управление следующей задаче. Ну и обязательно эту еботу во всех циклах.
НЕХ, которую никто не знает. Это была работа а не джаст фор лулз, главное - слепить по быстрому и чтобы работало, как оно будет работать - никого не ебет.
Мой коллега бывший и словей таких не знает. Он железячник и ненавидит паскаль и сишник, юзает кресты и Qt в режиме "си с классами" и ненавидит все эти жабоскрипты и лямбды с автоматическим выведением типов.
Ардуиновские кресты это фактически ядро обычных крестов, без стандартной библиотеки и с несколькими ардуиновскими макросами. Из core возможностей крестов не работают емнип только исключения (их не поддерживает ARM по-моему). В остальном там все как обычно, конпелируется clang'ом.
Эм - нет? А с чего ему вдруг тормозить? Цель этой херни - управление оборудованием. Пиздец реакции рам не нужно, и большую часть времени вообще занимает ожидание. Например, ожидание, пока привод механизма доедет до датчика и его показания изменятся.
А суть в том, что механизмов там было дохрена и управлять ими нужно было параллельно (но со своими заебами и у нажном порядке, чтобы один за другой не зацепился).
На контроллер цепляется туева хуча модулей - для CAN, входов/выходов (дискретных или алалоговых), термопары, ШИМ и прочая блевота. Когда одного контроллера не хватало - цепляли несколько штук и объединяли их через CAN, главный общается с компом по USB и говорит остальным, чего им делать.
Можешь внятно объяснить, чего ты пытаешься добиться?
Господи, пиши какую-нибудь хуету для себя, в как скилл набьешь - укажи сцылки на битбукет, где на твои высеры посмотреть можно.
Издержки сосача, увы.
Тогда заебись, да.
Почему в корпоративном секторе все пишут на жаве и сишарпе с их убогими виртуалбоксами и калечной производительностью?
Почему бэкенд С++ фреймворки не популярны? В теории именно плюсы могли бы дать серверам максимальные возможности и лучшую производительность.
>Почему по крестам работы почти нет, хотя именно на крестах сделано 95% годного софта?
А ты платишь за этот софт? На крестах по массе есть только один вид софта, за который платят - игры. Вот в геймдеве кресты пока и остались еще.
>Почему в корпоративном секторе все пишут на жаве и сишарпе с их убогими виртуалбоксами и калечной производительностью?
А ты мерял их производительностью? Часто скорость написания важнее. Лучше в 2-3 раза быстрее написать, чем оно будет на 50% быстрее работать.
>В теории именно плюсы могли бы дать серверам максимальные возможности и лучшую производительность.
У них сейчас нет проблем с возможностями и производительностью.
Зачем тебе стартап с плюсами? Плюсы - говно, их нужно знать чтобы текущие проекты, уже написаные, поддерживать.
А новые на них писать - мазохистом надо быть.
Я не тролль.
Плюсы и на практике экономят гуглу с фейсбукрм сотни милионов долларов, только это немного другой уровень.
Да один блумберг столько вакансий даёт, что всем обитателям этой клоаки хватит. Но вот мозгов у обитателей не хватит для бб.
Откройте сайт вакансий европейский или американский. Там сотни вакансий в разных сферах.
А в России кризис, людей увольняют. Много регуляр девелоперов в поисках работы. Они сожрут остаток рынка.
Так что, корзинусы, бегите учиться в европу. В России программисты скоро станут не нужны.
Пилю прошивки, на графенописателей смотрю как на мудрецов. Каждый со своей колокольни
Пил тут как-то год назад с программистом, пишущим никзкоуровневый Java-код для JVM, тарахтящей на симке.
>>633845
На линкдине 80% ейчаров хотят дегри в КС + волонтёрский опыт. А у меня такого нету, например. Вообще вышки нету, вакансии замотивировали наконец получить . Ну и такое же говно желают типа bash, python, haskell, ГЛУБОКОЕ ПОНИМАЕНИЕ АРХИТЕКТУРЫ *NIX. В общем не сказал бы что я им там сильно нужен.
Неосилятор опять бунтует, лол.
Эта борда, например, на крестах. Видишь баннер сверху? Легким движением руки Абу за несколько дней собрал со школьников овер100к. Чем не стартап?
На ангельском, как белые люди. По докам и исходникам, там все просто и понятно. Еще книжка Мукерджи в шапке годная.
>>634056
Качество уровня опенсорсных сред, но за деньги и с велосипедным компилятором. В 2016 году, с кучей современных бесплатных IDE, такое просто стыдно устанавливать. Это как написать на лбу, что ты только что выполз из дремучего университетского машзала, застрявшего в 90-х.
Ты кек чтоле? Там цланг.
>>634056
Он тебе пригодится только если для тебя программирование на тыканье формочек заканчивается.
В остальных ситуациях бери нативный для платформы конпелятор и visual studio для шинды и clion для остального (если не хочешь пиратить - можешь выслать им студенческий и пользоваться халявной лицензией).
>Это как написать на лбу, что ты только что выполз из дремучего университетского машзала, застрявшего в 90-х
Но я ещё оттуда не выползал, только планирую начинать свой путь. Знаю, есть миллион советов по поводу выбора среды, но стал глядеть именно на этот вариант, так как попросту привык к 6-му билдеру. Интересно всё-таки узнать, чем он конкретно плох (деньги ни при чём, естественно, ставиться всё будет нахаляву), ну и услышать очередной конкретный совет новичку (если не посыл).
>Интересно всё-таки узнать, чем он конкретно плох
Конкретно 6-й (и все, до использования clang как компилятора) - поддержка только древних стандартов, дерьмо вместо линковщика и потимизатора. Ужастный медленный дэльфи-рантайм.
Там не цланг, а цлангоподобный велосипед собственного производства, если верить их сайту. Сказано "в 10 версии улучшена поддержка clang", то есть он предоставляется чисто как дополнительная фича. А с эти так - либо ты можешь писать продакшен-код, либо это игрушка наподобие того, что сейчас в студии прикрутили. Без исключений и всей хуйни.
А еще там даже если предположить прикрученный нормальный компилятор, хуевое автодополнение. Ты, блядь, посмотри на скрины и сравни со студией. Разница как между авиалайнером и трехколесным велосипедом же.
борду вообще похуй на чем писать
ее даже купить можно
проблема в раскрутке, а это школомаркетинг а не быдлокодинг
>Вообще никогда не пользовался автодополнением. Люблю сам все скобочки вводить, да и мелочи это уже.
Эээ, ты о чём вообще? Какие скобочки?
https://www.google.ru/search?q=visual+studio+autocomplete&newwindow=1&client=ubuntu&hs=FRP&channel=fs&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiNqceDk8XKAhUBj3IKHSggAGAQ_AUIBygB&biw=1920&bih=960
-
Что-то сложнее лабы1, где нужно только знание синтаксиса, без таких вещей писать трудновато.
>А конкретно 10й? Тоже безнадёжно отстает в стандартах?
Они и в 10-й своего зверя намутить сумели.
Хорошо, я полностью верю тебе касаемо организации удобства среды, всяких автодополнений и прочих. Я хочу вот какую вещь понять, чтобы разубедиться (и поставить видимо Visual): в каких аспектах использования современных средств языка и современных методов разработки одна среда может превзойти ту, о которой я завел речь? Или билдер плох и отвратителен по своей сути, изначально и навсегда имеет "велосипедный" компилятор и плохой линкер?
Тут тебе весь список его красот никто не скажет - им банально никто не пользуется сейчас.
Из точно известного:
- С++14 не поддерживается (вообще);
- исключения не поддерживаются как выше писали;
- рантайм и всё остальное там так и осталось дельфевым - ошибки тупо из-за разной модели памяти и уродства реализации тебя приветствуют;
- точно помню, что в 6-м билдере были свои нестандартизированные расширения плюсов;
- собственное соглашение о вызове и прочие плюшки их велосипедов - пользоваться сторонними библиотеками будет оч приятно, я тебе это гарантирую.
Хорошо, большое спасибо тебе.
Ставлю, видимо, visual.
И ещё. Всякие срачи на тему того, что в Builder'e VCL, а он так нужен - это что-то из дремучего университетского машзала, застрявшего в 90х?
Ты слышал про первородный грех? Вот в применении к IDE Builder это, блядь, Каин. Он настолько омерзителен и порочен по своей сути, изначально, что в свое время многие именно из-за него потеряли доверие к IDE и ушли на vim/emacs.
>А ты платишь за этот софт?
За Windows и за Kaspersky плачу, да.
>А ты мерял их производительностью?
Вообще-то да.
Сейчас дизайн алгоритмов изучаю, пишу наибыстрейшие возможные алгоритмы для типовых задач. На С# низкоуровневые алгоритмы работают в среднем в 4-8 раз медленнее, чем на С++.
>У них сейчас нет проблем с возможностями и производительностью.
Как сказать. Может быть, если бы Макака писал на С++, он бы сейчас собирал донатом не 100к рублей, а всего 50к.
>На С# низкоуровневые алгоритмы работают в среднем в 4-8 раз медленнее, чем на С++.
Вообще ни о чем не говорит. Можно намеренно или ненамеренно всрать код на одном языке, не учтя его особенности
Утверждение о том, что управляемый код в среднем медленнее нативного, настолько очевидно, что я даже не знаю, что тебе ответить, лол.
На бенчмарках - да.
А ИРЛ - звучит как утверждение, что ассемблер быстрее чем с++. В теории да, а на практике компиляторы куда умнее погромистов.
>ненамеренно всрать код на одном языке, не учтя его особенности
Я не знаю С++ даже на базовом уровне, компилирую с трудом.
C# знаю на продвинутом уровне. Также знаю множество особенностей, относящихся к его быстродействию, например:
- Цикл foreach работает в несколько раз медленнее цикла for в большинстве ситуаций;
- Целочисленные типы малой размерности (byte, short) при любых операциях автоматически приводятся к Int32 , а потом - обратно. Поэтому, эти типы всегда работают медленнее, чем Int32 и они полностью бесполезны.
Можно ли такие вещи называть особенностями? По-моему это никакие не особенности, и просто недоработки. Кстати, многие из них слабо или вообще никак не документированы, единственный способ их выявить - собственноручно писать бенчмарки. Соответственно, многие C# разработчики про эти "особенности" не знают.
В С++ есть подобные дыры в ядре языка?
>А ИРЛ - звучит как утверждение, что ассемблер быстрее чем с++. В теории да, а на практике компиляторы куда умнее погромистов.
Ну ладно, видимо ты плохо понимаешь, о чем говоришь, не буду спорить.
А ты кто такой собсно, решать кто тут чего понимать? Неужели Торвальдс собственной персоной вкатился?
>Почему по крестам работы почти нет, хотя именно на крестах сделано 95% годного софта?
Потому что С++ аутистам 20 лет назад внушили, что швабода и опенсорс - это хорошо, а проприетарный софт и деньги - это плохо. И с тех пор они пишут код забесплатно.
Так исторически сложилось.
>Целочисленные типы
В плюсах (и вообще всех нативных языках) здеся все повеселее - их размер вообще зависит от платформы. Собственно, отсюда проблема этих типов у тебя в шарпе и исходит.
>Цикл foreach
Они в С++ бесплатны. Как и вообще почти все.
Бывают разве что непонятки например в разных реализациях STL как правило, из-за незадокументированности чего либо, как недавно в GNU реализации стандартной библиотеки размер листа просчитывался при каждом вызове size() вместо простого счетчика при добавлении.
Раньше еще модно было умножать побитовыми сдвигами (сейчас компиляторы сами и не такое делают) и исключения считались медленным говном (ныне эпоха итаниумовского аби и исключения уже тоже стали "зеро кост").
> при любых операциях автоматически приводятся к Int32 , а потом - обратно
В плюсах тоже такое, это следствие из архитектуры процессора. Другие типы не то чтобы бесполезны - если тебе нужен массив с ебенячим количеством элементов, то инты могут просто не влезть. Но просто так использовать что-то меньше интов (для целочисельных типов) конечно не стоит.
Тип которого нету приводится к типу, который есть?
Я вкурсе только того, что типы без окончания дробной части на .xxxf автоматически приводятся к double.
Тогда почему в пакет SIMD влезает вдвое больше флоатов, чем даблов?
Присоединюсь к вопросу
В крестах нет real
Многопоточнозадрочительную программу.
>В С++ есть подобные дыры в ядре языка
Главная дыра - указатели и работа с памятью.
Ну и еще немножко счастья с виртуальными методами и множественным наследованием. Это то, что все вменяемые полюсовики знают и рассказывают друг другу на собеседованиях.
благодарю
С сетями особо не работал, сервер буду писать однозначно с использованием boost.asio.
Мои мысли:
С TCP сервер может просто захлебнуться(это моё предположение).
С UDP придётся ебаться дико(битые пакеты, дубли, очерёдность), ибо мне нужно знать дошёл ли пакет на сервер.
Рассказывайте, как проще всего реализовать.
>способный принять на 1 порт ~100 пакетов/сек
На локалхосте это вообще не проблема. В реальной ситуации вся производительность сводится к минимизации нагрузки на сервер - расходы на транспортировку данных и ширина каналов нивелирует все.
В любом случае лучше бери TCP. Скорость UDP не окупит твоих велосипедных попыток скорректировать данные.
>С сетями особо не работал, сервер буду писать однозначно с использованием boost.asio.
Самая перенагруженная и медленная сетевая библиотека. Если что-то упадет - энжой юр дебаггинг, оч приятно.
Твоя задача решается в 100 строк кода на сокетах Беркли.
Андрюш, съеби к своим чулочникам.
У Шпака точно такая же куртка CodeLite точно такие же скриншоты. Меня терзают смутные сомнения.
Вот код http://pastebin.com/18yUkcp4 .
>а максимальный отрицательный нихуя
Ты уж определись, тебе максимальный отрицательный, или
>левый и правый крайние отрицательные элементы в массиве
Ну так делай while перебирая с начала и с конца, как только найдешь отрицательный - дропай.
Блять, анон дай бох тебе здоровья выручил!
А для проприетарщины нужно просто линковаться с Qt динамически
>Как бе там LGPL - халявно для опенсорс проектов.
Лол, а может быть ты все таки прочитаешь, что такое LGPL?
Даю подсказку - lgpl разрешено линковать к проприетарным прогам динамической. В чем её запрет - нельзя использовать производные работы. Короче говоря ты не можешь внести изменения в сам Qt и не открыть, назвав своим продуктом.
Поясните тогда, как будет работать lgpl в его случае - закрытый коммерческий сервер.
Никак. Поскольку сервер ты распространять не будешь - вообще не парься. А если будешь распространять - то по lgpl ты обязан линковаться динамически.
Qt
Ну а если действия происходят в цивилизованной части мира или к тебе придут дяди с проверкой?
тоже самое
Пиздец, типичная пидорашка, вместо знания знать ничего не знает, но зато уже трясется от проверок непонятного чего. (L)GPL требует открывать исходный код при дистрибуции. Нет дистрибуции - нет исходников.
Блять ну не тупи же ты!
Ты обязан открыть саму Qt, если внёс в неё изменения. А производные продукты, которые её используют - ты открывать не обязан.
LGPL это считай такой аналог BSD.
А чому? Оно же жрет кресты. Чего мне теперь, на шарп пересаживаться, что ли?
Нету там ни редакторов, ни средств создания гуя (кроме системного - винапи, но это совсем мазохизм). Мб есть какая нибудь обвязка крестов к дотнету.
Ну даже если и дизайнером не пользоваться - надо уметь в нормальное автодополнение и интеграцию.
Кроме креатора, это кто то умеет?
Окай, спасибо.
Кстати, еще не копал. Обещают сделать компилятор для qml, кмк, это будет просто бомба.
Посмотри wxWidgets
Это средство создания гуя на крестах, пистоне и чём-то ещё. Кросплатформенный к иому же, и где-то формошлёпалка была.
Соси хуй пердолик. Кутя милая и я её на твою гейскую деревянную хуиту не променяю.
Причём тут пердолик? Вх и на венде канают
Еще один. В беседу достопочтенных господ о фреймворке с декларативным описанием гуя принес парашу с `Button1 = TButton.Create(owner)`
Нормального в требованиях не было. Было "маленькое и кроссплатворменное без кучи зависимостей"
Я потому и спрашивал про биндинги, тащемта. VCL к плюсам как-то прикручивали жеж.
wxwidgets?
Вообще есть идея изменить автопоинтер чтоб он при создании/уничтожении логгировал что-то, а потом скрипт написать для анализа этих логов. Но как в таком случае я получу имя функции/метода/неймспейса из которого память выделяли? Да и велосипедненько это.
Да и опять же, по самому поинтеру мы не поймём сколько памяти выделили.
Ну утечек памяти нет, всё на автопоинтерах же.
Мне нужно узнать какой компонент сколько памяти заюзал при работе.
Но он под шиндошсом же работать не будет.
Мимо, он для утечек
Хоть я и форсер vld, справедливости ради хочу заметить, что он не работает на никсах. Надстройка над чисто вендовой debug crt.
В студии прекрасный встроенный профайлер с графиками и прочими вкусностями. И еще можно делать автоматические оптимизации по результатам профилирования.
Недостаток - для проекта из 10к строк на выходе профилировщика получается уже полугиговый файл. Поэтому неудобно после каждой сборки профилировать.
Ставь QTCreator.
Причем не просто Qt Creator, а Qt SDK.
Иначе он еще будет тут ебать всем мозги, как компилятор подключать.
Вангую плптиновые вопросы по пунктам:
установил этот ваш куте ничего не запускается
как установить gcc под windows
как установить mingw под windows
установил этот ваш mingw ничего не запускается
как задать переменную среды
бля ну почему runtime error
как включить dwarf исключения
как переустановить mingw
class Point
{
private:
int _x;
int _y;
public:
Point():_x(0),_y(0){}
Point(int a, int b):_x(a),_y(b){}
void set(int a, int b)
{
_x=a;
_y=b;
}
int getX()
{
return _x;
}
int getY()
{
return _y;
}
};
Нужен ли тут деструктор? Поясните за деструктор, когда и зачем он применяется?
Здесь деструктор будет создан компилятором, как конструктор копирования.
Гугли POD.
Деструктор нужен для кастомнрго разрушения объектов. Самое простое - освобождение ресурса: память, файл, коннект к базе. Но может быть и более сложная логика, хотя и не рекомендуется (читай про исключения).
Думаю, что не нужен, так как нету динамического выделения памяти. Или нужен. Я не улавливаю сути.
По умолчанию, деструктор может только вызвать деструктор для членов класса (не всегда, читай про виртуальный деструктор) и чистит память самого объекта (только там где сам объект лежал). Все остальное надо делать руками
Это вопрос стиля. Где то принято с подчёркивания, где-то m_ или m или i.
Да, спасибо.
Начальные подчеркивания зарезервированы для компилятора. Если хочешь их использовать, ставь в конце. x_ и y_.
Исключение - KDEProject и OpenCV и всякое фб/гуглоговно.
"Write a program that uses a loop to display the characters for each ASCII code 32 through 127. Display 16 characters on each line with one space between characters"
Как сделать только 16 цифр на 1 строке, а не 32 33 34 35...127, и как это все показать в ascii как вставлять эту хуиту из acii table?
Пока есть токо это
int val = 32;
while (val <= 127)
{
cout << val << " ";
val = val + 1;
}
Таки нет, зарезервированы двойные подчёркивания __, так же не рекомендуется использовать подчёркивание и прописную букву _A, _Bxx, а со строчными проблем быть не должно. Но смотрится по-уебански.
Джва счётчика, один для символа, другой для количества символов. условный оператор в начале блока цикла который напечатает "\n" при 17 символе и сбросит счётчик символов.
Когда выводишь val касти его к типу char. Следи сколько ты уже вывел символов на текущей строке, и когда наберется 16 то вставляй std::endl. Сделай счетчик, или, например, можно смотреть на остаток деления val на 16 (val % 16) и в зависимости от остатка вставлять конец строки. Можно два вложеных цикла сделать.
Ебать ты дебик.
https://github.com/trending?l=cpp
Проектов дохуя, только в основном все - ниебически большие, и ентрилевел там соответствующий хотя бы сделать работающий прототип на плюсах внезапно выше, чем на питонах/раби, вот мы и не видим еженедельно новых веб фреймворков.
Хромиум, почти все новые и старые компиляторы, игровые движки и куча прочей хуйни.
Не обзывайся.
Так вот че почитать, поделать для этого самого умения. Мб есть какие вводные в кернел программинг. (Это уже и для себя интересно, не вдаваясь, каэш в продакшн)
Или это вообще просто-напросто сводится к умению компилить из командной строки, установке пакетов, в общем к базовому/продвинутому пользованию терминала?
Кернел на крестах непопограмируешь. А вообще прочитай книжку по системному погромировпнию под линупс.
Возможно с кернелом я загнул, но что тогда подразумевается под знанием линупса? Минимальная системуха?
Думаю, что навыки системного программирования и подразумеваются.
Наверное нужно системное API, там POSIX например.
Перед тобой свежеустановленая убунта.
Напиши и скомпилируй хеловорлд и твою лаба2 на ней.
Элементарные знания командной строки, GCC/clang, git и тп.
Начальные.
На джуна - это. На миддла - еще make, autotools, cmake, понятие ldconfig, grep/sed/awk и до бесконечности. Но это точно не про программирование ведра или что ты там себе выдумал.
Упоролся? Берешь линукс и ищешь пакеты, которые зависят от буста, qt, gtkmm и сотен других либ для плюсов.
Пиздец, почему там вообще дерево не перестраивается, а меняется только положение узла i? Нахуй такие иллюстрации нужны?
> последнее дерево не является кучей
Не соответсвует критерию кучи - каждый ребенок должен быть больше (или меньше, смотря какая куча) своего родителя.
Ну так я и говорю. Нахуя они в демонстрации построения кучи показывают дерево, которое в конце кучей не является?
Я однажды тем же вопросом задался. Поиом эту книгу нашёл. Файловый ввов-вывод, процессы, права пользователей, системные вызовы.
Почитай, интересно
И да, там в книге ещё про ведро рассказывается,это не надо.
Ну там дерево же вообще не изменяется. Наверное показана работа именно Bild-Heap (тоесть изменение индекса i), а Heapify нихуя не делает, тоесть дерево не изменяется, а только индекс скачет.
о, корбан
В книге написано что если return в функции main будет -1, то программа должна выдать ошибку.
Но я делал -1 или вообще удалял ретурн, мне ничего не писало.
Это стандартное соглашение в командной строке - отрицательный результат программы трактуется как ошибка.
Удалил ретурн из main - автоматически вернуло 0, стандарт гарантирует. Написал -1 - вернуло -1, но твоя ось проигнорировала это.
Ничего она не должна. Это код выхода, который, если не равен нулю, говорит об аварийном завершении программы. Т.е. это ты должен его считать и уже сам делать выводы. Бывает очень полезным в скриптах, для остального есть логирование.
https://en.wikipedia.org/wiki/Exit_status
>В книге написано что если return в функции main будет -1, то программа должна выдать ошибку.
Точно, но наоборот.
http://demin.ws/blog/russian/2009/07/30/elements-of-programming/
Тут проскакивала инфа что в qt нет таких проблем а я проверил есть.
Ты юзаешь стандартный std::string, хули ожидал-то? В QT тупо свой QString юникодовский.
Прыщи и юникод хранимый в std::srting
Давай ка мне теперь найди среднюю длину слова в строке из русских и англ слов :3
А, ну или не прыщи, а Windows и cp1251
>А я что юзаю?
std::string
>В QT тупо свой QString юникодовский.
Ты не используешь библиотеку Qt, а просто используешь Qt Creator как я понял.
Вместо std::string используй QString и подключи Qt в .pro
Стандарт в плюсах не сильно строгий же.
std::string базируется на char (байтовом)
Есть еще std::wstring, который базируется на wchar_t)
Хочешь юникода - используй wstring.
Хотя я что-то ошибся.
Почитал про wstring подробнее - говорят, что очень зависит от платформы и лучше не использоватью
Что мешает сделать basic_string <MyOwnYobaChar>?
return забыл и скобочки
> Хочешь юникода - используй wstring.
Хочешь юникода - используй utf8 в std::string. Вообще советую почитать http://utf8everywhere.org/ , там и про ситуацию с юникодом в крестах рассказано, и в STL и в Qt.
Если просто const переменная, то в машинном коде она, как правило, станет обычной переменной если забыть про тонкости наподобие оптимизаций, связанных с read-only memory etc, разместится на стеке или в сегменте данных, как обычно, в общем. Т.е. константность это просто такое высокоуровневое средство для проверки при компиляции, что ты не накосячил.
constexpr же на этапе компиляции будет подставлена вместо всех упоминаний и зашита в код. Например, для constexpr int x = 1 что y+=x, что y+=1 превратятся во что-то с inc eax, ну ты понел. Никакой отдельной памяти для этих чисел не выделится, они будут прямо в машинных инструкциях.
Это как происходит на практике. В теории же стандарт вообще ничего не говорит о таких деталях, просто правила подобраны так, чтобы на обычных пекарнях удобно подставлять constexpr - для них запрещено взятие адреса и подобные палки в колеса подстановке. Но никто не мешает таки выделить для них память, если компилятор дохуя щедрый. Наоборот, до появления constexpr компиляторы видели, когда const допустимо подставлять с сохранением семантики - и делали это.
Спасибо за ответ.
пиздец важный вопрос
сколько времени минимум понадобиться, что бы выучить кресты на достаточном для стажировки на джуна?
Что в твоем понятии "выучить кресты"?
Иди на хуй, ты профнепригоден.
>Времени минимум понадобиться
6 лет в вузе. 5 лет активной работы в опенсорсе.
Наличие своих проектов, которые нужны еще кому-то, кроме тебя, обязательно.
А еще ((SOLID&&OOP&&Patterns&&Algoritms)&&(Containers&&Pointers&&etc)&&(stl||boost||qt)&&(vim||emacs)&&unit_tests&&git&&unix_terminal&&etc)
иначе
junior1464_cpp->~useless_crap();
джуны в крестах не нужны, крестами заканчивают, а не начинают
3 месяца, не слушай пердунов
Пишу игру для конкурса из соседнего раздела
https://2ch.hk/gd/res/211718.html (М)
Поэтому графика нужна не замороченная. Повторюсь, в приоритете простота написания кода.
Задумка простая, но важна скорость 3D, движки обычно монструозные и тормозные для моей игры. Поэтому выбрал кресты, потому что раньше писал утилиты на них, хотя сейчас работаю в java, но там сам понимаешь, что с графикой.
Об этом и речь
http://irrlicht.sourceforge.net/
http://www.ogre3d.org/
>движки обычно монструозные и тормозные для моей игры
я конечно не знаю всех подробностей, но я сомневаюсь что можно написать вменяемый 3Д движ за две недели и при этом задавать вопросы что лучше OGL или DX
лучше две недели потратить на геймплей/графоуни/багофикс для твоей игры, а не для абстрактного движа
Есть же minetest который, блядь, не тормозит как высер жирного джаваблядка, а мелкомягкие обещали зделать c++ версию настоящего под шиндовс10.
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget ``parent = 0);
protected:
void keyPressEvent(QKeyEvent ``event);
};
void MainWindow::keyPressEvent(QKeyEvent ``event)
{
switch(event->key())
{
case Qt::Key_Shift: /ввв*/; break;
}
}
вакаба наверное указатели перед event съест, ну ты понял
>лол
Я с кодом попозже решил разобраться просто. А че за qt?
>vcl это обертка с плюсовым синтаксисом над дэлфи
На уровне компилятора - да, но весь код пишется на чистом с++. В то что внутри билдера меня не сильно волнует
>Я с кодом попозже решил разобраться просто. А че за qt?
https://ru.wikipedia.org/wiki/Qt
C++ гуевый (и не только) фреймворк.
>В то что внутри билдера меня не сильно волнует
Ты, блядь, вася. Тебе нужно именно то, что внутри билдера, т.к. именно он обрабатывает эту всю хуйню, неважно на каком языке. Найти ту же обмотку на плюсах потом проблемы не составит, а в дэльфитред я тебя послал потому, что тут никто с этим говном не работает хотя мб когда нибудь сюда зайдёт старый печальный крудошлёп, который работает с этим говном с начала 2000-х.
>с начала 2000-х
Ну окей, а как же с ХЕ8 Билдером, он ведь вышел не так давно. Основной принцип работы между борланд с++ билд ером и современным хе8 не изменился
Вась, ухади!
>а как же с ХЕ8 Билдером
А новые вещи в продакшен в рашке нитащут. В яндексе например, по комментариям его работников в 2014, запрещали писать на C++11. И это, блядь, топ ит компания, а шаражкины конторы использующие билдер в лучшем случае на 6-м сидят.
Тебе уже ясно пометили территорию: или нормальный C++, или пиздуй в дэльфитред с вопросами по VCL.
Лол, у нас как-то арх все ждал появления вариадик теплейтс в мс Вижул Студии. А другой каллека бугуртил, что это все дрисня, и вместо шаблонов нужны интерфейсы и полиморфизм.
А можно было просто взять D и не ебя мозга реализовывать все новое на нем. Но сори, у нас продакшен, главное - стабильность по 80 рублей за доллар.
D не взлетел именно из-за политики больших компаний.
И да: даже не начнет догонять пока его полностью не рефакторнут, т.е. - никогда.
Это C++ который не C++, ибо его уже поздно переделывать.
модули не нужны
Не начнет, пока не сделают сборку мусора опциональной нормально.
К тому времени сборщик уже успеют нормально прикрутить к плюсам лол
D requires garbage-collection
This could be seen as controversial because it is possible to run D without the GC. However, just because it is possible doesn't mean it is practical. Without a GC, you lose a lot of D's features, and using the standard library would be like walking in a minefield (who knows which functions allocate memory?). Personally, I think it is totally impractical to use D without a GC, and if you aren't a fan of GCs (like I am) then this can be quite off-putting.
Щас бы пиздаболию теоретика послушать. Стандартная библиотека прекрасно работает и без GC.
http://ideone.com/dhu5gU
Нет, потому что у С++ библиотека рассчитана на работу без GC.
Here are some things not to do with GC disabled, because they will cause memory leaks:
Do not use the array append ( ~= ) operator, or use the .length property to enlarge an array that has already been allocated. These rely on GC to free the old array if it has to be reallocated, since there may be aliasing to it somewhere else in the program.
Do not use builtin associative arrays. The only way to free these is by GC.
Most of Phobos and, I believe, Tango, were designed with the assumption that garbage collection is present. Functions in these libraries may leak memory horribly if used w/o GC.
Do not use D2 closures with GC disabled. (Not that you would anyway, for a game.)
У меня аж идея для проекта появилась.
Тебе опять же никто не мешает делать вещей вроде GC.collect в середине кода.
И да, к началу разговора: если D развивали бы не пара его создателей и люди не любили бы сидеть своем говне - это все давно не было бы проблемой.
Вот как бе пруфы последней строчки:
http://wiki.dlang.org/Memory_Management#Writing_GC_free_code
>Work is in progress to make the D standard library, Phobos, usable without any use of the garbage collector. Eventually Phobos will be fully @nogc compliant.
Нет, D изначально ущербен. Это такой C# с темплейтами. То есть не нужен ни пользователям C#, которым и с генериками норм, ни пользователям C++, которым нужны value-types и отсутствие GC везде. Есть язык, который "если D развивали бы не пара его создателей и люди не любили бы сидеть своем говне - это все давно не было бы проблемой." - это Clay. Который на голову выше D и при этом действительно слаборазвит. Но тут уж не судьба.
>Это такой C# с темплейтами.
Ниет. Ты ни одного, ни второго не знаешь видимо.
>это Clay
Ок ок, я понял, уноси свою сишку со скриптовым сахаром без нихуя.
Начал изучать недавно С++ по книге с вашей шапки Липпмана.
Там я дошёл до главы с классами, где какая-то ссылка на Sales_item.h была. Сначала я не понял т.к. я файл не создавал, и нигде до этого не было указано как его сделать или взять. Но дочитав главу до конца в книге указана гиперссылка, по которой, якобы, есть этот файл - пик №1.
Но при заходе по этой ссылке этого файла нет, а идёт редирект на эту книгу.
Что делать, подскажите?
Насчет сисярпа с темплейтами ты загнул, конечно. Со скоростью у D вроде бы все на уровне крестов. Но насчет ущербности я поддвачну тебя.
Если что, дело даже не в том, что, мол, кресты популярны, а D - нет, и вот поэтому на них не перекатываются и кодобазы кот наплакал. Дело в том, что сама концепция "взять существующий язык и выбросить возможности, которые кажутся плохими" - она тупиковая. Хотя бы потому что каждая выброшенная фича, даже объективно плохая, вроде хэдеров вместо модулей, даст моментальный отказ тех, кто ее использует, от переката на новый язык. В крестах есть более удачные и менее удачные фичи, но практически за каждой стоит серьезная мотивация, серьезная проблема, для решения которой в свое время решили использовать эту фичу. Поэтому объединение недовольных крестогоспод, которые, увидев D, предали его анафеме, оказалось больше допустимого. И именно это стало причиной того, что D умер в младенчестве.
Кресты же с самого начала осуществляют стратегию впитывания - берут из других языков разные парадигмы и фичи, но никогда ни от чего не отказываются. От успешного Си был взят популярнейший синтаксис и машинная ориентированность. Когда заговорили об ООП, а университеты стали пилить академические языки, в которых было только ООП, страус взял и аккуратно встроил парадигму в Си, получив смешанный ООП-процедурный подход, а не синтаксически бедную дрисню, в которой есть объекты, сообщения и больше нихуя. Заговорили об обобщенном программировании - вместо переката на какие-нибудь стандартные интерфейсы - страус со Степановым покумекали и внедрили шаблоны и STL. Заговорили о функциональном программировании - комитет впилил лямбды и variadic templates. Можно еще много примеров привести: умные указатели, конкурентные фичи, вывод типов - тысячи их. И все делаются по одному сценарию: "старое не ломается, новое гармонично дополняет старое". Поэтому происходит процесс, обратный тому, что произошло с D - алтфаки остаются, и вдобавок к ним перекатываются люди из других языков, соблазнившись тем, что тут есть и привычные им фичи, и крестовые.
Можно сколько угодно кукарекать про выстрелы в ногу и преимущества сильной типизации/функциональной парадигмы/еще чего-нибудь. Но успех крестов наглядно показывает, почему любые намеренные ограничения, призванные облегчить вкатывание для макак, на самом деле являются злом, убивающим язык. Диванные аналитики пилят стены текста с длиннющими апологиями своих языков, пытаются доказать, что их ЕДИНСТВЕННО ВЕРНЫЙ подход лучше всех остальных особенно функциональные петухи этим грешат, вместо того, чтобы запилить объединение концепций, которое лучше каждого в отдельности.
Насчет сисярпа с темплейтами ты загнул, конечно. Со скоростью у D вроде бы все на уровне крестов. Но насчет ущербности я поддвачну тебя.
Если что, дело даже не в том, что, мол, кресты популярны, а D - нет, и вот поэтому на них не перекатываются и кодобазы кот наплакал. Дело в том, что сама концепция "взять существующий язык и выбросить возможности, которые кажутся плохими" - она тупиковая. Хотя бы потому что каждая выброшенная фича, даже объективно плохая, вроде хэдеров вместо модулей, даст моментальный отказ тех, кто ее использует, от переката на новый язык. В крестах есть более удачные и менее удачные фичи, но практически за каждой стоит серьезная мотивация, серьезная проблема, для решения которой в свое время решили использовать эту фичу. Поэтому объединение недовольных крестогоспод, которые, увидев D, предали его анафеме, оказалось больше допустимого. И именно это стало причиной того, что D умер в младенчестве.
Кресты же с самого начала осуществляют стратегию впитывания - берут из других языков разные парадигмы и фичи, но никогда ни от чего не отказываются. От успешного Си был взят популярнейший синтаксис и машинная ориентированность. Когда заговорили об ООП, а университеты стали пилить академические языки, в которых было только ООП, страус взял и аккуратно встроил парадигму в Си, получив смешанный ООП-процедурный подход, а не синтаксически бедную дрисню, в которой есть объекты, сообщения и больше нихуя. Заговорили об обобщенном программировании - вместо переката на какие-нибудь стандартные интерфейсы - страус со Степановым покумекали и внедрили шаблоны и STL. Заговорили о функциональном программировании - комитет впилил лямбды и variadic templates. Можно еще много примеров привести: умные указатели, конкурентные фичи, вывод типов - тысячи их. И все делаются по одному сценарию: "старое не ломается, новое гармонично дополняет старое". Поэтому происходит процесс, обратный тому, что произошло с D - алтфаки остаются, и вдобавок к ним перекатываются люди из других языков, соблазнившись тем, что тут есть и привычные им фичи, и крестовые.
Можно сколько угодно кукарекать про выстрелы в ногу и преимущества сильной типизации/функциональной парадигмы/еще чего-нибудь. Но успех крестов наглядно показывает, почему любые намеренные ограничения, призванные облегчить вкатывание для макак, на самом деле являются злом, убивающим язык. Диванные аналитики пилят стены текста с длиннющими апологиями своих языков, пытаются доказать, что их ЕДИНСТВЕННО ВЕРНЫЙ подход лучше всех остальных особенно функциональные петухи этим грешат, вместо того, чтобы запилить объединение концепций, которое лучше каждого в отдельности.
>Дело в том, что сама концепция "взять существующий язык и выбросить возможности, которые кажутся плохими" - она тупиковая.
Ну как бы в D ничего и не выкидывали. Ну ладно, кроме этого еще дефайны и неймспейсы послали нахуй.
>Заговорили о функциональном программировании - комитет впилил лямбды и variadic templates
Самое смешное, что вообще все это было за почти за десяток лет до C++11 в D. Причем там это реализовано намного лучше, чем в крестах. Страуструп задумался о модулях и UFCS в C++17 - он тоже уже давно в D.
>фича, даже объективно плохая, вроде хэдеров вместо модулей, даст моментальный отказ тех, кто ее использует
Ну хэдэры-то конечно ахуенная вещь, особенно в плюсах, где дебажная сборка хэловорда с темплейтами может занимать пол часа с соответствующими бесконечными багами линкера.
И убрав эти хэдэры из языка их функциональности внезапно никто не лишится.
Все эти "обдуманные решения" в плюсах - такое же костыльное легаси говно, как и отсутствие этого решения.
>Но успех крестов наглядно показывает
Что людям просто похуй, они привыкли пихать костыль в зад и пихают.
Ты не понял сути D - никто ничего не выкидывал, просто все по-человечески рефакторнули. Тут тебе и быстрая компиляция, и куда более мощные средства метапрограммирования и вся compile-time хуита которая в плюсах костыльно реализованна на constexpr, и вообще все - но в отличие от плюсов ты можешь зайти в стандартную библиотеку и без проблем понять что автор пытался сделать. Это называется дизайном языка с учетом ошибок, а не накоплением говна как в плюсах.
Спасибо, как ты понял, а я нет?
> Со скоростью у D вроде бы все на уровне крестов.
Да нет, из-за GC это типичный C#. C# тоже довольно быстр, надо сказать.
>>639733
Страуструп задумался о модулях в С++ еще в книжке Дизайн и эволюция, которая появилась намного раньше D.
>Ты не понял сути D - никто ничего не выкидывал
D выкинул гигабайты кодобазы. Это - главное. А С++xy ничего не выкидвает.
Не путай "хотели" и "сделали". Фобос до сих пор рефакторят. Они так бешено быстро всего понапихали, что все эти десять лет только и переделывают туда-обратно. Быстрее будет с нуля язык сделать, нежели сделать всё стройно и гладко с тем, что уже есть.
// Тот анон, которому не нравится GC
>Да нет, из-за GC это типичный C#.
Да нет, он таки быстрее, хотя GC у него таки хуже чем в яве или го.
>Страуструп задумался о модулях в С++ еще в книжке Дизайн и эволюция, которая появилась намного раньше D.
И где они? По его заверениям он хотел ввести и вывод типов еще в 90-х, но отказался под давлением сишников.
>D выкинул гигабайты кодобазы. Это - главное. А С++xy ничего не выкидвает.
Использовать из D код из C++ никто не мешает, даже модель памяти аналогияная и аби плюсовый полностью поддерживается.
>>639772
Это следствие разработки 2 человеками (ну еще рандомные челики через раз с форума набигают). Сколько лет коммитет C++ обсуждал C++11 и сколько изменено в C++14?
Дело не только в этом же. Фортран тоже не выкидывал, но этого недостаточно. Суть в том, что комьюнити фактически с каждым стандартом существенно расширяется, и это мешает появиться какому-нибудь йоба-языку и убить кресты, как это было с фортраном. Новый язык вольно или невольно отвергает некоторые фичи крестов, а в новом стандарте все его годные фичи, напротив, будут, причем, грамотно интегрированные и пропиаренные. Поэтому кресты оказываются на шаг впереди, смекаешь?
Каких фич крестов нету в D?
>И где они?
У С++ фичи обсуждаются до тех пор, пока они не устроят всех. В отличие от тоталитарных корпоративных языков. Поэтому медленно. Но и хорошо при этом.
>Использовать из D код из C++ никто не мешает, даже модель памяти аналогияная и аби плюсовый полностью поддерживается.
Не поленился проверить - нихуя не так.
>Не поленился проверить - нихуя не так.
https://dlang.org/spec/cpp_interface.html
Что именно?
>Поэтому медленно. Но и хорошо при этом.
Ясно. Что именно хорошего? Что в языке, каждую фичу которого обсуждают по 10 лет все такие же костыльные простыни вместо шаблонов? Что ещё за 3 года обсуждений тебе могут дать чуть расширенный костыль в виде constexpr? Аргументация уровня "мы в говне, но зато стабильность".
А с чего ему умирать-то? Qt развивается, годных qt-программеров не хватает. Наши американские и канадские заказчики например проекты переводят на Qt, всё норм.
Есть какие-никакие знания по Java. С чего начинать обучение, чтобы не самые низы? Кокие подводные камни?
Ты безнадежен.
И книга уже мне подкинула какое-то странное задание: 1.21 с пика.
Я ничего не понимаю как её писать, в книге ничего не объясняется.
Сам файл Sales_item.h - в нём написано чтобы я не пытался понять код на данном этапе.
Что делает программа я не понимаю, а если я не понимаю как я могу дальше что-то делать по этой программе?
Я тупой и лучше мне всё это бросить?
Ну в 1.21 в программу вводятся 2 объекта Sales_item (operator<< в файле уже написан, так что самому ввод писать не надо), потом ты их сравниваешь на одинаковость isbn (функцие compareisbn) или по заданию предполагается, что вводятся две одинаковые, хуй пойми и тупо складываешь их (operator+ и operator+= для класса тоже определён)
Почему если я пишу std::cin >> item1 >> item2;
Т.е. сам ввожу значения item1 and 2, то всё нормально.
А если пишу так, чтобы значения были указаны:
item1 = "0-201-78345-X 3 20.00";
item2 = "0-201-78345-X 2 25.00";
То выводит какие-то странные ошибки?
Просто, я не хочу эти значения постоянно вводить, в книге на 2 пике написано вроде как этого избежать, но я не совсем понял т.к. там для Юникса, а у меня виндовс 10.
Гайс, везде рассматриваются консольные приложения, хотя в жизни я с ними почти не сталкивался. Почему так? Где учиться писать программы без ебучего черного окна?
Не стоит вскрывать эту тему. Делай то что в книге пишут, потом дойдешь до переопределения операторов.
> писать программы без ебучего черного окна
Это не является частью языка, поэтому мало где рассматривается.
ОП, добавишь в следующем треде инфу об OpenFrameworks? АТОМНАЯ БОМБА ПРОГРАММИСТА НА ЦЕДВАПЛАСА
Алсо, обсуждаем сие событие.
Лан, иди Qt ковыряй.
>Чем студия не угодила?
Винда зашкварилась, и студия на нее не устанавливается. Переустанавливать ее лень. Даже попросить тыжпрограммиста было бы лень, ведь потом надо столько программ устанавливать, и делать это мне лень.
ШIИD0W2
Хипстерская хуета сделаная какими-то азиатами, причем даже не со своей кодобазой, лал. Учитывая публику пишущую на этом прекрасном языке - будем давится говном, но не вот этим.
Ользо, несмотря на бессмысленность написания еще одного фреймворка, то, что у них может получиться, - это пакетный менеджер. По-хорошему, именно так им и нужно себя позиционировать.
Окошки, игрушечки,системные приложения. Браузер, допустим, написать хочу.
Может быть риверс инжиниринг в дальнейшем.
Здесь используется конструктор копии:
item1 = "0-201-78345-X 3 20.00";
item2 = "0-201-78345-X 2 25.00";
Ошибка возникает, потому что в классе он не определен.
Просто конструктор some_type (std::string), который, наверное можно самому без труда запилить, скопировав код из some_type::operator (std::istream) или типа того
> Так я уже выучил, я хочу формочки шлёпать, понимаешь?
Чет я не верю что ты осилил все основы языка и до сих пор не знаешь как сделать оконное приложение вместо консольного. Или ты тупо книжку одну прочитал, не вдаваясь в подробности?
govno.h:
#if defined(WIN32) || defined(WIN64)
void SetStrColorProcess(,...);
#else
Какое нахуй ",..."? Что это такое блядь?
Мб имеется в виду какой-то аргумент и после него троеточие? няшная сишечка например вообще не волновалась по этому поводу - SetStrColor() и void SetStrColor(int b, ...) для неё были синонимами.
Я гуглил: http://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and-i
По этой ссылке говорится одно, я попробовал сделать, и у меня по другому.
Запиши тоже, но в два оператора. Так как ты записал разницы нет, кроме того что i++ чуть медленее.
Я давно работал на пхп - делал сайты. Но уже мало что помню из него. Вот, решил выучить С++ и найти работу...
Ну, делать мне пока нечего, видеоигры надоели, а мамка на работу гонит.
Ну не знаю, постоянно скроллирую всякие вакансии, много вижу с++.
Ну и я его хочу изучить - хочу свои игры писать.
На то, чтобы выучить плюсы на уровне приемлемом хотя бы для прохождения собеседования у нюфага уйдет не меньше 2-х лет. А еще нужно знать весь стак их технологий. И опыт пыха иебе здесь не поможет.
Иди в раби или петон тред если нужна работа нет ребующая 5 лет задротства.
Эталонный крестовик прямо
Я слышал что С++, как и СИ - непотопляемые языки. И у меня знакомый сначала работал на обычной физической работе, а потом как-то перепрофилировался, и работает программистом на С++.
Они непотопляемые в том смысле что их ближайшие 10 лет никто и ничто не заменит. Но это не отменяет того факта, что C++ один из сложнейших (из мейнстримовых - самый сложный) язык. А чтобы куда-то попасть на работу сегодня (10 лет назад каждого васю брали, это да) нужно на зубок пересказывать изъёства вроде наследования виртуальных функций на собеседованиях, знать Qt с Boost и ещё кучу хуйни вроде опыта работы с прыщами и гита - и это если компания современная и не байтоёбский продукт делают, иначе нужно знать ещё кучу хуйни вроде ассемблера и сетевых протоколов.
И да, игрушки - без математической вышки пошлют нахуй.
>игрушки - без математической вышки пошлют нахуй
Чем так важна мат. вышка в игрушках?
Когда я учился в вузе, у меня по матанам была самая высокая оценка в группе среди мужского населения. Даже помогал другим решать, но я уже мало что помню из всего этого.
Тем что на плюсах в игрулях сегодня пишутся только движки (рендер, физика). Сам попробуй догадаться.
Начни с кернигана и ритчи язык си. Пригодится писать модули для пистонов и рубей
такой-то манямирок
Указатели.
С какой целью интересуешся?
Во всём, кроме C-like синтаксиса.
В шарп байтоебства не завезли.
Лучше поясните, почему С++ это именно отдельный язык, а не С с классами. без троллинга вопрос
Это не считается.
1) Потому что он не просто расширяет, но и выкинул некоторые фишки C (как автоматическое приведение типов и прочие прелести слабой типизации C и тд);
2) Они развиваются отдельно и имеют разные идеологии;
> язык, а не С с класса
Много дополнительных возможностей (шаблоны, перегрузки операторов). Но "С с классами" тоже считался бы отдельным языком. Вон - objective C именно что С с классами, но никто его не назовет просто С.
ОП на связи. ИМХО нельзя сразу пихать новое в шапку. Надо сначала присмотреться, убедиться, что это выстрелит, будет хорошей практикой, а не говном. Например, >>640689 - куна я удваиваю ссылки просмотрел пока что по диагонали. Так что в ближайший перекат это впиливать преждевременно, ящитаю.
Есть два Си. На одном кресты точёные, на другом решётка дрочёная. Куда сам сядешь, куда свой проект посадишь?
Сам на ди сяду, проект на джаву посажу.
Словарь. Например std::set. Если тебе не нужно будет итерировать по словарю то лучше std::unordered_set (быстрее доступ по ключу). Так как у тебя ключом служит непрерывная последовательность чисел то идеальный вариант - какой-то из массивов.
из инклюда убрали math.h, теперь если в .c файлах поменять <math.h> на <cmath>, в котором, по спеке, должна быть и старая функциональность, то все, пиздец.
...\Microsoft Visual Studio 14.0\VC\INCLUDE\cmath(17): error C2143: синтаксическая ошибка: отсутствие "{" перед "<", и т.д. по файлу.
Чет ошибка гуглится, но пути ее решения не гуглятся.
Но ведь это тоже самое, только вместо того чтобы использовать чужой код ты пишешь все сам.
Ты когда примеры в книгах по C++ читаешь, тоже на быдлокод ругаешься?
У unordered_map константный доступ, но с большими константами. Для каждого обращения будет считаться хэш, который наверняка сложнее, чем схема Горнера в std::to_string. Более того, в unordered_map на каждый хранимый int будет приходиться дохуя служебной информации, емнип 16 или больше байтов. Поэтому ему следует использовать to_string и не выебываться. Или сделать вектор со строковыми представлениями индекса, если надо прямо совсем быстро, за одну машинную команду.
Бля идите нахуй, пусть хоть через шаблоны хуячит свою задачку из лабы первого курса. Обсуждаете тут, что лучше хэшмап или switch в контексте какого-то несущественного говна.
> который наверняка сложнее
Очень спорное утверждение, все зависит от реализации, но так как от std::hash (которое используется по умолчанию) никто не требует криптографической стойкости то скорее всего в качестве хеша целого числа будет просто возвращено это число.
В студии возвращается вообще адрес этого инта, например.
Ты вектор с си-массивом перепутал.
> просто не реализовали в
Это противоречит идеологии языка. Попытка вызова джойна в деструкторе не бесплатна. А программист не должен платить за то чего не использует.
> просто не реализовали в
>Это противоречит идеологии языка. Попытка вызова джойна в деструкторе не бесплатна. А программист не должен платить за то чего не использует.
Ты не можешь не вызвать джойн(или детач) перед запуском десьруктора. Если ты этого не сделаешь, то получишь краш
Хотя да, я понял, ситуация здесь как с [] и at() у вектора. Но вот только [] вызывается очень часто, а деструктор у std:thread не так часто. На лицо слишком фанатичное следование парадигме, из-за чего возникают неудобства.
Ну. Ты создаешь thread_guard, вызываешь джойн или детатч. Потом при вызове деструктора произойдет совершенно ненужная (в твоем случае) проверка. Скажем для 99.99% программистов это будет оправдано - накладные расходы мизерны а запасная проверка не помешает. Но если эту проверку зашить std::thread то у 0.01% поехавших пригорит, они начнут городить свои велосипеды (без проверок) и везде срать что std::thread использовать не стоит так как он тормозит из-за ненужных проверок. Идеология языка такая что если каких-то расходов можно избежать, то такая возможность предоставляется - даже если выигрыш на самом деле мизерный.
Ты можешь себе представить, что у людей пригорит из-за одного сраного if'а, который, блять, просто меркнет на фоне того, что делает операционная система при завершении потока?
Исключения сильно упрощает код на участках, где возможны нехарактерные ситуации. Если это критично - отключай их нахуй и пиши велосипед.
*критично по производительности
Это холиварная тема.
Надо понимать как реализованы исключения, из этого вытекают их плюсы и минусы.
Гугл стайл гайд запрещает исключения.
У них есть проблемы с перформансом, но с другой стороны это бывает удобным механизмом обработки нештатных ситуаций.
Потому что .join при ошибке кидает исключение, а не перехваченное исключение в деструкторе - это вызов std::terminate(). Так что даже если бы join и вызывался, то поведение не изменилось бы, такие дела. Не понимаю чего тебе не нравится
Погуглил, там проблема с исключениями а не производительностью, так как проверка есть в любом случае, просто она вызывает не join() а ternimate()
Судя по http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2802.html сначала хотели сделать чтобы в деструкторе вызывался detach(), но там вообще пиздец получается, оставался вызов join() или terminate(), и получилось что от джойна отказались потому что он "results in serious responsiveness issues" или вообще может вызвать дедлок (имеется ввиду ситуация с обработкой исключения, последующей раскруткой стека, а потом возвращением назад и продолжением работы).
Как используется?
Они таскают свой stl за собой. Лежит в ${SOURCE_DIRECTORY}/contrib
Поэтому можно что-то. Но без auto в лямбдах и инициализации в захвате, decltype(auto) 11 плюсы нахуй. Потоки, промисы, таски, прочая многопоточность есть в бусте, всякие all_of или find_if там же.
Да и нахуй это в хуяндексе с их:
std::int64_t yasize () const;
Или стл несовместимые строчки и штрочки.
>Судя по http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2802.html
Ебать они умные, я аж охуел.
Потому что создается временный объект. Более подробно смотри в Прате.
Хочу попробовать написать с графоном, пока мой выбор пал на windows form или winapi, но все же прошу советов, что использовать чтобы было все красиво и с кнопочками.
Прочитал свои первые 2 книжки, хочу попробовать что-то новое, что ты сразу так?
Ты че обзываешься?
Я про нестандартные либы не знаю, не сталкивался. Просто пока варианты перебираю.
Дык я идиот, ты понимаешь?
Если носом не ткнуть со словами, "Вот, то что тебе нужно!" я не пойму.
Зачэм абыжаищь, дарагой? Пят днэй максымум, мамой клинус!
И про стек вызовов еще.
Я пользую c++builder от борланда, либо новые версии - embercadero cbuilder.
Пикрил - на большинство вопросов не могу ответить.
Могу сказать что:
'а' - символьный литерал. 8 байт.
"а" - строковый литерал. Не знаю сколько байт, вроде по 8 на каждую букву.
L'a' и L"a" - широкосимвольный литерал. 16 байт.
Дальше, там где 10u и 10L - я вообще не понял что это.
И еще подвопрос, пишет что unsigned не может быть меньше нуля или больше 255. Если я пишу 260U - всё корректно выдаёт.
Нужно учить. "Понимать потом" окажется достаточно сложно так как все проблемы с литералами будут проявлятся исключительно в каких-то ебанутых багах, но ты скорее всего этого никак не избежишь, так что возможно и не стоит особо заебыватся. Главное ясно понимать разницу между 'a' и "a" (особенно важно понять что "a" это два символа 'a' и '\0'). Также желательно знать про запись в шестнадцатеричном и двоичном виде. Все остальное редко встречается.
Зачем в строковых литералах добавляется этот нулевой символ?
Он добавляется в конце строки или после каждого символа в строке?
> больше 255
Тебя наебали. Может быть больше, вплоть до long long, если на 11 стандарте компилировать.
>ли после каждого сим
Только в конце строки, такое соглашение что последний символ в с-строке должен быть нулевой.
Но я по вашему совету скачал учебник в шапке 2014 года...
Это архитектура компьютера. Темы простые можно на всяких хасклетах видеокурс базовые посмотреть. И про ассемблер тоже чутка пояснят. Талмуд таненбаума для этого читать не обязательно.
#include <vector>
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
vector<char> str(MAX_PATH);
cout << "Enter your name: ";
cin >> str.data();
cout << "Hello " << str.data() << " :)" << endl;
return -14;
}
Всё, открылось. Извините что размножаю флуд. Вот вам по теме.
int main(int argc, char *argv[])//кажется, мы стали забывать классику
{
}
В коде две уязвимости, но какие и где - не знаю. Читаю сейчас учебник по С++. Подтолкните на мысль.
Но возможно в каком месте кода возможно переполнение буфера.
https://www.youtube.com/watch?v=aEZKGW_VTd4
Твое тоже наверняка поломает. Дебаггера нет под рукой.
>vector<char> str(MAX_PATH);
>cin >> str.data();
Кто сказал, что введенная строка будет меньше MAX_PATH?
Откуда я знаю кто. Был дан код и я пытаюсь понять. Я пришёл к мнению, что нужно выделять память по размеру введённому юзером в stdin, дабы избежать переполнение. Но как и что исправить не знаю.
>g++-4.7 -std=c++11 -g -O2 main.cpp -o main
In file included from tlc5940-raspberry/tlc-controller.h:34:0,from main.cpp:40:
tlc5940-raspberry/gpio.h:44:2: error: expected identifier before numeric constant
tlc5940-raspberry/gpio.h:44:2: error: expected ‘}’ before numeric constant
tlc5940-raspberry/gpio.h:44:2: error: expected unqualified-id before numeric constant
tlc5940-raspberry/gpio.h:46:1: error: expected declaration before ‘}’ token
Вот ссылка на файл, на который ругается компилятор:
https://github.com/sh4wn/tlc5940-raspberry/blob/master/tlc5940-raspberry/gpio.h
В чем проблема. Сам в кресты не могу, потому как питонодебил.
#include <math.h>
#include <stdio.h>
#include <windows.h>
int main(int argc, char argv)
{
char str = (char )malloc(100);
int repeat = 0;
char line = GetCommandLineA();
while (line != ' ')
line++;
line++;
if (strncmp(line, "repeat=", 7) == 0)
{
line += 7;
repeat = atoi(line);
line += (int)ceil(log10((double)repeat)) + 1;
}
if (strncmp(line, "str=", 4) == 0)
{
line += 4;
str = strtok(line, " ");
}
for (int i = 0; i < repeat; i++)
printf("%s\n", str);
line += strlen(str);
for (; line >= GetCommandLineA(); line--)
*line = '\x0';
free(str);
return -14;
}
#include <math.h>
#include <stdio.h>
#include <windows.h>
int main(int argc, char argv)
{
char str = (char )malloc(100);
int repeat = 0;
char line = GetCommandLineA();
while (line != ' ')
line++;
line++;
if (strncmp(line, "repeat=", 7) == 0)
{
line += 7;
repeat = atoi(line);
line += (int)ceil(log10((double)repeat)) + 1;
}
if (strncmp(line, "str=", 4) == 0)
{
line += 4;
str = strtok(line, " ");
}
for (int i = 0; i < repeat; i++)
printf("%s\n", str);
line += strlen(str);
for (; line >= GetCommandLineA(); line--)
*line = '\x0';
free(str);
return -14;
}
Дебаггером.
попробуй =0 убрать. он и так с нуля нумерует. или точку с запятой перед } поставить. или =1 после HIGH
тоже пока плохо знаю
Кстати у меня получилось скомпилировать только когда сократил до этого. Что значат удалёные слова я не знаю.
enum PinValue
{
LOW = 0,
HIGH
};
Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
+ C++ действительно быстрый - по скорости они вместе с C с большим отрывом уделывают любой другой язык. Замедление относительно C находится в районе 0-20% а в ряде случаев C++ оказывается даже быстрее, причем проявляется только при использовании высокоуровневых конструкций (в крестах ты никогда не платишь за то, чего не используешь).
+ C++ один из наиболее выразительных и мощных языков, позволяющий использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи.
+ C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по крестам, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".
Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.
>644363
>Кстати у меня получилось скомпилировать только когда сократил до этого. Что значат удалёные слова я не знаю.
Ты поменял новый strongly typed enum на старое гуано. Видимо, компилятор на это и ругался, что вообще-то странно, потому что в gcc это есть с 4.6 версии. Что у тебя прячется под g++-4.7?
До этого ещё 1 enum и на него компилятор не ругается.
g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
Ну вот меня и интересует, для каких задач C++ хорош (кроме легаси и игор)? Пусть универсален, но проигрывает специализированным инструментам.
Здесь какая-то мелкая хуйня из-за невнимательности. Скомпиль clang'ом.
Надёжность? Да и наверное найдутся инструменты, не сильно уступающие в скорости. Впрочем, я мало об этом знаю.
Хоть я и считаю, что писать быстрый код можно на любом языке, оптимизируя критические участки, но на моей памяти большая программа, написанная на c/c++ работала отзывчивее и быстрее на ресурсоемких задачах, чем аналоги, написанные на java. Доходило до того, что java приложение юзает ту же либу на C, а работает медленнее. И это уж не говоря об отзывчивости нативного UI и не нативных. Ярчайший пример - обоссаный qt creator и йоба clion. Первый хоть и кривой, как моя жизнь, но все везде быстренько, если не упадет нахуй. А clion, вроде и оптимизируют дохуя, но жрет он по 5 гигов на большом проекте и регулярно задумывается то там, то сям.
>644363
>644369
>Чет как-то не помогает.
Поставь clang, его ставить 2 минуты, если не собирать из сорцов. Тут явно какая-то синтаксическая проблема, о которой говно gcc сказать нормально не может. В таком режиме мы полночи искать проблему будем.
Тоже такого не знает. Компилирую с 11ым стандартом.
Либа компилируется как и раньше, когда компилирую прогу получаю тот же результат. Ругается на отсутсвующий identifier и фигруную скобочку.
enum class PinDirection : std::uint8_t {IN = 0, OUT = 1};
enum class PinValue : std::uint8_t {LOW = 0, HIGH = 1};
Ошибка почему-то та же, хость строк должно быть меньше.
инклюд для этой либы
#include <tlc5940-raspberry/tlc-controller.h>
#include <tlc5940-raspberry/raspberry-gpio.h>
Подозреваю переполнение если после str= больше 100 символов не разделёных пробелом.
Нихуя, кстати. LLVM умеет генерить ARM код
Где важна скорость и только.
Там где надежность настолько же важна (в системах управления космических кораблей, медицинском ПО, етц) дважды подумают, чем стрелять себе в ногу
Сделал все в одну строчку и поменял строки местами. Все равно точно такая же ошибка в той же строке! Для чистоты эксперимента закомментил одну из строк, ошибка, как и положено, в отсутствующем классе.
Почему make main? С чего ты взял, что это правильная цель? Я просто вызвал make
>упадёт нахуй
У меня тоже падает пару раз в месяц QtCreator и подтекает, но запускается за 5 секунд.
Скорее всего, ты собираешь не ту цель, поэтому у тебя компилятор не подключил стандартную библиотеку и ругается на неймспейс std::
На больших проектах он хоть и долго проводит анализ, но хотя бы не UI не виснет бля
C, виртовские поделия, lisp - это только из того, что я с дивана вспомнил
Я так понимаю, что в файле make инструкии для компиляции файла main.cpp
Напилши с какими параметрами компилировал.
Может так? И убери малок/фри
if (strncmp(line, "str=", 4) == 0)
{
line += 4;
char str =line;
while(str == ' ')str++;
}
Ещё поясните за си-строки. Ели я указываю только на первый символ строки а её длина не исвесна, то значит она храниться в свободной памяти? Тогда почему какой нибудь маллок не заберёт себе часть памяти занятой этой строкой или почему следующая же перемена объявленая на стэке не затрёт это строку?
Почему бы тебе не ебать нас нуб-вопросами и почитать, например, ритчи? Чтобы нормально освоить материал.
Потому что это си. всю книгу ради пары вопросов долго. Лучше Что-то интересное прочитать.
Двачую. Что за дебилизм думать, что раз трудно читать материал, значит он сложный? Бред! Это ты, еблан, хуево написал.
source.cpp: In function 'int main(int, char)':
source.cpp:34:16: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
while(str == ' ')str++;
Чем дальше ты будешь идти, тем больше будет таких вопросов. Того Ритчи читать дней 5 максимум, зато на выходе у тебя будет структурированный материал со всеми нюансами.
>трудно читать
трудно = сложно
сложно читать материал = материал сложный
Ну не удобно же вот так листать не компактную шапку.
Д а т ы ч т о, а м н е в се ж е каж ет ся, ч то в се сло жн ы й ма тери ал не вс егда тр удн о чи т а ть. И н ао бо ро т.
Так получается, что при проверке программа падает даже при нормальных вводных данных. Пиздец.
Ты так не шути больше. У меня лиса иногда буквы ворует и долго не возвращает.
Нахуй мне основы? Я вообще на другом ЯП пишу. Просто на задании попался С++ код, а я нихуя не знаю. Хули вам помочь-то, блядь?
Может так и сделаю, но не сегодня. Спасибо за помощь!
Я ебал тебе помогать
В общем, у меня CTF. Большинство заданий я выполнил, а вот с исправлением С++ кода у меня проблемы. Даётся этот код. Нужно починить его чтобы он корректно работал и нужно убрать уязвимости в коде. Есть комментарий:
// STRING ECHO
//
// Sample usage:
// strecho repeat=4,str=pleaseechome
Я читал статьи - нихуя не понимаю и поэтому пришёл сюда. Сам я питоноблядь.
Я правильно понял?
if (strncmp(line, "str=", 4) == 0)
{
line += 4;
char (звёздочка) str = line;
while((звёздочка)str == ' ')str++;
}
Если без этой строки:
source.cpp:39:17: error: 'str' was not declared in this scope
line += strlen(str);
Если с char str = (char );
source.cpp(14) : error C2059: syntax error : ';'
Если char str = (char )malloc(100);
LOST!
The program's normal behaviour is changed! (RULE0)
Я заебался уже. 6 утра, а я не могу решить эти таски.
char str = (char )malloc(100);
...
str = strtok(line, " ");
...
free(str);
Освобождаешь ты память по указателю на подстроку. Утечка + краш на выходе.
К тому же strtok вернет только первый токен перед пробелом. Как именно уязвимость заюзать - интереснее.
Лучше дай условие полное, какой цтф ебашишь чтобы это говно переписать.
>line += strlen(str);
не заметил. тогда char (звёздочка) str в начале напиши, а в ифе просто str = line;
А нет. Это я номера постов перепутал. Ну ты понял.
The program is still vurnerable! (RULE1)
3 vulnerability(ies) remained unpatched.
Some vulnerability is detected via unexpected empty output. In order to avoid any false crash detection, be sure that you output some error message when you detect that the input is malicious.
Сейчас часто встречаются вакансии программиста на чистом C.
Кто-нибудь может мне обьяснить... ЗАЧЕМ?
Я слышал что объектно-ориентированное программирование - это основная фишка ++ или я что-то не понял?
Это копия, сохраненная 20 февраля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.