[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.21917 Reply
File: Minato_arisato.jpg
Jpg, 31.56 KB, 225×350 - Click the image to expand
edit Find source with google Find source with iqdb
Minato_arisato.jpg
Тут будет мой дневник изучения этого чудесного языка. Я собираюсь перешать всего Кернигана и Ричи и продолжить двигаться дальше. Если у вас будут мысли и любые рассуждения о языке, то запиливайте здесь.
>> No.21923 Reply
>>21917
У меня есть одно размышление, хотя и не совсем о языке. Ничего личного, но тех, кто пишет няшный C и сраный C++ вместе и считает их одним языком, нужно расстреливать, а трупы отдавать голодным свиньям.
Мимо-зло-кодил

P.S. Удачи с K&R.
>> No.21929 Reply
>>21923
ты злой, наверни-ка чаю.
>> No.21951 Reply
>>21929
По существу он прав. Это два разных языка. С разной идеологией. Не надо их смешивать.
>> No.21952 Reply
>>21917
В ЮУрГУ плюсы изучают за две недели на летней практике. Ну, это так, к слову.
>> No.21953 Reply
>>21952
> ЮУрГУ
Светоч мировой науки и оплот программирования.
>> No.21954 Reply
>>21952
> плюсы изучают за две недели
Очень смешно.
Видел я таких, "изучивших плюсы". Лучше бы их яве или похапе учили, толку больше было бы.
>> No.21964 Reply
>>21923
Данный товарищ прав. C и C++ совсем разные языки и плохо совместимы друг с другом, хотя в учебниках говорят обратное. C++ - это C с классами, шаблонами и еще дохера тупого нелогичного и отвратительного синтаксиса. Единственным полноценным C с классами является Objective-C. Но так как он популярен только на маках, то остается C++, если хочешь ООП.
P.S.
Учи лучше C, так как без него не жить, а если так хочешь ООП, то бери Java, Python, Ruby или же установи себе компилятор Objective-C.
>> No.21966 Reply
>>21964
> дохера тупого нелогичного и отвратительного синтаксиса.
Это твоё субъективное мнение.
>> No.21967 Reply
>>21966
Я знаю многих людей, которые программируют на C++ почти всю жизни, но никто из них не хвалит его, а некоторые терпеть не могут.
>> No.21968 Reply
>>21966
Ололошеньки-лоло. То есть по-твоему, есть хоть кто-то, кто считает, что C++ — не C загаженный хуёвым ООП, хуёвыми шаблонами и прочим ненужным говном? Ну, кроме Бьярне Птицемертвеца, этот на голову долбанутый.
Почитай-ка http://harmful.cat-v.org/software/c++/, просветлись.
>> No.21970 Reply
>>21967
Есть вещь для чего с точно не годиться, это для управления СУБД, а так для обучения самое оно. Если освоить си, то лисп и питон покажутся прогулкой по парку.
>> No.21971 Reply
>>21967
Это только твой опыт.
>> No.21972 Reply
File: Konachan.com-135432-sample.jpg
Jpg, 2336.31 KB, 1500×1125 - Click the image to expand
edit Find source with google Find source with iqdb
Konachan.com-135432-sample.jpg
>>21952
> В ЮУрГУ плюсы изучают за две недели на летней практике. Ну, это так, к слову.
В любом ВУЗ-е язык программирования дается ровно в том объеме, получив который студент, как предполагается, сможет прослушать и выполнить остальные курсы программы обучения. Не больше и не меньше. Набитые годами мозоли и распространенные практики сюда не входят, поэтому "нам в шараге читали %языкнейм%, теперь я его знаю" - типичное заблуждение студентов.
>>21967
> Я знаю многих людей, которые программируют на C++ почти всю жизни, но никто из них не хвалит его, а некоторые терпеть не могут.
А как можно положительно к нему относится, если знаешь, что есть более продвинутые инструменты для решения задач?
>> No.21973 Reply
>>21970
Нет, ну вы посмотрите! Ещё один путающий!
>> No.21974 Reply
>>21968
> То есть по-твоему, есть хоть кто-то, кто считает, что C++ — не C
Да. Несколько сотен тысяч программистов по всему миру.
> Почитай-ка ...
Открой для себя C++11.
>> No.21975 Reply
>>21974
Не вырывай из контекста отрывки постов, пожалуйста. C++ — не C. C++ — C загаженный хуёвым ООП, хуёвыми шаблонами и прочим ненужным говном.
> Открой для себя C++11.
Давно уже открыл. А ты всё же почитай.
> All new features added to C++ are intended to fix previously new features added to C++.
C++11 = ещё больше говна, ещё более сложные компиляторы, ещё более раздутый код. Единственное, что там толкового добавили, так это foreach, да и тот добавили хуёво.
>> No.21976 Reply
>>21975
> C загаженный хуёвым ООП
ООП там типичный, такой же как в Яве и всех прочих языках данного класса.
> хуёвыми шаблонами
Багет неосилятора.
> прочим ненужным говном
Не нужно - не используй, в чем проблема?

Лично у меня претензий к плюсам только две - долбанутая система неймспейсов (хочу как в питоне, по файлам-модулям), и говно вместо стандартной библиотеки (отсутствие прежде всего нормальных строк и нормальных смарт-пойнтеров).
>> No.21977 Reply
>>21976
> ООП там типичный, такой же как в Яве и всех прочих языках данного класса.
Так это и есть хуёвый ООП. Хочешь посмотреть хороший, годный ООП, смотри на смоллток или обжектив-си. Даже у руби и то объекты куда няшнее.
> Багет неосилятора.
Не багет ни в коем случае. Просто синтаксис хуёвый (Угловые скобки? Серьёзно?). В D синтаксис тоже тот ещё, но он хотя бы работает. Не говоря уже о том, что float'ы до недавнего времени передавать было нельзя. Кто так делает, блджад? Это попросту некачественная работа.
> Не нужно - не используй, в чем проблема?
Проблема как раз в этом. Где-то читал отзыв одного опытного кодера, что если кто-то хочет писать на C++ годный, поддерживаемый код, то ему придётся отказаться от большинства его «преимуществ». То есть почти что писать на простом си, только компилируемом как сипипи.

В общем, пока что ТОЛЬКО СИ, ТОЛЬКО ХАРДКОР.
>> No.21978 Reply
>>21977
> смоллток
Говно для дрочеров.
> обжектив-си
Проприетарная эппло-хуета.
> у руби
Там точно такой же ООП, никаких принципиальных отличий, которые нельзя было бы реализовать шаблонами.
> Просто синтаксис хуёвый
И это вся аргументация? Добавь свой препроцессор и используй какой душе угодно синтаксис.
> То есть почти что писать на простом си
Дебилов, которые так делают, хватает, но это не значит, что они "опытные кодеры".
> ТОЛЬКО СИ, ТОЛЬКО ХАРДКОР
Только ёбля с байтами, проёбанными указателями, именами функций из двухсот символов и регулярными коллизиями, уёбищными тайпкастами, отсутствием всякого ООП и инкапсуляции, отсутствием контейнеров, отсутствием нормальных строк, отсутствием эксепшонов и т.д. и т.п.
Вы, сударь, мазохист.
>> No.21979 Reply
>>21978
> Только ёбля с байтами, проёбанными указателями /../
Так в C++ не то же самое?
>> No.21980 Reply
>>21979
Нет. Там смарт-пойнтеры и сборщик мусора давно.
>> No.21981 Reply
>>21978
> Проприетарная эппло-хуета.
> Говно для дрочеров.
> И это вся аргументация?
А разве тебе такой недостаточно?
>> No.21982 Reply
File: 9780321566157.jpeg
Jpeg, 62.66 KB, 504×648 - Click the image to expand
edit Find source with google Find source with iqdb
9780321566157.jpeg
>>21978
> Проприетарная эппло-хуета.
Ничего, что ObjC совсем не Apple разрабатывали? Компиляторы есть под любые ОС, только всей мощи этого языка понять тяжело, хотя есть GNUStep. В нем одно из самы нормальных ООП. Хоть от синтаксис сначала глаза кровоточат, но потом понимаешь: "черт, а ведь действительно охуенно сделано! Давно так хотел!". Ах, да, в Objective-C давно реализован хороший сборщик мусора.
> Дебилов, которые так делают, хватает, но это не значит, что они "опытные кодеры".
Parallels используют чистый C в своих разработках и охуенно все.
>> No.21983 Reply
>>21982
> чистый C
Про чистый С я ничего и не говорю. Много кто на нем пишет.
>> No.21984 Reply
>> No.21985 Reply
>>21976
> ООП там типичный, такой же как в Яве
Угу. Струткурное ООП вместо вменяемого.
Впрочем, и классическое ООП несколько иррелевантно современным требованиям.

А ешё там контекстно-зависимая грамматика.
---
А вообще, есть много хороших ЯП. Go, factor, haskell, да эрланг, Io и lua. Зачем тебе Си++?
>> No.21988 Reply
>>21985
> Go
Они там протечки гарбаж-коллектора починили или нет ещё?
>> No.21990 Reply
>>21985
Чтобы познать насколько оно говно на собственном опыте, а не из праздных рассуждений анона, очевидно.
>> No.21999 Reply
>>21985
> есть много хороших ЯП
Смотрим на востребованность этих языков и прекращаем нести хуйню.
Когда хоть один из них достигнет хотя бы десятой доли востребованности на рынке плюсов, тогда и будет о чем говорить.
>> No.22000 Reply
>>21999
Востребованность не имеет никакого отношения к хорошести. Вон войны, например, всегда востребованы, но нельзя сказать, что они хорошие. Так и с языками программирования: хорошими могут быть как ио, так и яваскрипт, как хаскель, так и си, хотя их популярность может разительно отличаться.
>> No.22001 Reply
>>21988
Починят сразу после того, как пофиксят баг в менеджере памяти, не позволяющем выделить более 1Gb зараз.
>> No.22002 Reply
>>22000
> Востребованность не имеет никакого отношения к хорошести
Имеет.
1) Если язык негде использовать, он бесполезен.
2) Чем популярней язык, тем больше под него готовых библиотек. Почти все библиотеки пишут на си и плюсах, а на вашем хаскеле - только биндинги к ним.
3) Чем популярней язык, тем проще и дешевле найти разработчиков на нем, и тем меньше риски для проекта.
>> No.22003 Reply
>>22002
Какие именно риски меньше?
>> No.22004 Reply
>>22002
Чем меньше времени кодер проводит в gdb, вылавливая сегфолты и утечки памяти, тем меньше риски.
>> No.22005 Reply
>>22004
Из чего следует, что языки с ручным управлением памятью си и плюсы нужно отсечь.
>> No.22006 Reply
>>22003
Риски того что нормальные люди не возьмуться за говнопроект.
>> No.22009 Reply
>>21972
Вот как раз с плюсами там совсем не так. Их преподают и... и все. Кроме как на зачете они больше нигде тебе не понадобятся.
>>21980
> смарт-пойнтеры
Это которые без проброса операторов, без умения оборачивать this и с двойной нагрузкой на аллокатор?
> сборщик мусора
Консервативный, построенный на хаках и сплошь платформозависимый Boehm GC, что ли?
>>22002
1) Выходит, C++ бесполезен.
2) Иррелевантно разговору о качестве языка. С тем же успехом могли бы пидорасить все либы на COBOL.
3) Чем популярней язык, тем проще и дешевле найти восторженного долбоеба, задрочившего "%говно_нейм% за 21 день", вместо разработчика, и тем выше риски для проекта.
>> No.22010 Reply
>>22009
Вот этому вот джва чая.
>> No.22011 Reply
>>22009
> Чем популярней язык, тем проще и дешевле найти восторженного долбоеба, задрочившего "%говно_нейм% за 21 день", вместо разработчика, и тем выше риски для проекта.
Гениальнейшие умы человечества нашли решение этой проблемы. Оно называется "собеседование с будущим руководителем".
>> No.22012 Reply
File: 7c408b0968a971c882c4542f1fd55afe.jpg
Jpg, 539.53 KB, 751×1050 - Click the image to expand
edit Find source with google Find source with iqdb
7c408b0968a971c882c4542f1fd55afe.jpg
Ну и что лучше изучать, если не С++? Джава, Пайтон, Си шарп?
>> No.22013 Reply
>>22012
Я думаю что Python/Perl/Pure C. Хотя ничего из этого не знаю.
>> No.22014 Reply
>>22009
> 1) Выходит, C++ бесполезен.
Открою маленький секрет: 95% геймдева - C++
мимопробегал
>> No.22015 Reply
>>22012
Чистый си. Очевидно же.
>> No.22016 Reply
>>22002
Нет языков которые негде использовать. Второе и третье опять же не имеют к хорошести никакого отношения.
>> No.22017 Reply
>>21988
Какие именно?
>> No.22022 Reply
>>22012
Если хочешь стать девочкой-волшебницей, то сначала С, потом Haskell.
>> No.22023 Reply
>>22009
> Их преподают и... и все. Кроме как на зачете они больше нигде тебе не понадобятся.
Совсем диванный штоле?
Вакансий на плюсах почти столько же, сколько на яве, но платят за них больше.
Пять языков, на которых всегда и в любом городе мира можно заработать это си, ява, плюсы, сярп и похапе.
> 1) Выходит, C++ бесполезен.
Очевидно опровергается числом вакансий по нему, в том числе в топовых компаниях - IBM, MSFT, GOOGLE, Amazon и т.д.
> 2) Иррелевантно разговору о качестве языка.
Нет, во-первых это доказывает, что язык наиболее удобен для разработчиков для написания своих библиотек, а во-вторых обеспечивает наличие этих самых библиотек.
Тот же лисп окончательно сдох после всплеска интереса к нему прежде всего из-за отсутствия библиотек под него. Живые сейчас только вариации лиспа под явой, ибо там есть доступ к явовым библиотекам.
По этим же причинам смешно рассуждать о применении Go, D, Ada и прочих "более лучших плюсов" - библиотек нет, любая реальная задача упирается в написание собственных биндингов на каждый чих.
Язык без библиотек - не язык, а академическая игрушка.
> 3) Чем популярней язык, тем проще и дешевле найти восторженного долбоеба
У тебя отсутствует знакомство с реальным рынком программирования. Дохрена квалифицированных специалистов, с 10+ годами опыта разработки, ибо язык довольно старый и стабильный.
>> No.22027 Reply
>>22011
Да, к счастью. Но, к сожалению, гениальнейшие тупы придумали "программиста на %говно_нейм%" вместо программиста, ПАТАМУШТА УЖЕ ВСЕ НА %ГОВНО_НЕЙМ% НАПИСАНА КО-КО-КО!
>> No.22028 Reply
>>22012
Изучать нужно все, чтобы выработался КРУГОЗОР, мать твою, и ты мог бы сам выбирать, что тебе нужно, а что нет.
>> No.22029 Reply
>>22023
> Совсем диванный штоле?
Я отвечал вот этому >>21972 куну. Этим я хотел сказать, что C++ в ЮУрГУ преподается в объеме, слишком большом для того, что он описал.
> Очевидно опровергается числом вакансий по нему, в том числе в топовых компаниях - IBM, MSFT, GOOGLE, Amazon и т.д.
То, что миллионы мух долбятся башкой об стекло, еще не означает, что долбиться башкой об стекло полезно. С точно таким же успехом вакансии могли бы быть и на COBOL. Алсо, доброчую вот этого >>22027 куна.
> Нет, во-первых это доказывает, что язык наиболее удобен для разработчиков для написания своих библиотек
Нет, это доказывает, что к языку все привыкли, не более того. Алсо, для разработки библиотек C++ как раз таки хреново подходит, как показывает практика. Уж точно не лучше, чем C#.
> Дохрена квалифицированных специалистов, с 10+ годами опыта разработки, ибо язык довольно старый и стабильный.
"Дохрена квалифицированных специалистов, с 10+ годами опыта разработки", — здесь я хотел тебе возразить банальным отрицанием, — "ибо язык довольно старый и стабильный", — но потом понял, что ты имеешь ввиду как раз не "квалифицированных специалистов", а Вадимов Моториных. Поясняю: специалист по C++ — это не специалист по программированию, это специалист по C++.

Ну и повторюсь еще раз: в твоем посте можно с успехом заменить "C++" и "язык" на "COBOL" и получить точно такой по смыслу текст.

c:ненавижу здорово тредов беззубой крови
>> No.22031 Reply
>>22027
Дай угадаю: ты погромируешь на каком-нибудь хаскеле или лиспе, но не можешь найти работу, так как всем работодателям нужны программисты на C# или яве?
>> No.22033 Reply
>>22031
Не угадал.
>> No.22039 Reply
>>22031
Я тебе тайну одну расскажу - большинство "программистов на хаскеле" даже не пытаются найти работу, связанную с хаскелем - они тупо клепают гуевые круды на сярпе или какой-нибудь дельфи и выебываются только в интернетах.
>> No.22040 Reply
>>22029
> Ну и повторюсь еще раз: в твоем посте можно с успехом заменить "C++" и "язык" на "COBOL" и получить точно такой по смыслу текст.
Нет, не можно.
1) Библиотек на плюсах на несколько порядков больше, чем на COBOL
2) Программисов на плюсах...
3) Вакансий для (2)...
>> No.22041 Reply
>>22039
А я вот нашел даже без высшего образования, зп 90, полет нормальный
>> No.22042 Reply
>>22040
Ты не понял. Развитие IT могло пойти по другому пути, и вместо плюсов мы могли бы сейчас иметь COBOL (может, с ООП-шными присадками). Суть моих утверждений в том, что вероятность такого сценария точно такая же, как и того, что мы имеем сейчас.
> 2) Программисов на плюсах...
Повторяю еще раз: "программист на плюсах" — это оксюморон вроде "слесарь на отвертке с прямым шлицем".
>> No.22045 Reply
>>22042
Глупость какая
Есть переводчики с языка на язык и есть программисты на языке. Универсальных программистов не существует. Универсальный программист - это универсальный переводчик, считающий что может быстро выучить словарь и грамматику любого языка. В теории это наверно возможно, но без знании идиоматики пользы от этого все равно мало.
Факториалы писать можно на любом языке, это да. А вот с первого раза написать большую расширяемую и эффективно работающую систему уже вряд ли. Универсальный программист это фантазии студента или наемного программиста низшего звена. Любой владелец бизнеса пошлет таких универсальных нахер, потому что ему нужны деньги, а времени ждать два года, пока программист освоит новые технологии, у него нет.
>> No.22046 Reply
>>22042
> мы могли бы
Если бы у бабушки был хуй, она была бы дедушкой.
> Повторяю еще раз: "программист на плюсах" — это оксюморон вроде "слесарь на отвертке с прямым шлицем".
Твое хейтерство не делает твою позицию обоснованной. Ты ниасилил плюсы, это мы уже поняли. По существу и с аргументами есть что сказать?
>> No.22047 Reply
>>22042
> "программист на плюсах"
следует понимать как "программист, предпочитающий работать с C++ и хорошо знающий этот язык".
> "слесарь на отвертке с прямым шлицем"
Скорее "слесарь механосборочных работ".
>> No.22049 Reply
>>22046
Будто там есть что осиливать.
>> No.22050 Reply
>>22045
> Универсальный программист - это универсальный переводчик, считающий что может быстро выучить словарь и грамматику любого языка.
И ты туда же. Языки программирования не имеют ничего общего с естественными языками, они скорее похожи на язык математики.
> Проекты, предлагающие программирование на естественном языке, гибельны по своей сути.
(Дейкстра)
---
> C++ is Good for the Economy, It Creates Jobs!
Си++ может быть сколь угодно распространённым языком, это не делает его лучше. Равно как и XML не будет хорошим языком разметки данных.

К счастью, индустрия понемногу набирает адекватность и переходит на простые решения: json, документ-ориентированные и вида ключ-значение базы данных, python, ruby, даже js. Когда-нибудь она найдёт и адекватную замену для си++.
---
>>22049
Ты хоть стандарт языка-то видел?
>> No.22052 Reply
>>22045
Глупость какая.
Программист - это тот, кто может с первого раза написать большую, расширяемую и эффективно работающую систему на том, что он знает. А знать он должен порядочно, потому что он программист и должен поддерживать свою квалификацию, должен быть в курсе современных технологий IT, чтобы не превратиться в Моторина.
>>22046
> Если бы у бабушки...
Irrelevant.
> Твое хейтерство...
Где ты в моих постах увидел хейтерство?
> Ты ниасилил плюсы...
Неверно, если не сравнивать с Александреску.
> "программист на плюсах" следует понимать как "программист, предпочитающий работать с C++ и хорошо знающий этот язык".
Кючевое слово здесь "предпочитающий" - знающий много чего, но предпочтение отдающий плюсам. Подавляющее большинство программистов на рынке труда - как раз таки "на C++"; и там, где квалифицированный программист может изменить своим предпочтениям, дабы решить задачу более эффективно, типичный "погромист" с нынешнего рынка труда будет плакать, колоться, но продолжать отлавливать сегфолты в своем велосипеде.
> Скорее "слесарь механосборочных работ".
Нет. Слесарь механосборочных работ своим аналогом в IT имеет... ну, скажем, специалиста по установке и настройке баз данных и систем документооборотав предприятиях малого и среднего бизнеса. При этом он может отдавать предпочтение продуктам от MS или быть, тащемта, швабодолюбом, например.
>> No.22053 Reply
>>22052
> докуметооборотов
конечно же.

И ссылку на пост забыл поставить.
>> No.22054 Reply
>>22045
> с первого раза написать большую расширяемую и эффективно работающую систему уже вряд ли.
Программистам на C++ это, конечно же, не под силу. Программисты же на любом другом языке воспользуются паттернами ООП-проектирования, в которых от языка будут зависеть лишь детали реализации.
>> No.22055 Reply
>>22041
А я школьник, пишу на Java и получаю $20k. А ещё меня хлебом не корми, дай только соврать что-нибудь на анонимных имиджбордах.
>> No.22056 Reply
>>22050
> К счастью, индустрия понемногу набирает адекватность и переходит на простые решения: json, документ-ориентированные и вида ключ-значение базы данных, python, ruby, даже js. Когда-нибудь она найдёт и адекватную замену для си++.
Лолчто? Это на руби-то переходят? А js - это не серьёзный язык, там ООП кособокое.

>>22052
> Программист - это тот, кто может с первого раза написать большую, расширяемую и эффективно работающую систему
Если "с первого раза" - это "в один присест", то ты не прав.
>> No.22060 Reply
>>22054
> Программистам на C++ это, конечно же, не под силу. Программисты же на любом другом языке воспользуются паттернами ООП-проектирования,
Как будто паттерны не применимы к С++.
>> No.22061 Reply
>>22055
Какой то у тебя батхерт хз. Работаю в группе выч. физиков в осколково, попал туда по личному знакомству с половиной группы
>> No.22062 Reply
>>22060
Как будто плюсоводы пользуются паттернами. Паттерны ведь были придуманы для кодеров-обезьянок, желающих быстро и с минимальными трудозатратами решить задачу, поэтому настоящему программисту на C++ не пристало ими пользоваться - лучше подойти к делу обстоятельно и написать ещё один текуче-падучий велосипед.
>> No.22063 Reply
>>22056
> ООП кособокое
Ну да, не Си++, а чистокровное прототипное ООП (такое ещё в Self, Io и (но уже не настолько чистокровное) lua).
>> No.22064 Reply
>>22063
Притом большинство прототипное не переваривает. Например придумали 100500 класс-ориентированных ЯП (и библиотек), компилируемых в яваскрипт. Хотя часть из них отомрет, когда выйдет javascript harmony.
>> No.22079 Reply
>>22050
> переходит на простые решения
> js
Очень смешно. Плюсы, может, и не лучший язык, но я точно знаю, что лучше яваскрипта, ибо хуже яваскрипта может быть только похапе.
Яваскрипт - худшее, что случилось с вебом. Программирование сервер-сайд решений на нем - чистый мазохизм.
>> No.22080 Reply
>>22062
Ты Страуструпа читал?
Вообще-то многие паттерны были придуманы им, под плюсы. И ими пользуются. По крайней мере те, кто действительно знает плюсы, а не пишет "Си-с-плюсовым-конпелятором" а потом не понимает, почему у него нихуя не работает и исходит дерьмом.
>> No.22081 Reply
Как я понимаю у вас тут уютный срачик и вопросы по плюсам можно не задавать?
крокодил
>> No.22082 Reply
>>22079
Печальнее всего то, что серверсайд можно писать на дофига чем хорошем, а клиентсайд только на js. А еще зоопарк браузеров со своими разными причудами.
>> No.22083 Reply
>>22056
В JS прототипно-ориентированное программирование, не путай.
> Если "с первого раза" - это "в один присест", то ты не прав.
Нет, это не "в один присест". Это именно в с первого раза, а не после пары провалов и переписываний с нуля.
>> No.22084 Reply
>>22080
> Вообще-то многие паттерны были придуманы им, под плюсы.
Это например? Ой, хотя нет, не надо; прозреваю такой омск, что у меня мозги растворятся от одних только названий. Лучше почитаю еще раз GoF.
>> No.22086 Reply
>>22082
> а клиентсайд только на js
Я про это и говорю.
Вообще не понимаю, почему до сих пор веб состоит из доисторических идиотских костылей на всех уровнях, с еще более идиотскими проприетарными подпорками в виде флеша и силверлайта. Мозилла с Гуглем вполне могли бы навязать остальным новые стандарты языка разметки и скриптового языка, их доля рынка вполне к этому располагает.
>>22083
> В JS прототипно-ориентированное программирование
И? От этого оно не перестает быть говном.
>> No.22092 Reply
>>22086
> Мозилла с Гуглем вполне могли бы навязать остальным новые стандарты языка разметки и скриптового языка
Гугл сделал улучшение http. И где его используют?
Даже html5 с трудом идёт в практику, консервативность клиентских веб-технологий — просто чудовищна.
Как скриптовой язык лучше lua, но стоит всё-таки сделать байткод и не мучиться с выбором ЯП.
>> No.22093 Reply
>>22086
> И? От этого оно не перестает быть говном.
Перестает, если правильно и к месту его использовать. Тот же структурный подход вполне себе винрарен... был.
>> No.22094 Reply
Нужно сначала изучить какое-либо ООП-говно, чтобы уметь в паттерны и декомпозицию, а уже потом браться за Cи.
Си без нормальной модульности - ад и погибель.
>> No.22095 Reply
>>22092
> Даже html5 с трудом идёт в практику
Завершённый стандарт ожидается только спустя год-два.
>> No.22096 Reply
File: 1kYUHl.jpg
Jpg, 36.60 KB, 427×640 - Click the image to expand
edit Find source with google Find source with iqdb
1kYUHl.jpg
Няши, а почему в C++ сделали new и delete, чем не угодили malloc,realloc,calloc, free?
>> No.22097 Reply
>>22095
В 2014, если быть точным.
>> No.22098 Reply
>>22097
Мне вот интересно, актуально ли сейчас разрабатывать стандарты вот так - подолгу, основательно, версии чередовать только тогда, когда много изменений наберётся? Раньше, когда не всё так быстро развивалось и росло, может и был смысл, но сейчас не лучше ли как-нибудь изменить подход? Например, стандарт изменять чаще, но внося небольшое количество изменений.
Тем более, что производители браузеров весьма быстро реализуют поддержку тех или иных возможностей.
>> No.22100 Reply
>>22098
Няша, сейчас идёт чуть ли не вторая браузерная война, о каких стандартах может идти речь? W3C отдельно, браузероделы отдельно.
>> No.22102 Reply
>>22100
W3C не отвечает за реализацию же, они только пишут стандарт.
Браузерная война только за доли рынка, но функционал разве различается сильно? Есть разные моменты в реализации фич из стандарта, но потом они всё равно выравниваются.
>> No.22103 Reply
>>22096
1. Напиши код, создающий структуру через malloc;
2. Напиши код, создающий структуру через new;
3. Сравни размер кода, сделай выводы.
>> No.22105 Reply
>>22096
Вызывать конструктор после malloc очень весело и вкусно. Особенно если нет new (включая placement new).
>> No.22107 Reply
>>22102
> Браузерная война только за доли рынка, но функционал разве различается сильно?
Ну ты попробуй что-нибудь написать одновременно под все браузеры что-нибудь более сложное чем хеллоуВорлд на html5+js (без болле абстрактных библиотек как jQuery и Prototype), причем не в голове, а вот реально сесть и написать. Тогда ты поймешь что одни браузеры кособоко поддерживают w3c, другие черпают вдохновение у Аллаха, а третьи забили на все и сделали все совершенно по-другому.
>> No.22108 Reply
File: 1BdaF.jpg
Jpg, 111.31 KB, 900×1213 - Click the image to expand
edit Find source with google Find source with iqdb
1BdaF.jpg
Доброкодеры, в сишке есть такая штука как Структура/Объединение, в Си два плюс Класс/Структура/Объединение. По сути очень похожие штуки, значит на Си можно и в ООП?
>> No.22109 Reply
>>22108
Полиморфизма, наследования и инкапсуляции нет.
>> No.22110 Reply
>>22109
> инкапсуляции нет.
Как это нет? А как же инкапсуляция указателями?
>> No.22111 Reply
>>22110
Сударь, вы ж извращенец.
>> No.22113 Reply
>>22111
Но инкапсуляция указателями-то от этого не исчезает.
>> No.22114 Reply
И такой-то параметрический полиморфизм на указателях есть, кстати сказать.
>> No.22115 Reply
>>22114
И эти люди байтоёбы потом смеют говорить что-то плохое о языках без строгой типизации.
>> No.22122 Reply
Аноны, внезапно понадобилось уметь в паралеллизм. Код пишу на пинуксе, но подразумевается и компиляция\запуск на шиндошс.
В общем, я в растерянности - куда бежать, чего читать? OpenMP, pthreads? Наставьте на путь истинный штоле.
>> No.22123 Reply
>>22122
boost::threads, или треды из C++11.
pthreads не будет работать под Виндовз.

OpenMP вещь своеобразная, лично мне подобный "магический автоматический параллелизм" не нравится, в бусте есть все необходимые механизмы для реализации в том числе consumer-producer паттерна.
>> No.22127 Reply
>>22123
> pthreads не будет работать под Виндовз.
Ха-ха!

>>22122
Вкуривай join calculus, pi-calculus, temporal logic of actions и прочую годноту. Программируй на Хаскелле, используй STM, DPH, CHP, пиши свои реализации. Не зашкварься о кресты или интелевские либы, эта хуита для быдла, которое не умеет ничего, кроме С/C++ и ни на что большее, чем написать #pragma omp for чтобы фор распараллелися не способно.
>> No.22129 Reply
>>22122
Для windows есть cygwin например (и много чего ещё).
Так что не забивай голову лишней хренью.
Используй pthreads.
>> No.22130 Reply
Ужас какой. Все что угодно лишь бы не использовать нормальные виндовые треды.
>> No.22131 Reply
>>22130
> лишь бы не использовать богомерзкий проприетарный не портируемый винапи
Починил.
>> No.22132 Reply
File: 1287872955896.jpg
Jpg, 12.44 KB, 354×329 - Click the image to expand
edit Find source with google Find source with iqdb
1287872955896.jpg
>>22130
> нормальные виндовые треды
> нормальные
> виндовые
>> No.22134 Reply
>>22130
Объясни, почему ужас.
Стандарт на виндовые треды определяет одна организация майкрософт.
Они могут поменять свои стандарты в следующих версиях своих продуктов, никто им не указ, и тебе придётся переписывать свой код.
pthreads это часть стандарта POSIX, определяемого IEEE, ISO и IEC. Это лучше.
>> No.22135 Reply
>>22134
> Они могут поменять свои стандарты в следующих версиях своих продуктов, никто им не указ
У них же стабильность и совместимость во главе угла. И 95% рынка.
>> No.22136 Reply
>>22135
Это на десктопах, к тому же в Пендосии еще % маков большой. На серверах картина диаметрально противоположная.
>> No.22137 Reply
>>22136
> На серверах картина диаметрально противоположная.
http://www.thevista.ru/page12918-windows_server_prodolzhaet_pravit_bal[...]ngs=1
>> No.22138 Reply
>>22137
> Количество проданных копий
Ололо.
>> No.22139 Reply
>>22138
Сними СПОшные очки, няша.
>> No.22140 Reply
>>22137
Инфа от аффилированного источника не первой свежести.
>> No.22141 Reply
>>22137
> http://www.thevista.ru
В ужасе закрыл браузер, подошёл к окну и заплакал.
>> No.22144 Reply
>>22123
> boost::threads, или треды из C++11.
Опа, а в плюсы таки завезли нативные треды? Гуд, гуд. Их и заюзаю тогда. Подводные камни какие-нибудь будут?
openmp мне тоже не понравился. Не доверяю я всякой магическо-автоматической фигне.
Кстати, бустовую библиотеку придется всю тащить или можно треды от нее как-то отдельно приделать?
>> No.22146 Reply
>>22144
Ну и да, что-нибудь про конкретно С++11 посоветуйте почитать. Или мне доков хватит?
>> No.22149 Reply
>>22144
> Опа, а в плюсы таки завезли нативные треды?
Там по сути pthreads под линупсами и виндовые потоки под вендой, просто общая обертка стандартизированная.
> Кстати, бустовую библиотеку придется всю тащить или можно треды от нее как-то отдельно приделать?
Ну, не совсем всю, но какую-то часть, да. Плюс иметь буст для конпеляции.
>> No.22151 Reply
>>22149
> Там по сути pthreads под линупсами и виндовые потоки под вендой, просто общая обертка стандартизированная.
Т.е. написал один раз код и потом можно его спокойно компилить под виндой\линем без изменений? Совсем замечательно же!
>> No.22152 Reply
>>22151
> Т.е. написал один раз код и потом можно его спокойно компилить под виндой\линем без изменений?
Да, как и с любой другой кросс-платформенной оберткой. Просто эта теперь стандартизирована.
>> No.22153 Reply
File: 4408962_700b.jpg
Jpg, 29.46 KB, 500×403 - Click the image to expand
edit Find source with google Find source with iqdb
4408962_700b.jpg
>>22152
Круто. Пошел курить стандарт.
Спасибо за помощь.
>> No.22173 Reply
> Не доверяю я всякой магическо-автоматической фигне.
Все что байтолюб не понимает автомачески становится "магической фигней". Даже такое убожество как OMP.
>> No.22189 Reply
Не хочется создавать отдельный реквест тред.
Посоветуйте действительно годные учебники/самоучители С++ и Java Android.
Так же интересует литература/сайт по ARM. А именно STM32F4.
>> No.22191 Reply
>>22189
Читай Бьярне Страуструпа. Бьярне - это имя, а не название книги
>> No.22192 Reply
>>22191
C++ 11 FAQ от Бьярна Страуструпа?
А на счет ARM и Android не знаете?
>> No.22193 Reply
>> No.22206 Reply
>>22191
Cтрауструп пишет для тех кто в теме. Действительно лучше решай Кернигана и Ричи, а потом постепенно переходи на С++
>> No.22235 Reply
>>22206
Вопрос от мимокрокодила.
Какой компилятор лучше использовать новичку чистой сишечки? На какие переходить позже?
>> No.22242 Reply
>>22235
GCC/MinGW. Переходить на GCC/MinGW.
>> No.22244 Reply
>>22235
GCC или llvm/clang, причём clang предпочтительней — у него лучше анализ кода и сообщения об ошибках.
Кроме того, этот анализ кода можно встроить в IDE.
>> No.22254 Reply
>>22242
Два чая этому очевидности владыке
>> No.22316 Reply
Незнаю куда написать, поэтому пишу сюда.
Нужно узнать значение параметра InstallRoot в HKEYLOCALMACHINE\SOFTWARE\Microsoft\.Net Framework
Облазил все интернеты, нигде нет толкового объяснения что да как.
Помогите, няши.
воннаби-С++-быдлокодер
>> No.22317 Reply
>> No.22546 Reply
Аноны, есть у меня утечкопроблемы, суть токова:
Есть один класс, изображающий ноду в дереве, которая изображает файловую систему в игре.
Нода эта может быть файлом или быть папкой. И если папка, то в нем std::map, где пары имя_дочерней_ноды - указатель_на_дочернюю_ноду.
И вот допустим есть такой код:
FileNode* folder1 = new FileNode("folder1", true); //folder1 - имя ноды, true значит папка
FileNode* folder2 = new FileNode("folder2", true);
FileNode* file1 = new FileNode("file1", false, 200); //false значит файл, число - размер файла
FileNode* file2 = new FileNode("file2", false, 400);

folder1->AddChild(file1);
folder1->AddChild(folder2);
folder2->AddChild(file2);

delete folder1;
Который создаёт вот такое дерево:
          file1  
        /
folder1+
        \
          folder2+
                  \
                    file2
Хотелось бы чтоб delete folder1; освобождал саму ноду folder1 и все идущие от нее ноды тоже.
Как бы мне это в деструкторе запилить? Штука еще в том, что, несмотря на то, что все объекты этого класса предполагается выделять только на куче, в мапе ноде могут быть еще и указатели на ноды, которые на стеке. Так что просто цикл, который вызывает delete для всех элементов в мапе может кончится сегфолтом.
>> No.22552 Reply
>>22546
Попробуй "умные поинтеры". В C++11 они уже запилены во встроенную библиотеку, в предыдущих версиях - есть boost'овские. Гугли на тему SharedPointer'ов и прочего. Но они, ЕМНИП, выделяются исключительно из кучи.
>> No.22553 Reply
>>22235
не слушай тех, кто предлагает mingw, если у тебя винда то просто скачай visual c++ 2010 express edition (она бесплатная) и не парься. с мингв заебешься.
>> No.22557 Reply
>>22553
Не учи дурному.
>> No.22558 Reply
>>22553
> visual c++ 2010 express edition
И насколько хорошо оно поддерживает стандарт С99?
>> No.22560 Reply
>>22553
У меня Geany, mingw нужен, не ври.
>> No.22564 Reply
Раз уж C тред. Анон, можешь объяснить понятно, что значит &? В общих чертах что такое указатели понимаю. Можно передать массив с помощью * но не с **? Передается же все равно адрес.
>> No.22565 Reply
>>22564
А теперь используй "``", Люк.
>> No.22566 Reply
>>22552
Ок, спасибо. Я тут нашел вариант проще: просто в деструкторе явно вызывать деструкторы всех элементов в мапе. Оно, правда, теперь внезапно КРОВЬКИШКИ, дважды высвобождается, но это другая история.
Алсо, читал тут про деструкторы и немного не понел: вот, допустим, дефолтный деструктор имеет функционал А, если я деструктор напишу, чтоб там был функционал Б, то в итоге получится А+Б или только Б и мне надо еще переписывать явно всё то, что делается деструктор по умолчанию?
>> No.22567 Reply
>>22564
> что значит &
Взятие адреса переменной же. Любая переменная занимает место в памяти, просто <имяпеременной> возвращает значение, а &<имяпеременной> возвращает адрес по которому она расположена.
> Можно передать массив с помощью * но не с **?
Yep. Массив в сишке это кусок памяти, в котором последовательно расположены переменные какого-то типа, а имя массива это по сути указатель на первую переменную в этой последовательности. Например a[0] эквивалентно a, а a[5] эквивалентно (a+5).
>> No.22568 Reply
>>22567
> <имяпеременной> возвращает значение, а &<имяпеременной>
<имя_переменной> возвращает значение, а &<имя_переменной>
> Например a[0] эквивалентно a, а a[5] эквивалентно (a+5).
Например, а[0] эквивалентно *a, а a[5] эквивалетно *(a+5) fix
>> No.22569 Reply
>>22568
Даже разметка против байтоедства.
>> No.22570 Reply
>>22569
> байтоёбства
пофикшено ftgj
>> No.22571 Reply
>>22566
Твою ж мать.
> Оно, правда, теперь внезапно КРОВЬКИШКИ, дважды высвобождается, но это другая история.
Потому что map сам вызывает деструкторы у хранимых в нем элементов, это очевидно же. Если хранил сами элементы, то вызываются деструкторы у самих элементов; если хранил указатели, то вызываются деструкторы у указателей (ну, то есть, ничего не вызывается).
> Алсо, читал тут про деструкторы и немного не понел: вот, допустим, дефолтный деструктор имеет функционал А, если я деструктор напишу, чтоб там был функционал Б, то в итоге получится А+Б
This.
>> No.22572 Reply
>>22566
А вообще, не бойся прототипировать, Люк, да используй cout.
>> No.22573 Reply
>>22571
> если хранил указатели, то вызываются деструкторы у указателей (ну, то есть, ничего не вызывается).
Вот потому и была утечка, ибо указатели. Поэтому переделал деструктор, чтоб явно вызывался деструктор у всех элементов в мапе.
> This.
Что именно this? Там два варианта же.
> прототипировать
Я еще не знаю такой магии. Чтоэта?
>> No.22574 Reply
>>22573
> Вот потому и была утечка, ибо указатели. Поэтому переделал деструктор, чтоб явно вызывался деструктор у всех элементов в мапе.
Я так понял, ты заменил указатели на shared_ptr-ы, а потом еще зачем-то стал явно вызывать деструкторы. Угадал?
> Что именно this? Там два варианта же.
"в итоге получится А+Б" — this.
> Я еще не знаю такой магии. Чтоэта?
Какого, извините, хрена ты берешься за паяльник, не имея представления об электронике?
Это значит "по-быстрому, на коленке собирать маленькие, одноразовые программки, нужные только для того, чтобы проверить, как оно там на самом деле работает/можно ли вообще реализовать тот или иной монадный трансформер концепт".
>> No.22575 Reply
>>22574
Нет, shared-ptr'ы не использовал. Просто дописал в деструктор вызов деструкторов всех элементов в мапе.
> Какого, извините, хрена ты берешься за паяльник, не имея представления об электронике?
Я не настоящий сварщик же, маску на стройке нашел.
> Это значит "по-быстрому, на коленке собирать маленькие, одноразовые программки, нужные только для того, чтобы проверить, как оно там на самом деле работает/можно ли вообще реализовать тот или иной монадный трансформер концепт".
Аааа... Ну тогда я умею прототипирование :3
>> No.22576 Reply
>>22575
> Я не настоящий сварщик же, маску на стройке нашел.
Положи на место.
>> No.22577 Reply
>> No.22578 Reply
>>22566
Как насчет спиздить идею Qt с их как бы GC?
>> No.22579 Reply
>>22578
Проще тогда на жабку пересесть же.
>> No.22580 Reply
>>22578
В куте нет гц, там примитивный подсчёт ссылок и shallow copy.
>> No.22587 Reply
File: 686900.jpg
Jpg, 49.93 KB, 448×604 - Click the image to expand
edit Find source with google Find source with iqdb
686900.jpg
>>22580
Кьют
>> No.22588 Reply
>>22580
Ну так ему это и нужно же. Или я жопой читал?
>> No.22589 Reply
>>22588
Нет, у него утечкопроблемы, ему просто нужно аккуратно следить за памятью.
>> No.22590 Reply
>>22589
> утечкопроблемы
Вроде же в 11-х плюсах что-то по этому поводу сделали?
>> No.22592 Reply
>>22590
Единственное что можно сделать это помолиться или сходить в церковь.
>> No.22595 Reply
File: macro-доброчан-же.png
Png, 106.82 KB, 304×307 - Click the image to expand
edit Find source with google Find source with iqdb
macro-доброчан-же.png
>>22592
Да ну нафиг.
>> No.22626 Reply
Раз уж C тред. Анон, можешь объяснить понятно, что значит "&"? В общих чертах что такое указатели понимаю. Можно передать массив с помощью "" но не с *? Передается же все равно адрес. Да, я еще и в разметку не могу.
>> No.22627 Reply
>>22626
У меня дежа вю.
>> No.22629 Reply
File: [Senjōgahara-Hitagi]-341.jpg
Jpg, 481.87 KB, 2560×1600 - Click the image to expand
edit Find source with google Find source with iqdb
[Senjōgahara-Hitagi]-341.jpg
>>22626
Ссылка - это указатель, который самостоятельно разыменовается.
>> No.22630 Reply
>>22626
int *p;
int x;
x = 0;
p = &x;  // Норм, в p теперь адрес х.
*p = 42; // По адресу из p присваиваем 42. То есть х теперь 42.
// ...
x = 0;
p = x;   // Хуита, p теперь — нулевой указатель (то бишь, указывает на нуль). При обращении настанет пидец^W сегфолт.
*p = 42; // А вот и пиздец. Обращение по адресу нуль, сегфолт.
Осака каптчой «сущность они» какбы говорит нам, что тот, кто не может в указатели, не может и в си.

И да, чти разметку: http://dobrochan.ru/help/wakabamark .
>> No.22631 Reply
>>22630
Это я знаю.
меня интересует вот такое:
1)**&
2)***
3)**
>> No.22632 Reply
>>22631
Что означает 1). Видел в параметрах в функции. Почему массив можно передавать только с 2), а не с 3), ведь все равно записан у нас в итоге - адрес начального элемента массива, остальные определяются сдвигами.
>> No.22633 Reply
>>22632
Первый не видел ни разу, долбонутая запись какая-то. А массивы можно передавать и с 2), и с 3), другое дело — какие именно. То бишь, двухмерные, трёхмерные итд.
>> No.22634 Reply
>>22633
Двумерный массив. Поидее такая запись 1) заменяет *** при его передаче.
>> No.22635 Reply
Судя по холивару в треде лучше сначала учить чистый С, да?
Какой учебник посоветуете?
>> No.22636 Reply
>>22635
K&R.
>> No.22657 Reply
>>22634
> Двумерный массив
> **&
Глупость какая-то. Двумерный массив это массив массивов, т.е. указателей на указатели. Нафиг там еще & непонятно.
>> No.22659 Reply
>>22634
>>22657

двумерный массив - тоже самое что и одномерный;
массив из целых чисел [2][8] может представлатся в памяти вот так: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
к [1][6] мы получаем доступ примерно так: addr + ((1 * 8) + 6)
ссылка на массив, на первую его переменную - не переменная. хз зачем написал..
лень рассказывать, действительно. поищи инфу о представлении данных в гугле, покодь на асме. будет намного легче понять
>> No.22664 Reply
File: байтоебство.png
Png, 223.94 KB, 1408×1344 - Click the image to expand
edit Find source with google Find source with iqdb
байтоебство.png
Бешеные умения в треде.
>> No.22684 Reply
>>22631
> **&
&b доставляет номер ячейки памяти, в которой хранится значение переменной b. 
*a доставляет значение, которое хранится в ячейке памяти по адресу a. Операторы * и & являются обратными друг для друга. Запись **&b эквивалентна записи *b.
> ***
   Можно описать как "указатель на указатель на указатель". Используется при работе с массивами. Массив представлен в памяти как набор расположенных друг за другом значений, при работе с массивом известен указатель на его начало. Записи massiv[1] и *(massiv+1) равноправны.
> **
"Указатель на указатель" или "указатель на массив".
int a = 10;
int* b = &a;
int** c = &b;
std::cout << **c; // выведет 10
>> No.22686 Reply
>>22664
хуйню нарисовал. там не int array[2][2], а int **array;
>> No.22688 Reply
>>22686
Ты вот сам сейчас подумай что ты написал.
>> No.22691 Reply
>>22688
нет ты. int array[2][2] - это 4 числа, а на рисунке к этим числа еще указатели сверху тянутся
>> No.22695 Reply
File: array.jpg
Jpg, 55.44 KB, 1000×1000 - Click the image to expand
edit Find source with google Find source with iqdb
array.jpg
>>22691
Нет ты.
Двумерный массив - это массив указателей. Лови медскиллз.

мимодил
>> No.22704 Reply
>>22691
Нет ты. 4 числа это array[4], а [2][2] это массив из двух указателей на массивы по два числа.
>> No.22706 Reply
>>22704
Кстати, я >>22695 правильно нарисовал?
Просто сам хочу заодно разобраться в этом указателеебстве.
>> No.22712 Reply
>>22706
> int** array
> array = 10
Дальше не читал: очевидно, написана полнейшая ахинея.
>> No.22713 Reply
>>22712
Поясни.
>> No.22714 Reply
>>22713
Откуда взято число 10? Массив указателей может находиться по этому адресу, но его может там и не быть. До тех пор, пока память не выделена, использование какого-либо числа лишено смысла.
>> No.22716 Reply
>>22714
> Откуда взято число 10?
С потолка же. Допустим указатель будет ссылаться на 10ю ячейку памяти.
Да и это же не реальный код и даже на псевдокод слабо похоже.
>> No.22717 Reply
>>22716
Когда я учился в университете и мы хотели поиграть с реальными значениями указателей на бумаге, то рисовали ленту из клеточек, которые сверху нумеровали (это были адреса), а в клеточках - значения. Гораздо нагляднее, чем то, что у тебя.
>> No.22718 Reply
>>22717
Ок, в следующий раз буду рисовать леточкой, а не отдельными ячейками.
>> No.22719 Reply
>>22718
Алсо, в современных настольный компьютерах int занимает 4 клеточки, ЕВПОЧЯ.
>> No.22720 Reply
>>22719
От компилятора зависит.
>> No.22721 Reply
>>22720
Ну ок, не менее 4-х клеточек.
>> No.22730 Reply
>>22684
Так вот не эквивалентно. По логике да, а на практике если в параметр функции подставить - не работает.
>> No.22732 Reply
>>22721
Я помню, что выражение (sizeof(long) >= sizeof(int) && sizeof(int) >= sizeof(short)) является истинным. Но не помню, чтобы (sizeof(int) >= 4) было бы настолько же истинным для всех реализаций.
>> No.22733 Reply
>>22730
Код напиши, тогда можно будет что-нибудь сказать. С передачей массивов и указателей поначалу всегда много проблем.
>> No.22740 Reply
>>22704
> Нет ты. 4 числа это array[4], а [2][2] это массив из двух указателей на массивы по два числа.
вон из профессии! быстра бля!
http://ideone.com/sONkG

массив из двух указателей это int *array[2];
каждый указатель может ссылаться на произвольное кол-во элементов.

лучше бы ты писал похапе
>> No.22743 Reply
>> No.22744 Reply
>>22743
Так, я что-то начал понимать, но понимаю не до конца:
http://ideone.com/x3rYS
>> No.22745 Reply
>>22743
> ЧЯДНТ?
не помнимаешь переведения типов.
http://ideone.com/d2YC3
>> No.22747 Reply
>>22740
Кто вон, ты вон, епт.
int arrayA[2]
int arrayB[2]
int* array[2]={arrayA, arrayB}
То же самое, что и int array[2][2]. Потому что вся эта хуйня с массивами это просто синтаксический сахар, а унутре у них указатели.
>> No.22751 Reply
>>22747
нет.
в массивах никаких указателей нет.
>> No.22754 Reply
>>22745
Я всё понял! int [2] - это именно int [2], а не int *.
>>22747
Наверни сахарца:
http://ideone.com/1QdBS
>> No.22762 Reply
>>22754
> Наверни сахарца:
> > When the sizeof operator is applied to an array, it yields the total number of bytes in that array, not the size of the pointer represented by the array identifier. To obtain the size of the pointer represented by the array identifier, pass it as a parameter to a function that uses sizeof.
>> No.22766 Reply
>>22751
> в массивах никаких указателей нет.
Чому тогда работает вот такой код:
int a[2];
int b;
a[1] = 56;
b = *(a + 1);
std::cout<<b; // Выведет 56
, если указателей нет?
>> No.22769 Reply
>>22762
Тогда сделаем через жопу без sizeof.
http://ideone.com/7132M
>> No.22770 Reply
>>22769
Все там правильно. Потому что ты перемахнул через элемент массива зачем-то.
http://ideone.com/tM2Rk
>> No.22771 Reply
>>22770
Энджой ёр сегфолт после приведения int a[2][2] к двойному указателю: http://ideone.com/voIRG.
>> No.22772 Reply
>>22766
чому тогда не работает этот код:

int arr1[10];
int arr2[10];
arr2 = arr1; // HUI

, если указатели есть?
>> No.22773 Reply
>>22772
Потому что переназначать адрес массива нельзя, лолка.
>> No.22775 Reply
>>22773
Но, по крайней мере, идентификатор двумерного массива - не двойной указатель.
>> No.22777 Reply
>>22775
Ну хуй знает.
Выглядит он как утка, крякает как утка, так что я предпочитаю считать его уткой, евпочя. Я только не помню, в няшной сишке есть const?
>> No.22779 Reply
>>22766
потому что массив неявно кастуется к указателю, причем
int[2] → int*
int[2][2] → int(*)[2]
int[2][2][2] → int(*)[2][2]
и т.д.

алсо a == &(a[0][0][0][0][0]…)
>> No.22784 Reply
Я все таки немного не понял.

У нас есть массив A[2][2]

В реале A - это ссылка с с одним адресом, на который она же и ссылается. Однако при двойном разворачивании сслыки у нас получается первый элемент массива.

Пруф - http://ideone.com/t8pVJ

мимонуб
>> No.22785 Reply
Не по теме, но всё же что делаю эти люди?
(YouTube: Erlang: The Movie)
Зачем звонить друг другу по телевону и смотреть на код на экране пк?
>> No.22786 Reply
>>22785
Как я понял там чуваки чинят багу на живом серваке телефонии.
>> No.22790 Reply
>>22785
Эти люди демонстрируют, что их система телефонии работает, может в мьютексы и в семафоры, может в живую отладку и все такое. И еще эти люди демонстрируют, что не всем людям стоит снимать кино.
>>22786
Там нет бага, там просто показана возможность изучать и менять внутренности работающей системы.
>> No.22795 Reply
File: гинрусская.jpg
Jpg, 562.75 KB, 800×1221 - Click the image to expand
edit Find source with google Find source with iqdb
гинрусская.jpg
>> No.22796 Reply
>>22784
Ответьте мне на мой ответ.
>> No.22808 Reply
>>22796
Тебе уже сказали, что многомерные массивы это массивы указателей на указатели на указатели ...
Поэтому в твоем случае при первом разыменовывании указателя А ты получаешь указатель. При двойном разыменовывании получаешь значение по указателю, который получил разыменовав первый.
int* -> int* -> 10
     1       2
>> No.22814 Reply
>>22796
Не слушай этого >>22808, многомерные массивы не содержат никаких массивов указателей, если ты явно не захочешь сделать многомерный массив указателей на что-то. Вот так в памяти будет выглядеть int A[2][2]:
0         4         8         12        16
| A[0][0] | A[0][1] | A[1][0] | A[1][1] |
^A[0]               ^A[1]
^A
A имеет тип int (*)[2], то есть приводится к указателю на массивы. A[0] приводится к int *. На схеме видно, куда они будут указывать, и это один и тот же адрес, как ты уже заметил. A[1] эквивалентно записи *(A + 1), где мы берём следующий за тем, на который указывает A, элемент массива, кто бы мог подумать, массивов. Изменение адреса равно 8, что даёт нам размер объекта, на который указывает A. Если бы там был указатель, то адрес изменился бы всего лишь на 4. А 8 - очевидный размер массива из двух интов.

В качестве пруфа код, где A приводится к обычному одномерному массиву: http://ideone.com/orTi9
Видно, что элементы в памяти расположены друг за другом последовательно, и указателей среди них нет.
>> No.22815 Reply
>>22814
Ещё немного упоротого кода: http://ideone.com/SNl2p
>> No.22827 Reply
Байтоебы не могут разобраться в собственном говне.
>> No.22831 Reply
>>22827
ты хаскелебыдло, а мудератор - пидараз
>> No.22833 Reply
>>22808
> При двойном разыменовывании получаешь значение по указателю, который получил разыменовав первый.
Няша, ты видимо невнимательно читал. Перечитай что я написал еще раз или читай ниже.
>>22814
Спасибо большое, но это как-то вскользь отвечает на мой вопрос. Наглядный пример вопроса http://ideone.com/JbKyA .
Другими словами почему А ведет себя как двойной указатель, однако как одинарный указатель он ссылается на самого себя. Теоретически же при двойном разыменовывании он должен выдать опять собственный адрес, или нет? Либо..
>> No.22834 Reply
>>22833
Может быть я плохо объяснил, но там написано же, что к какому типу приводится. A - не указатель, а именно что сколько-то интов подряд, или сколько-то групп по сколько-то интов подряд, но в качестве сахарца оно приводится к указателю ну а что, непрерывная область в памяти есть, и на неё можно ссылаться, и по смещениям получать другие значения, и исходя из размещения всего этого в памяти получаются именно такие адреса. Такой "указатель" отличается от настоящих указателей в плане внутренней реализации, но ведёт себя почти так же.
>> No.22835 Reply
File: я всё понял.jpg
Jpg, 67.28 KB, 392×600 - Click the image to expand
edit Find source with google Find source with iqdb
я всё понял.jpg
>>22834
Спасибо. Теперь понятно.
>> No.22877 Reply
File: 261556.jpg
Jpg, 64.27 KB, 450×281 - Click the image to expand
edit Find source with google Find source with iqdb
261556.jpg
Я тут задумал реализовать контейнеров пачку в духе C++11.
Встрял на простом списке элементов одинакового типа.

Сопсна код http://pastebin.com/JG0nfdF4

Гцц мне пишет:
% g++ -std=c++11 src/core_types/list.cc -o build/list
src/core_types/list.cc:100:61: error: expansion pattern 'const T&' contains no argument packs
src/core_types/list.cc:100:8: error: redefinition of 'void ss::List<T>::push_back(const T&)'
src/core_types/list.cc:83:8: error: 'void ss::List<T>::push_back(const T&)' previously declared here
make: *** [list] Error 1
Цланг:
% clang++ -std=c++11 src/core_types/list.cc -o build/list
src/core_types/list.cc:100:57: error: type 'const T &' of function parameter pack does not contain any unexpanded parameter packs
  void List<T>::push_back(const T & x, const /*Ts*/ T & ... args) {
                                       ~~~~~~~~~~~~~~~~~^~~~~~~~
src/core_types/list.cc:100:17: error: out-of-line definition of 'push_back' does not match any declaration in 'List<T>'
  void List<T>::push_back(const T & x, const /*Ts*/ T & ... args) {
                ^~~~~~~~~
src/core_types/list.cc:30:43: note: member declaration nearly matches
    /*template < typename ... Ts >*/ void push_back(const T &, const /*Ts*/ T & ...);
                                          ^
src/core_types/list.cc:102:19: error: pack expansion does not contain any unexpanded parameter packs
    pusk_back(args...);
              ~~~~^
3 errors generated.
make: *** [list] Error 1
C шаблонами Ts тоже не работает, но там ошибка другая:
% g++ -std=c++11 src/core_types/list.cc -o build/list
src/core_types/list.cc:100:65: error: invalid use of incomplete type 'class ss::List<T>'
src/core_types/list.cc:15:9: error: declaration of 'class ss::List<T>'
make: *** [list] Error 1
Помогите побороть, плиз.

не-ОП-кун
>> No.22893 Reply
>>22877
Это пиздец какой-то, все гугели облазил. Нашел работающее решение только через initializer_list, но это как-то не так.
>> No.22913 Reply
>>22893
Посоны, вот есть например контейнер с методом at или оператором[] (допустим это vector), и мы значит пытаемся получить доступ до недоступного элемента (типа index >= size).
Что в этом случае принято делать: никуя не делать и получать сегфолт, кидать эксепшон, возвращать некий синглтон пустого элемента?
>> No.22916 Reply
File: Gnombies.jpg
Jpg, 108.55 KB, 720×540 - Click the image to expand
edit Find source with google Find source with iqdb
Gnombies.jpg
>>22913
Ох, программирование на этом ЯП меня ввергает в пикрилейтед состояние.
>> No.22919 Reply
>>22913
Исключение кидай. Сигналы о сегфолтах - это слишком по-сишному. А возвращение фиктивного элемента приведёт к не очень очевидному поведению. С одной стороны ты получаешь значение, которое говорит, что по индексу ничего нет, с другой стороны ты получаешь значение, неважно какое, которого на самом деле нет. Такую ситуацию можно пропустить, и программа будет работать дальше с неправильными данными, а вот непойманное исключение сразу прервёт выполнение, что может иметь меньшие последствия.
>> No.22920 Reply
Бедняши. Как же вам тяжело.

Мимо-няшно-сишник
>> No.22921 Reply
>>22920
длиннющие_названия_функций_вместо_неймспейсов_методов_объектов_или_классов_и_перегрузок_операторов((void*)это_так_удобно_и_просто);
>> No.22922 Reply
>>22921
В крестах тоже есть приведение типов, няша, покомпилируй в gcc с флагами -Wall -Wextra -Werror, он не даст ни одного неявного сделать. И в крестах тоже можно давать функциям ебанутые имена огромной длины. Всё зависит от программиста.
>> No.22927 Reply
>>22922
> В крестах тоже есть приведение типов
> в крестах тоже можно давать функциям ебанутые имена огромной длины
няша из >>22921 говорил о другом: в сях придется использовать ебанутые имена и приведение к воиду из-за отсутствия классов-неймспейсов (ебанутые имена) и наследования (касты к воиду повсюду)


не >>22921-кун
>> No.22928 Reply
>>22913
> Что в этом случае принято делать: никуя не делать и получать сегфолт, кидать эксепшон, возвращать некий синглтон пустого элемента?
зависит от семантики. некоторые оптимизируют и ловят сегфолты, другие кидают экспешоны, третьи расширяют контейнер


PS в случае с std::vector - at кидает экспешон, operator[] творит сегфолт
>> No.22956 Reply
>>22927
> в сях придется использовать ебанутые имена
Окау.
> наследования (касты к воиду повсюду)
Как это связано?
>> No.22977 Reply
>>22956
> Как это связано?
Я тут так мимо проходил, но думаю он имеет в виду абстрактный класс, от него наследники, и он такой на белом коне указателем на воид как указателем на абстрактный класс ебашит. Но он какой-то непонятный, если собирается писать ооп на чистом си.

Но вообще да, void* например в GTK+ в коллбеках есть, а оно сишное. И я помню эту байтосодомию, чтобы сделать void**, запихнуть туда информацию, а потом поприводить всё к типам на другой стороне, и так, чтоб это не закрашилось.
>> No.22982 Reply
>>22977
А мне кажется, что эти господа перепутали наследование с полиморфизмом. В крестах одно связано с другим, но какое может быть наследование в сишке?
Навскидку назову три случая, где сталкиваешься с указателями на воид - всякие memcpy, различные alloc и free, и параметры коллбеков. Везде надо просто знать адрес, иногда размер области, а какого типа данные там записаны, или будут записаны, не должно нас заботить в данный момент, с этим разбираются другие части программы.
>> No.22997 Reply
>>22982
> наследование в сишке?
ООП в сишке вообще

yoba_class: http://dbus.freedesktop.org/doc/api/html/group__DBusMessage.html например
> полиморфизмом
yoba_vtbl: drivers/usb/storage/usb.c например
static struct usb_driver usb_storage_driver = {
    .name =         "usb-storage",
    .probe =        storage_probe,
    .disconnect =   usb_stor_disconnect,
    .suspend =      usb_stor_suspend,
    .resume =       usb_stor_resume,
    .reset_resume = usb_stor_reset_resume,
    .pre_reset =    usb_stor_pre_reset,
    .post_reset =   usb_stor_post_reset,
    .id_table =     usb_storage_usb_ids,
    .supports_autosuspend = 1,
    .soft_unbind =  1,
    .no_dynamic_id = 1,
};
> Навскидку назову три случая, где сталкиваешься с указателями на воид
http://developer.gnome.org/glib/2.30/glib-Doubly-Linked-Lists.html - увидь там gpointer
>> No.25652 Reply
>>21917
Бамп годному треду. Впредь не буду на него забивать.
>> No.25654 Reply
В чем принципиальная разница между классом и структурой. Ведь можно же устроить и на С ООП цирк.
>> No.25657 Reply
>>25654
Подписываюсь над вопросом.
>> No.25664 Reply
>>25654
Читать "ООП" Б. Мейера до посинения, идиоты. Обоим. И вообще всем ITT. Класс — это абстрактный тип данных с его реализацией. Абстрактный тип данных — это множество объектов, заданных набором методов, применимых к этим объектам. А уж как там эти объекты реализованы — через структуры, через void* или еще как — никого не волнует. Это могут быть структуры нулевого размера, примитивные значения (int, bool, float) или вообще какие-нибудь атсральные сущности — не имеет значения, в ООП главное, что к ним применимы определенные методы.
>> No.25666 Reply
>>25664
Два чаю этому господину. Если реализовывать ООП цирк на С, то получится именно цирк. И ещё много байтосодомии.
>> No.25722 Reply
>>22920
У нас хотя бы есть возможность вернуть из функции массив
>> No.25747 Reply
>>25722
У сишников тоже.
>> No.25748 Reply
>>25747
>>25722
Зато у вас нет паттернматчинга и манад.
>> No.25751 Reply
>>25748
Что такое первое и второе? Про гугл знаю, но мне больше интересно твое изложение.
>> No.25752 Reply
>>25751
это когда, например, в SomeMonad<T> SomeMonadOperation<T>(T obj) на вход дают объект типа MyT : T, то на выходе получается SomeMonad<MyT>, а не просто SomeMonad<T>.
>> No.25762 Reply
>>25752
Понятно.
>> No.25774 Reply
>>25747
Нету.
Правда в крестах нет человеческих туплов, и как только нужно вернуть пару значений, начинаются пляски с передачей ссылок в функцию, но и тут хотя бы маллочить не нужно.
>> No.25776 Reply
>>25774
C++11 tuple не человеческая тупля чтоли?
>> No.25777 Reply
>>25776
Нет, запаковка и распаковка данных занимает столько строк, что проще или сделать ad hoc структурку, или по сишному пути через вхолные параметры.
Можешь еще почитать http://duriansoftware.com/joe/
>> No.25778 Reply
[`tju:p(ə)l]
>> No.25780 Reply
>>25778
[`poxuj]
>> No.25870 Reply
File: Снимок-экрана-от-2012-10-11-18:43:22.png
Png, 93.33 KB, 1440×900 - Click the image to expand
edit Find source with google Find source with iqdb
Снимок-экрана-от-2012-10-11-18:43:22.png
>>21917
Пожалуйста ответьте на вопрос, я пытаюсь подсчитать количество символов в gcc, для этого в конце потока надо указать метку EOF(ctrl+d), но она работает странно, только после того как поток уже введен. Из-за этого счетчик накручивает 1 за счет того, что натыкается на лишний \n. А с русскими буквами вообще беда, я вообще не понимаю откуда может взяться такая цифра. В чем беда? Сразу после текста нарисовать маркер EOF как в Виндоус он не хочет.

#include <stdio.h>

main(){
long nc;
for(nc=0; getchar() !=EOF; ++nc)
;
printf("%ld\n", nc);
}
P.S Простите за разметку, я не знаю как ее принято у вас ставить.
>> No.25874 Reply
>>25870
>>25870
С разметкой я разобрался как ее правильно делать, чтобы английские символы подчитывались правильно, но русских символов в gcc все равно в два раза больше! Это прямо какой-то полтергейст.
>> No.25878 Reply
>>25874
Я плавно подошел к проблеме необходимости двойного ctrl +d. Отсюда и происходит то, что он иногда читает входной поток по два раза..
>> No.25880 Reply
>>25878
Причем аналогичная вещь с Windows и его EOF ctrl +z проходит без заморочек и с первой попытки.
>> No.25890 Reply
>> No.25908 Reply
>>25890
Я не понимаю, уже просто плачу, ну почему ему нужно по два ctrl+d и он выдает какую-то хуйню, всякий раз по-разному. Я уже перепробовал все.
>> No.25910 Reply
>>25908
Если поставить маркер EOF после потока, то он срабатывает на второй раз и выдает хуйню, если поставить после того как ты ввел поток, то срабатывает с первого раза, но выводит хуйню.
>> No.25911 Reply
File: Wallpaper2.jpg
Jpg, 532.85 KB, 1920×1200 - Click the image to expand
edit Find source with google Find source with iqdb
Wallpaper2.jpg
>>25908
Ya otklichil raskladky Ru i vse zarabotalo. I vse taki Bash nenavidi Russkiy yazuk. Ostalas problema chto delat s russkimi simvolami.
>> No.25913 Reply
>>25911
Ты не раскладку отключил, а локаль системную поменял.
>> No.25926 Reply
File: 09229ca3996564d93f59f3bf98310a6f.jpg
Jpg, 41.69 KB, 600×729 - Click the image to expand
edit Find source with google Find source with iqdb
09229ca3996564d93f59f3bf98310a6f.jpg
>>25913
Итак, в Ut8 русские буквы кодируются двумя байтами, а getchar() читают по одному байту. Об этом дополнении надо было упоминуть в книге, чтобы те, кто хотят вклинятся в замечательный мир программирования не страдали от баттхерта.
Кстати, куну
>>25890 спасибо, но это подсказка для тех, кто в теме, я сразу об этом и не понял.
В перспективе разработаю свой текстовый редактор.
>> No.25930 Reply
>>25926
И еще пару слов никто не рекомендует использовать getchar в своих программах из-за того, что нужно понимать какой объем данных необходимо использовать. А значит уязвимое место. Это переполнение имеющегося буфера.
>> No.25932 Reply
>>25930
Добавлю вот еще что
> > циклы for и while делают проверку в начале цикла перед входом в его тело. Если делать в цикле нечего, то ничего и не делается, поскольку до операторов тела управление так не доходит. Программы должны действовать корректно, встретив поток ввода нулевой длины. Операторы while и end помогают безоошибочно обрабатывать разные предельные случаи.
>> No.26014 Reply
>>21917
#include <stdio.h>

int main()
{
int c;
int nspace = 0;

while ((c = getchar()) != EOF) {

if(c == ' ')
++nspace;

if(nspace > 1){
putchar('\b');
--nspace;
}

if(c != ' ')
nspace = 0;
putchar(c);
}
}
Задача о замене двух пробелов одним из которой вытекает, что можно заменить любой символ во входящем потоке с помощью putchar, которая выводит один символ при вызове. Также стоит заметить, что условия if некоторых из них необходимо выделять фигурными скобочками, чтобы компилятор не ебнулся и осознал, что перечисленные операторы находятся в юрисдикции именно этого условия. И на заметку: необходимо рассмотреть саму систему компиляции в GCC, но одно скажу система отладки в обычных IDE гораздо проще в том плане, что можно пошагово определять, что содержится в той или иной переменной.
>> No.26085 Reply
File: Arisato.Minato.full.307609.jpg
Jpg, 487.16 KB, 2480×3508 - Click the image to expand
edit Find source with google Find source with iqdb
Arisato.Minato.full.307609.jpg
>>21917
Итак, меня наверно все закрыли уже. Скажите как грамотно оформлять код на Доброчане. В справке был, но там об этом не написано.
Сегодня речь пойдет о программе, которая подсчитывает слова.
Мы должны действовать подобно автомату, который имеет два состояния(stete IN и state OUT). Вне слова и внутри соотвественно, которые обозначены символичными константами. Зачем? Писать символичные константы "#define" правило хорошего тона в коде, ибо они говорят много тем, кто код читает.
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c, n1,nw,nc,state;

state=OUT;
n1=nw=nc=state=0;
while ((c=getchar()) !=EOF){
++nc;
if (c == '\n')
   ++n1;
if (c == ' ' || c == '\n' || c == '\t')
   state=OUT;
else if (state == OUT){
   state=IN;
   ++nw;
}
   }
printf("%d %d %d\n", n1,nw,nc);
}
То есть если getchar() находит символ один из трех: табуляция, пробел или знак переноса, то он переходит в состояние вне слова.
Конструкция else if говорит нам, что когда заканчивается очередная последовательность разделителей. Мы не разделяем первый разделитель от остальных. В последовательности каждый раз для разделителя устанавливается состояние OUT.
К вопросу о том, что имел в виду Керниган, когда говорил, что за поток найдет в коде ошибки. Речь шла разумеется о цифрах. Он будет считать их за слова, что будет неправдой.
>> No.26092 Reply
File: 98ca394de7820b0374f294664736d3a3.jpeg
Jpeg, 1480.55 KB, 2369×2128 - Click the image to expand
edit Find source with google Find source with iqdb
98ca394de7820b0374f294664736d3a3.jpeg
>>26085
Итак, следующей задачей нужно скопировать слова и вывести их по одному в одной строчке.
Сделать это очень просто
#include <stdio.h>
#define OUT 0
#define IN 1
main()
{
int c,state;
while((c=getchar()) !=EOF){
if (с==' ' || с=='\n' || c== '\t')
state=OUT;
else if(state=OUT){
putchar('\n');
state=IN
}
putchar(с);
}
}
Тут все просто, когда мы оказываемся в нее слова, то puchar лепит знак перехода на новую строку. Тут важно другое. Понимать конструкцию условного оператора if. Он читает всю эту ветку сверху вниз.
Между первым if и последним else может быть бесконечное количество else if. И так же стоит понимать что операторы читаются тоже сверху вниз. То есть если state=in поменять местами с putchar('\n') то результат поменяется. И важно, что если в if два оператора, то лучше вкладывать их в фигруные скобки, дабы он не сбредил.
>> No.26095 Reply
>>26092
Тема как оформлять код на бордах до сих пор не раскрыта.
>> No.26108 Reply
>>26095
Завтра возьмемся за массивы и гистограмму. Хотя не представляю как ее можно реализовать. Хм.
>> No.26109 Reply
>>26108
Суть в том, что сделать дедовским способом горизонтальные столбцы пару пустяков, но как сделать вертикальные?
>> No.26112 Reply
>>26095
http://dobrochan.ru/help/wakabamark

Мультистрочный код
``
Строка 1
Строка 2
``

рядом с тильдой
>> No.26135 Reply
File: 0_1cd21_583a8f7e_XL.jpg
Jpg, 122.02 KB, 800×690 - Click the image to expand
edit Find source with google Find source with iqdb
0_1cd21_583a8f7e_XL.jpg
Приветствую всех, господа.
Прочитал весь-весь-весь тред, упуская подробности связанные с кодом, ибо в нём я не светоч. Лично для себя сделал кое-какие выводы, за что вам всем большое спасибо.

Я не программист, а потому меня интересует следующее. Няши, объясните мне пожалуйста кое-чего… Тут был как-то разговор про библиотеки. Что они из себя представляют я приблизительно знаю. Но почему тут возникли из – за них некоторые «конфликты»? Что плохого в том, что у некоторых сред разработки библиотек маловато? Сложно найти необходимые коды через тот же гугол? Или проблема совсем в чём-то другом? Предполагаю, что суть спора заключается в лени, о которой даже пишут во многих учебниках по программированию, когда рассказывают о том, что почему принято делать «именно так, а не иначе, ибо бла-бла-бла лень, и так проще».

>>21917
> Тут будет мой дневник изучения этого чудесного языка.
OP, как твои успехи? 4,5 месяца как-никак прошло, больше трети года.


>>22564
>>22626
У меня дежа вю, прямо как и у >>22627 .
>> No.26147 Reply
>>26135
Ты идиот. Или у тебя зашоренный взгляд.

Давным-давно, когда не было компьютеров, писали так: «Возьмите ананас, возьмите кусок говядины, обжаренный так, как написано в книге "Мужчина на кухне" за авторством ле Дювуа, в разделе "Как жарить мясо". Очистите ананас, порежьте его на дольки...» Сам рецепт в данном случае — это программа, а книга «Мужчина на кухне» — это программная библиотека. А ее упоминание вместе с упоминанием конкретного раздела в этом рецепте — это, по сути, вызов конкретной функции из этой программной библиотеки.

Потом появились компьютеры. Программы стали писаться не только для людей («возьмите ананас, возьмите кусок говядины...»), но и для компьютеров («3E FF 01 6A 9A ...»). И программные библиотеки тоже («3E FF CALL FUNKCYA FROM MY_BIBLIOTEKA 9A 6A ...»).

Естесственно, как программы, так и библиотеки оформляются в удобоваримом для исполнителя виде: если это сборник рецептов, то пишется он на английском/национальном языке и снабжается оглавлением; если это сборник арифметических функций, то он компилируется в машинные коды и (чаще всего) оформляется в виде DLL/SO (тоже своего рода книга с оглавлением, в котором названия разделов — это названия функций). Иногда они оформляются в виде исходных кодов для компилятора или скриптов для интерпретатора. Керниган и Ричи придумали еще один формат: объектные файлы, получаемые на промежуточном этапе компиляции кода на C, и заголовочники к ним. Для виртуальных машин библиотеки оформляются в виде маш. кодов для этих машин, например в виде class-файлов для Java или сборок для .NET.

Некоторые фирмы, делающие IDE (например, Embarcadero) вместе со своим флагманским продуктом поставляют еще и набор своих библиотек. Но обычно они низкого качества, устаревшие, сильно заточены под основную IDE и вообще хуета подколодная, пиздец, как такую хуйню Земля носит. Поэтому стараются использовать библиотеки от производителей, специализирующихся на написании библиотек(и).

Ясно тебе?
>> No.26148 Reply
>>26147

Вот это доброразъяснение.

неон
>> No.26157 Reply
File: perfect_dark_wallpaper2.jpg
Jpg, 248.12 KB, 1024×768 - Click the image to expand
edit Find source with google Find source with iqdb
perfect_dark_wallpaper2.jpg
>>26135
Хреново пока идут дела, но я не унываю.
>> No.26172 Reply
File: 253358_samyij.jpg
Jpg, 60.16 KB, 717×828 - Click the image to expand
edit Find source with google Find source with iqdb
253358_samyij.jpg
>>26157
Сколько часов в день/неделю уделяешь своему "продвижению" и набору знаний?
Как лень? Существует? Или таковой не имеется?
Брат жив?
Как ты можешь не унывать, если дела идут хреново? Либо ты чего-то недоговариваешь, либо ты ненормальный. Я хочу взять тебя и... понять
>> No.26175 Reply
>>26172
В последние время все больше времени. Какая может быть лень, если жрать в последние время хочется постоянно, а денег почти нет? Сытое брюхо к учебе глухо(ц) Предлагаешь писат тут, что все хуево и все проебанно, посоны. Тогда меня просто 90 процентов посетителей скроют, если уже не скрыли.
От себя хочу еще порекомендовать вот этот ресурс http://hashcode.ru/ Для новичков, которые испытывают трудности шанс спросить и найти ответ 95 процентов, но ресурс подпортился из-за долбаебов, которые просили решить задачки за просто так.
>> No.26177 Reply
>>26172
Надежда на светлое будущее.
>> No.26210 Reply
>>26175
Чем http://hashcode.ru/ лучше stackoverflow? Русские только и могут, что пиздить идеи.
>> No.26211 Reply
>>26210
Тем, что не надо держать технический словарь под рукой, чтобы понять что тебе пишут. Я английский идеально не знаю, чтобы написать текст, чтобы меня идеально поняли. Хэшкод хорош тем, что там сидит очень много добрых людей, которые очень быстро помогают с вопросами, даже на экзотику отвечают. А на любом форуме или проигнорируют или разговор уйдет в сторону на тему какой язык пизже и другой меркой джагонов друг друга.
>> No.26219 Reply
File: FF8LDI7Xcmg.jpg
Jpg, 9.86 KB, 230×219 - Click the image to expand
edit Find source with google Find source with iqdb
FF8LDI7Xcmg.jpg
Там нет граммар-наци, это тебе не сраная рашка. Мой английский отнюдь не нативен, но мне этого не заметили ни разу.
Не бойся, лучше прокачай скилл английского, пригодится ведь еще.
>> No.26220 Reply
>>26210
> лучше
Не стоит применять теорему Цермело (как и многое другое; не всё, но многое) к реальной жизни.
>> No.26230 Reply
File: 0_1350723982.png
Png, 35.66 KB, 498×416 - Click the image to expand
edit Find source with google Find source with iqdb
0_1350723982.png
> Опубликованы работы, победившие на 21 чемпионате по написанию запутанного кода на языке Си
Дисскач.
>> No.26231 Reply
>>26230
> Опубликованы работы, победившие на 21 чемпионате по написанию запутанного кода на языке Си
А что, на C бывают НЕзапутанные программы?
>> No.26232 Reply
>>26231
> победившие на 21 чемпионате
>> No.26235 Reply
>>21917
Покажите плиз как объявлять массив символов, в котором бы хранился латинский алфавит и как его грамотно выводить. Интернет облазил, но там больше про С++.
>> No.26237 Reply
>>26235
Сначала объявляешь массив из 26 символов, затем заполняешь его вот так:
for(i=0;i<26;i++)
alphabet[i]='A'+i;

Работает это потому что символ 'A' - это на самом деле какое-то число, которое интерпретируется буквой. А числа идут последовательно, поэтому 'A'+1='B' и так далее.
>> No.26238 Reply
>>26237
K&R-style:
for(i=0;i<26;alphabet[i]='A'+i++;);
>> No.26239 Reply
>>26238
Уел, признаю. Симпатичней получилось.
А почему "K&R"?
>> No.26240 Reply
>>26237
Огромное спасибо, но можно еще спросить, а "а"+i это типа проверка буква это или нет?
>> No.26242 Reply
>>26239
Потому что у Кернигана и Ритчи из таких вот идиом вся книга состоит. В этом-то её ценность, она не учит словам языка, она учит фразам на языке.
>> No.26243 Reply
>>26240
Не понял вопроса. Можешь переформулировать?
Смотри, в C все символы - это тоже числа. Поэтому их можно складывать и вычитать. Проведи эксперимент: print((int)'A')
(int)'A' - это "явное приведение к типу". То есть символ превращается в число. Точно так же можно написать print((char)8) - вместо цифры восемь будет выведен символ, который соответствует числу 8. Можешь попробовать и поварьировать примеры. Например, (float)1.
>> No.26244 Reply
>>26243
А все понял, огромное спасибо, доброанон.
Меня просто смутило выражение "A" +i
>> No.26245 Reply
>>26242
Понятно. Си изучал только на первом-втором курсах универа. Понял, что кодить на нём - сил моих нет, но за подобные финты ушами этот язык всё же полюбил. Хотя в других языках тоже есть различные хитрости, которых нет в C.
>>26244
Привыкай, друг мой, привыкай. Из вот таких штук и состоит программирование (а в Си их больше, чем где бы то ни было). ИМХО.
>> No.26246 Reply
>>26244
Там одинарные кавычки, анон! 'A' — это единичное значение (число или символ), "A" - это строка (массив). 'A' + 1 — норм, число плюс число; "A" + 1 — ошибка, массив плюс число.

Избаловали вас, понимаешь, всякими пифсонами да рубями...
>> No.26247 Reply
>>26244
Символы пишутся в одинарных кавычках, строки в двойных. Выражение "A"+i не скомпилируется.
>> No.26248 Reply
>>26247
>>26246
Прошу прощения. Да, ошибку понял.
>> No.26249 Reply
>>26246
>>26247
А вы скомпилируйте. Это не ошибка, и даже не предупреждение. Самая обычная операция - прибавление к указателю инта.
>> No.26334 Reply
File: uylwJx0bplM.jpg
Jpg, 363.95 KB, 1445×2037 - Click the image to expand
edit Find source with google Find source with iqdb
uylwJx0bplM.jpg
>>21917
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c, nw, state;

state=OUT;
nw=state=0;
while ((c=getchar()) !=EOF){
if (c == ' ' || c == '\n' || c == '\t')
   state=OUT;
if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' )
   printf("*");
else if (state == OUT){
   putchar('\n');
   state=IN; 
   ++nw;      
} 
           
}
}
Бетка моей гистограммы. Считает заебись, факт того, что char это тоже число и что каждой букве соответствует соответствующее число из таблицы Ansi очень важен. А значит с символами можно действовать, как и с обычными числами.
Я пока не могу придумать две вещи:
а.)Как сделать таблицу вертикальной.
б.)Каким перед столбцом, который символизирует длину слова поставить само слово, чтобы было сразу понятно, что это длина именно этого слова.
>> No.26335 Reply
>>26334
> > Каким образом перед столбцом
фикс.
>> No.26340 Reply
File: Borderlands-2-Mechromancer-Character-Introduction.jpg
Jpg, 85.74 KB, 600×350 - Click the image to expand
edit Find source with google Find source with iqdb
Borderlands-2-Mechromancer-Character-Introduction.jpg
>>26334
#include <stdio.h>

#define IN 1
#define OUT 0
main()
{
int c, state;

state=OUT;
state=0;
while ((c=getchar()) !=EOF){
if (c == ' ' || c == '\n' || c == '\t' || c == ',')
   state=OUT;
if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' )
   putchar('*');

else if (state == OUT){
   putchar('\n');
   state=IN;
}
}
}
Так я и не смог придумать, что можно сделать со словом, чтобы оно выводилось перед столбиком, чтобы понять, что этот столбик принадлежит именно этому слову. Время дорого, мне необходимо переходить к следующему заданию.
>> No.26386 Reply
File: Arisato.Minato.full.307609.jpg
Jpg, 487.16 KB, 2480×3508 - Click the image to expand
edit Find source with google Find source with iqdb
Arisato.Minato.full.307609.jpg
>>26340
#include <stdio.h>

main()
{
int c, j, i;
int characters[5];

for (i = 0; i < 5; ++i)
characters[i] = 0;
while ((c = getchar()) != EOF) {
if (c == '}')
++characters[0];
if (c == '=')
++characters[1];
if (c == '[')
++characters[2];
if (c == '+')
++characters[3];
if (c == ';')
++characters[4];
}


/Если кто-нибудь обьяснит, что этот демон тут намутил, то я буду дико рад и спою в честь вас оду, но реально какой-то кошмар, не могу разобраться в том, что тут происходит. Что происходило до этого, то выеденного яйца не стоит. Объявка массива и подсчет символов в индексах массива, но тут сколько не ломал голову над этим маневром как сделать гистограмму вертикальной. Так у меня ничего и не получилось. Помогите плиз. А я пока перейду на Кочана, там разжеванно все, но обязательно вернусь к этой задаче /
printf("}\t=\t[\t+\t;\t\n");
for (i = 0; i < 30; ++i)
for (j = 0; j < 5; ++j) {
if (i < characters[j])
printf("*\t");
else printf(" \t");
if (j == 4)
printf("\n");
}
}
>> No.26388 Reply
Сравните эти две идентичные программы и поясните мне - почему одна работает, а другая нет?
http://ideone.com/evnFcM
http://ideone.com/80p8NP
Это решение задачи https://projecteuler.net/problem=85
inb4 я знаю, что такое std::vector и тем более знаю, как объявлять многомерные векторы, заполненные нулями - но это пиздец как неприятно и нечитаемо.
>> No.26390 Reply
>>26388
Ну кто делает такие огромные массивы? Из кучи столько памяти тянуть надо. http://ideone.com/0RLTYV
Инб4: а вдруг NULL? Работает и похуй.
>> No.26393 Reply
>>26386
#include <stdio.h>

 main()
 {
 int c, j, i;
 int characters[5]; 

 for (i = 0; i < 5; ++i)
 characters[i] = 0;
 while ((c = getchar()) != EOF) {
 if (c == '}')
 ++characters[0];
 if (c == '=')
 ++characters[1];
 if (c == '[')
 ++characters[2];
 if (c == '+')
 ++characters[3];
 if (c == ';')
 ++characters[4];
 }
>> No.26397 Reply
>>26393
Ну с этим-то проблем никаких. Мы объявляем массив на пять индексов, хотя у нам нужно четыре, потому как в массивах нужно отдавать одну ячейку под индекс нуля, а значит индекса пять не существует. Дальше мы читаем по одному символу входящий поток с помощью getchar() и инкрементируем подходящий индекс, но вывод мне непонятен.
..

printf("}\t=\t[\t+\t;\t\n");
for (i = 0; i < 30; ++i)
for (j = 0; j < 5; ++j) {
if (i < characters[j])
printf("*\t");
else printf(" \t");
if (j == 4)
printf("\n");
}
}
..
Как такой маневр Ракосовского удался?. Ну если с принт все понятно, то как связаны между собой два цикла for и все остальное понять не могу. И то еще самый простой вариант постройки вертикальной гистограммы. В сети встречаются еще сложней.
>> No.26398 Reply
>>26393
П.С: если ты про мультистрочный код, то я вставляю код между .. и .., но ничего не происходит.
>> No.26406 Reply
>>26397
Ну если тебе не понятен этот код, то тебе надо поднапрячься или бросить эти занятия хелловорденьем , так как ничего сложного он не представляет. Цикл j вложен в цикл i. Предполагается, что каждого символа не больше 30. i инкриминируется и пока колличество каждого конкретного characters[j] больше i выводится *, когда же i становится больше, заменяется на пробел.
>>26398
Код надо ставить между двумя символами ` (обратная кавычка, там где тильда и буква "ё").
>> No.26407 Reply
>>26406
Аригато, поднапрягусь.
>> No.26408 Reply
>>26397
Что это вообще за кусок говна? Зачем там i<characters[j]? Что в этом массиве, как он задается и нафиг он вообще нужен?
>> No.26410 Reply
File: Aoi.Shiro.full.1114626.jpg
Jpg, 212.04 KB, 1280×960 - Click the image to expand
edit Find source with google Find source with iqdb
Aoi.Shiro.full.1114626.jpg
>>26408
Это типо хуевая версия гистограммы, быдлокодер edition Бывает лучше, но там как-то совсем круто. Смотри i номер строки, он сравнивает поочередно с тем, что находится в индексах [0],[1],[2],[3],[4], но начинается все с нулевой строки. Поэтому ноль сравнивается, например с [0], если в нем есть хотя бы один символ "}", то ставится зведочка и знаком табуляции мы попадем в другую колонку, где происходит сравнение уже с индексом [2], а потом, когда доходит до индекса{4], то лепит знак перехода на новую строку и игра в морской бой продолжается в том же духе. Как сделать пизже, я пока не знаю.
Массив этот задается в самом начале и служит для того, чтобы хранить символы.
>> No.26413 Reply
File: ЧЯДНТ.jpg
Jpg, 53.60 KB, 607×341 - Click the image to expand
edit Find source with google Find source with iqdb
ЧЯДНТ.jpg
``
		`#include "stdafx.h"`
		`#include <iostream>`
		`using namespace std;`
		`int main()`
		`{float f,a,b,c,xs,xf,dx;`
		`cout<<"Vvedite a,b,c,pervoe x, poslednee x, shag"<<endl;`
		`cin>>a>>b>>c>>xs>>xf>>dx;`
		`cout<<"Polychilos'"<<endl;`
		`cout<<"x | F"<<endl;`
		`for (float x=xs; x<=xf; x+=dx) {`
	`if ((x<1)&&(c!=0)) f=a*x*x+(b/c);`
	`if (x>15&&c==0) f=(x-a)/(x-c)*(x-c);`
	`else f=(x*x)/(c*c);`
   if ((static_cast <int>(a) && static_cast <int>(b))^(static_cast <int>(c))==0) cout<<x<<" | "<<static_cast <int>(f)<<endl;    else cout<<x<<" | "<<f<<endl;}    system("pause");    return(0);}
>> No.26414 Reply
>>26413
Суки, при x<=5 и с=0 она неопределена
>> No.26415 Reply
>>26414
Поломал разметку
От единицы до пяти, да. Мне кажется в месте вот тут я все сломал:
   if ((x<1)&&(c!=0)) f=a*x*x+(b/c);    if (x>15&&c==0) f=(x-a)/(x-c)*(x-c);    else f=(x*x)/(c*c);
>> No.26419 Reply
>>26415
float f = 0; // не определена

if ((x<1)&&(c!=0))
{
  f=a*x*x+(b/c)
} 
else if ((x>15)&&(c==0))
{
  f=(x-a)/(x-c)*(x-c);
} 
else 
{ 
  f=(x*x)/(c*c); 
}
>> No.26422 Reply
Господа, ставьте пробелы вокруг операторов, иначе код читать совсем не удобно.
>> No.26428 Reply
>>26419
Получишь INFINITY при с=0 и x<1.5.
if (c!=0) {
    if (x<1) f=a*x*x+(b/c);
    else f=(x*x)/(c*c); 
}
else if (x>1.5) f=(x-a)/(x-c)*(x-c);
else cout<< "\ndivide by zero\n";
>> No.26429 Reply
>>26428
Стоп!
if (c!=0) {
    if (x<1) f=a*x*x+(b/c);
    else f=(x*x)/(c*c); 
}
else if (x>1.5) f=(x-a)/((x-c)*(x-c));
else cout<< "\ndivide by zero\n";
фикс
>> No.26447 Reply
>>26419
// выше рядом с инклудами
#define bool int
#define false 0
#define true 1

// ниже в майне
bool IsInfinity = false;
float f = 0;

if ((x<1)&&(c!=0))
{
  f=a*x*x+(b/c);
} 
else if ((x>15)&&(c==0))
{
  f=(x-a)/(x-c)*(x-c);
} 
else 
{ 
  if (c!=0) // ???
  {
    f=(x*x)/(c*c); 
  }
  else
  {
    IsInfinity = true;
  }
}
>> No.26448 Reply
File: perfect-dark-zero-profile.jpg
Jpg, 24.92 KB, 300×450 - Click the image to expand
edit Find source with google Find source with iqdb
perfect-dark-zero-profile.jpg
>>21917
#include <stdio.h>

int power(int m, int n);

main()
{
int i;

for(i=0; i<10; ++i)
	printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
int power(int base, int n)
{
int i,p;

p=1;
for(i=1; i<=n; ++i)
	p=p*base;
    return p;
}
Что я не так понимаю в программе возведения числа в степень. Вот взгляните на нее. Алгоритм работает 10 раз и получает значение p в котором содержится вычисления power, которая и должна возводить число в степень. Но в прототипе функции стоит m, а в самой функции уже base, откуда он берет этот base? И в добавок он ограничивает работу алгоритма n, а это n откуда взялась? и p=1. То есть мы должны умножать 1* base,который не знаем откуда взять, чтобы все это было меньше или равно n, который тоже непонятно откуда брать. Подскажи плиз, доброанон.
>> No.26450 Reply
>>26448
> в прототипе функции стоит m, а в самой функции уже base, откуда он берет этот base?
Сигнатуры в плюсах и си берутся без имен аргументов. Т.е. это power(int, int), а какие ты там имена подставил - без разницы.
> И в добавок он ограничивает работу алгоритма n, а это n откуда взялась?
Что значит откуда? При вызове передана была.
power(2,i) - вот здесь base=2, n=i
>> No.26451 Reply
>>26450
Большое спасибо. Извини за мой дебилизм. Прогресс есть и голова начинает потихоньку работать.
>> No.26570 Reply
Анончики, как понимать строку
   a=(double ) malloc (nsizeof(double));
>> No.26571 Reply
>>26570
malloc - это выделение памяти, доставляет указатель на void, который нужно преобразовать к чему хочешь. В твоём случае выделяется память под массив из n double'ов. Дословно - выделить n*размер_типа_double байтов памяти, доставить указатель на первый из них и скастовать его к указателю на double.
По-хорошему надо бы использовать calloc.
>> No.26573 Reply
>>26571
Зачем именно calloc? Затем, что у него понятнее параметры — отдельно размер и отдельно количество? Или затем, что он обнуляет память?
>> No.26575 Reply
>>26573
malloc не гарантирует, что память будет реально выделена.
http://make-linux.blogspot.com/2011/01/overcommit-memory.html
>> No.26576 Reply
>>26575
Но ведь получается, что либо она будет выделена при обращении к ней, либо не будет выделена вовсе. Или тут что-то хитрее?
>> No.26577 Reply
>>26576
В случае с calloc ошибка возникнет прямо при выделении, а в случае malloc - в ходе работы.
>> No.26583 Reply
Анон, поясни ввод данных. Вот нужно мне, например, ввести число. Как проверить, что это число, а не буквы? Считывать по одному знаку?
>> No.26584 Reply
>>26583
Используй scanf, например.
>> No.26586 Reply
>>26584
И как же?
>> No.26587 Reply
>>26586
int i;
scanf("%d", &i);
>> No.26588 Reply
>>26586
scanf возвращает количество правильно считаных переменных. Если это будет ноль — тебе ввели некорректное число.
>> No.26658 Reply
File: HorribleSubs-PSYCHO-PASS-03-720p.mkv_snapshot_04.3.jpg
Jpg, 69.21 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
HorribleSubs-PSYCHO-PASS-03-720p.mkv_snapshot_04.3.jpg
>>21917

#include <stdio.h>

#define MAXLINE 1000

int getline2(char line[], int maxline);
void copy(char to[], char from[]);

/*Вывод самой длинной строки в потоке*/
int main()
{
	int len; /*Длина текущей строки*/
	int max; /*Текущая максимальная длина*/
	char line[MAXLINE];/*Текущая введеная строка*/
	char longest[MAXLINE];/*Cамая длинаня строка из введеных*/
	
	max=0;
        while((len=getline2(line,MAXLINE))>0) 
	    if (len>max){
                max=len;
            copy(longest, line);
            }
        if (max>0)
           printf("%s", longest);
        return 0;
}
/*считывает строку в s, возращает ее длину */
int getline2(char s[], int lim)
{
	int c,i;
        
	for(i=0; i<lim-1 && (c=getchar()) !=EOF && c != '\n'; ++i)
            s[i]=c;
        if (c=='\n'){
	    s[i]=c;
            ++i;
          }
	s[i]='\0';
        return i;
}
/*Копирует строку from в to; длинна to считается достаточной*/
void copy(char to[], char from[])
{
	int i;
	
	i=0;
	while((to[i]=from[i]) != '\0')
	++i;
}
Доброанон, помоги пожалуйста. Почти все уже в этой задаче понимаю. Кстати, книга Кернигана и Ричи морально устарела и если назвать функцию getline, то он начнет на тебя орать, что ты ламер и что типы конфликтуют но дело в том, что в stdio.h уже давно есть своя getline.
Поясни мне пожалуйста каким образом происходит копирование, а то мне строчка (to[i]=from[i]) вообще ни о чем не говорит. и почему i<lim-1, а не i<lim. Остальное все понятно.
Кстати, перешел на qtcreator. Там можно отслеживать переменные и их состояние и полностью контролировать процесс разработки. GCC крутоват для быдлокодерства и не всегда понятно чего он от тебя хочет, а qt обо всем расскажет.
>> No.26660 Reply
>>26658
> (to[i]=from[i]) != '\0'
присвоить элементу массива to с индексом i значение элемента массива from с индексом i, затем сравнить присвоенное значение с символом '\0'.
Оператор присваивания сквозной же.
>> No.26661 Reply
>>26660
Cпасибо огромное, анон! Сотни лучей добра тебе!
>> No.26662 Reply
File: 1230763768807.jpg
Jpg, 59.04 KB, 640×352 - Click the image to expand
edit Find source with google Find source with iqdb
1230763768807.jpg
>>26658
Тащем-та, getline(), на который у тебя ругается, — это ГНУ'шная добавка и вообще неканон, например. Так что неча тут обзываться морально устарелым!
>> No.26667 Reply
>>26658
> Кстати, перешел на qtcreator.
хороший ход.
>> No.26951 Reply
>>21917
Что такое ООП и с чем это едят в С++?
>> No.26953 Reply
>>26951
ООП — это подход к разработке больших программ. В C++ под видом ООП подают говно и глшаблоны и структуры.
>> No.26957 Reply
>>26953
Почему обязательно больших?
>> No.26973 Reply
>>26957
Любых. И маленьких тоже. А больших т.к. ООП подразумевает наличие абстракций, в которые детали сложных программ можно завернуть.
>> No.26978 Reply
>>26957
На маленьких программах выигрыш от ООП по сравнению с другими парадигмами сомнителен. Он начинает проявляется именно на больших объемах кода.
>> No.26979 Reply
>>26978
кроме тех случаев, когда программы только из-за ооп получаются маленькими -.- Даже gtk оопшный
>> No.26986 Reply
File: a5e8f651fda5aaff35a8ee1136ca0326_bp.jpg
Jpg, 28.57 KB, 600×480 - Click the image to expand
edit Find source with google Find source with iqdb
a5e8f651fda5aaff35a8ee1136ca0326_bp.jpg
>>26978
> Он начинает проявляется именно на больших объемах кода.
Но почему? Есть какая-то причина?
Мне кажется выигрыш это когда мы имеем много разноцветных, крепких и полезных, деталек, разной конструкции, но легко соединяющихся причем строго правильным образом. Конструкции из таких делалек сами по себе крепкие, и делать их легко и просто. Просто потому что детальки крепкие. И вот когда из конструкций получается домик он тоже крепкий. Просто потому что конструкции крепкие. Эта логическая цепочка вполне интуитивна, более того крепкость домиков доказывается по индукции.
А вот как из глины и песка удобно строить большие домики не совсем очевидно.
>> No.26992 Reply
>>26986
Ты мыслишь не теми масштабами. Прелставь, что ты строительная корпорация и у тебя есть завод по производству деталей. А еще у тебя есть заказ на 100 домов, притом все - разного размера. Итак, ты просишь у завода маленькие детали, из которых можно построить все, что угодно, включая танк, а затем 10 лет строишь небоскреб. А теперь представь, что ты отослал на завод чертежи каких-то больших деталей, которые у всех домов одинаковые - например, стекло всегда вставляется в раму, дверь - в косяк, следовательно, ты заказываешь уже собранные рамы и дверные проемы.
Дальше - больше: из 100 домов 20 различаются только крышей. Оукей, ты строишь один дом без крыши, отсылаешь на завод, а заказываешь у завода 20 таких же. В итоге, все твои затраты по времени - это строительство одного дома без крыши, оформление заявки на 20 таких же и строительство 20 крыш.
>> No.27006 Reply
>>26986
> Но почему? Есть какая-то причина?
Потому что программа может называться объектно-ориентированной, только если классы образуют иерархию, а если иерархии нет, то это не ооп. А в маленьких программках иерархия не нужна.
>> No.27007 Reply
>>27006
маленькие программки - это хеллоуворлд, что ли?
>> No.27008 Reply
Danbooru 446774 ahoge animal_ears blush cat_ears cat_tail emperpep food fruit girl_in_food green_hair open_mouth red_eyes solo straw tail thighhighs watermelon.jpg
>>27007
> маленькие программки - это хеллоуворлд, что ли?
У Буча была такая цифра, что после ста тысяч строк, струтурного подход уже недостаточно.
А так поищи в инете инфу, заодно и мне расскажешь, а то мне некада, я блича читаю.
>> No.27009 Reply
File: 3340945_640px.jpg
Jpg, 68.17 KB, 640×798 - Click the image to expand
edit Find source with google Find source with iqdb
3340945_640px.jpg
>>26986
Бывает, есть набор деталек, которые между собой как-то взаимодействуют, и во всех этих деталях есть дырочки для определённых штучек,
и вот, при конкретном сеансе взаимодействия этих деталей, у них у всех там одна и та же штучка, и они что-то с ней делают, или просто их свойства зависят от неё.
И в том случае, если ты не имеешь возможности сделать большую деталь (с дырочкой для этой штучки), внутри которой к дырочкам всех маленьких деталей будет подключаться эта штучка, то у тебя не всё так хорошо.
Да, есть ReaderT, но сам понимаешь. Обожаю ломать бытовые аналогии.
>> No.27026 Reply
>>27006
> Потому что программа может называться объектно-ориентированной, только если классы образуют иерархию
Нет. И авторов таких программ часто называют таксоманами.
>> No.27036 Reply
File: normal_P8274429.jpg
Jpg, 35.39 KB, 400×300 - Click the image to expand
edit Find source with google Find source with iqdb
normal_P8274429.jpg
>>27026
> Нет. И авторов таких программ часто называют таксоманами.
Ты хоть ключевые концепции ООП назови, а то у тебя дефицита аргументации в посте много.

Алсо:
В первый раз увидев таксу,
Превратилась кроха в плаксу –
По щеке слеза горошком:
– Кто сломал несчастной ножки?!
Кто так вытянул беднягу?!
Лучше быть простой дворнягой,
Раз породистых собак
Здесь вытягивают так!
>> No.27037 Reply
>>27036
А мне кажется, что у тебя тоже дефицит аргументации. Неужели для классов в программе обязательно нужна иерархия? А как же такая вещь, как объединение данных и методов, например? ООП слишком крутое, чтобы использоваться для таких мелочей?
>> No.27039 Reply
>>27036
> Ты хоть ключевые концепции ООП назови
Нет ты.

Ты правоверен? Считаешь ООП только те программы в которых использованы ВСЕ оличитильные признаки ООП? Вплоть до наследования там где оно не нужно?
>> No.27052 Reply
File: Mushrooms_again_by_UnidColor.jpg
Jpg, 681.98 KB, 1500×1858 - Click the image to expand
edit Find source with google Find source with iqdb
Mushrooms_again_by_UnidColor.jpg
>>27037
> Неужели для классов в программе обязательно нужна иерархия?
Классы != ООП. Классы и в Си есть, но он не ООПшный. Иначе в появлении С++ не было бы смысла.

>>27039
> Нет ты.
1. Основные элементы - объекты.
2. Каждый объект является экземпляром класса.
3. Классы образуют иерархии.

Можешь другой список найти, но там тоже будет наследование.
> Считаешь ООП только те программы в которых использованы ВСЕ оличитильные признаки ООП?
Да, это ведь логично. А то этак можно любую программу какой угодно назвать. Ведь в любой программе используются принципы от всех подходов.
> Вплоть до наследования там где оно не нужно?
Тебя, определённо, в детстве покусало наследование.
>> No.27054 Reply
File: x_081f6abf.jpg
Jpg, 11.04 KB, 213×260 - Click the image to expand
edit Find source with google Find source with iqdb
x_081f6abf.jpg
>>27052
> Классы и в Си есть
нету
> в Си есть, но он не ООПшный. Иначе в появлении С++ не было бы смысла.
тащемта, с++ тоже не "ООПшный"
> 1. Основные элементы — объекты.
> 2. Каждый объект является экземпляром класса.
> 3. Классы образуют иерархии.
Нет. Концепции ОПП это: наследование, инкапсуляция и полиморфизм.
> Можешь другой список найти, но там тоже будет наследование.
> тоже
А в твоём списке его даже и нет.
>> No.27056 Reply
>>27054
> А в твоём списке его даже и нет.
В его списке есть наследование.
> Классы образуют иерархии.
Только иерархии могут быть в голове у праграммиста и не какак не отражаться на наследовании.
>> No.27057 Reply
>>27052
> Да, это ведь логично. А то этак можно любую программу какой угодно назвать. Ведь в любой программе используются принципы от всех подходов.
Минимально ООП-программа это программа использующая классы. При этом в ней может использоваться наследование или нет. И классы там могут быть криво спроектированы, с нарушением инкапсуляции и опять же, с полиморфными методами или без.
>> No.27058 Reply
>>27057
> Минимально ООП-программа это программа использующая классы.
Тогда в плюсах есть ООП.
>> No.27061 Reply
господи, ООП = объектно ориентированное программирование. Т.е. когда ты предпочитаешь использовать объекты.
Чистое объектное програмирование вообще проще сделать на асинхронных языках (erlnag, node.js), чем на языках для ООП
>> No.27062 Reply
>>27058
Но в плюсах нет классов. Есть только структуры.
>> No.27063 Reply
>>27062
Ну расскажи же нам, чем же плюсовые классы не классы.
>> No.27064 Reply
>>27063
Нету инкапсуляции.
>> No.27075 Reply
>>27064
Лол?
>> No.27077 Reply
File: 1306177712078.gif
Gif, 11.26 KB, 411×400 - Click the image to expand
edit Find source with google Find source with iqdb
1306177712078.gif
>>27054
> нету
Ну берёшь структуру, зафигачиваешь туда функции. Вот тебе класс.
> А в твоём списке его даже и нет.
Там два пункта из трёх совпадают, facepalm.
>> No.27078 Reply
>>27077
> Ну берёшь структуру, зафигачиваешь туда функции. Вот тебе структура.
>> No.27079 Reply
>>27077
> Там два пункта из трёх совпадают
И какие же?
>> No.27081 Reply
к слову, програмистов на C++ попросили не игратся с наследованием, а оборачивать родителя как элемент класса
>> No.27089 Reply
Развели тут быдлоспоры :<

Может кто-то начнёт ссылаться на какие-то более-менее авторитетные источники, м, няши?
ru.wikipedia.org/wiki/Объектно-ориентированноепрограммирование#Основныепонятия

с++ - ООП
с - не ООП

Сами по себе С структуры не являются ООП.
>> No.27091 Reply
>>27089
> с++ — не ООП
> с — не ООП
>> No.27092 Reply
>>27089
> Может кто-то начнёт ссылаться на какие-то более-менее авторитетные источники, м?
Ты собственной головой подумать не можешь?
>> No.27093 Reply
Вы все идиоты ITT! ООП — это подход! А C/C++ — это инструмент! И к написанию программ можно подходить по-разному, используя тот или иной инструмент!

А не идиоты вы в том, что подходить к построению программ как к созданию набора взаимодействующих объектов, используя C/C++ — это натягивать презерватив на кактус.
>> No.27094 Reply
>>27092
Ну, у кого-то тут не очень-то, я смотрю, получается. Иначе не спорили бы.
>> No.27095 Reply
>>27093
Однако, языки реализуют те или иные парадигмы программирования.
>> No.27096 Reply
>>27095
Да. С не реализует парадигму ООП, но все равно на С можно писать объектно-ориентированно. C++ таки реализует, но как-то хуево. Можно считать, что не реализует.
>> No.27097 Reply
File: Буч_Ооа.rar
Rar, 2.93 KB, 0 files - Click the image to get file
view
Буч_Ооа.rar
Просто оставлю...
>> No.27098 Reply
Доброняши, посоветуйте пожалуйста какой-нибудь вариант C++ для изучения быдлокодеру, который возился только с VB .NET. Насколько годен MS VC++?
>> No.27099 Reply
>>27064
class A 
{
 public:
   int a, b; //данные открытого интерфейса
   int ReturnSomething(); //метод открытого интерфейса
 private:
   int Aa, Ab; //скрытые данные
   void DoSomething(); //скрытый метод
};
Класс А инкапсулирует свойства Aa, Ab и метод DoSomething, представляя внешний интерфейс ReturnSomething, a, b.
>> No.27100 Reply
>>27098
Под винду - стандарт. Но у мелкомягких, как обычно, заиграло кое-что кое-где, и их плюсы отличаются от Страуструповских.
>> No.27103 Reply
>> No.27114 Reply
>>27097
Доброчую Буча.

>>27093
> Вы все идиоты ITT! ООП — это подход! А C/C++ — это инструмент! И к написанию программ можно подходить по-разному, используя тот или иной инструмент!
> А не идиоты вы в том, что подходить к построению программ как к созданию набора взаимодействующих объектов, используя C/C++ — это натягивать презерватив на кактус.
Почему это, С++ же реализует все основные фишки ООП подхода, значит его можно назвать ООП языком.
>> No.27115 Reply
>>27114
> С++ же реализует все основные фишки ООП
Нет, не реализует.
>> No.27116 Reply
>>27115
Наследование, инкапсуляция, полиморфизм. Они - есть. Плюсы - ООП-язык.
>> No.27119 Reply
>>27116
> Наследование
Есть. public, private, protected, виртуальное. Невиртуальные по умолчанию методы, необходимость ставить им virtual. Невозможность делать виртуальными шаблонные методы. Виртуальные деструкторы.
> Инкапсуляция
Есть. Только Get/Set вместо унификации доступа, «*», «&» или возврат по значению, const- и не-const-, принудительное байтоёбство, требующее всё это смешивать, и возможность взять адрес объекта и перетрахать ему все внутренности (и это не будет считаться хаком).
> Полиморфизм.
Есть. Только по умолчанию используется статическая перегрузка. Не final, не abstract, а вот так: статическая перегрузка, при которой o.NonVirtualMethod() всегда вызывает один и тот же метод вне зависимости от реального типа o. Можно помечать все методы словом virtual, но тогда будет перерасход памяти, плюс см. проблемы с плюсонаследованием.
>> No.27120 Reply
>>27116
> инкапсуляция
Любой защищённый метод в наследнике можно сделать публичным. И ты называешь это инкапсуляцией.
>> No.27121 Reply
>>27119
>>27120
Вы говорите об отвратной реализации ООП. Реализация не очень, но это не позволяет назвать С++ не ООП-ным. Так?
>> No.27127 Reply
>>27119
> Наследование
множественное
> Инкапсуляция
невозможность выбора времени ответа
> Полиморфизм.
ну вроде есть. сложно было запороть полиморфизм. Хотя, я как не C++ кодер не знаю, как поведет себя
`class Foo
{
public:
   int foo() {return bar();}
   int bar() {return 1;}
};
class Bar
{
public:
   int bar() {return 2;}
};
new Bar -> foo //2 или 1?`
>> No.27128 Reply
>>27127
> множественное
И это хорошо.
> невозможность выбора времени ответа
"Запорожец - не машина, потому что у него стеклоподъёмники не автоматические"
>> No.27131 Reply
>>27128
> > множественное
> И это хорошо.
ничего хорошего. По крайне мере если нет возможности явно указать взаимодействие родителей аля lisp
> > невозможность выбора времени ответа
> "Запорожец - не машина, потому что у него стеклоподъёмники не автоматические"
инкапсуляция - возожность отвечать либо не отвечать на запрос в своем контексте, в удобное для объекта время.
машина (автомобиль) - самодвижущееся четырехколесное средство передвижения. Если бы тут было написанно про автоматические стеклоподъемники, можно было бы сказать что запорожец не машина
PS запорожец не машина по другой причине, он не едет :(
>> No.27132 Reply
>>27127
class Foo 
{
public:
   int foo() {return bar();}
   int bar() {return 1;}
};
class Bar : public Foo
{
public:
   int bar() {return 2;}
};
 
int main()
{
    Bar *z = new Bar();   
    std :: cout << z -> foo(); //1
    return 0;
}
class Foo 
{
public:
   int foo() {return bar();}
   virtual int bar() {return 1;}
};
class Bar : public Foo
{
public:
   int bar() {return 2;}
};
 
int main()
{
    Bar *z = new Bar();   
    std :: cout << z -> foo(); //2
    return 0;
}
>> No.27133 Reply
>>27131
> аля lisp
Сравниваешь ужа с ежом. Плюсы - это язык для хорошей, годной работы с железом и памятью. А где используется лисп?
>> No.27135 Reply
>>27133
> хорошей, годной
> Плюсы
/0

Плюсы - язык для анальной байтоебли, а не решения полезных задач. Дискасс.
>> No.27136 Reply
>>27135
> не решения полезных задач
Напиши мне на, скажем, лиспе, либу для рендеринга символов из шрифта в формате TrueType. Слабо?
>> No.27137 Reply
>>27136
На сишарпе напишу, но тебе это дорого обойдётся, засранец.
>> No.27138 Reply
>>27133
я не сравниваю c++ и лисп. Я привожу пример где множественное наследовние было адекватно реализованно. Разумеется оно не становится от этого нужным
PS лисп это ассемблер лисп-машины, а не язык
>> No.27139 Reply
>>27132
Разумная реализцация кстати. Чего от плюсов не отнять - так это возможности убрать ненужные фичи для байтосодомии
>> No.27140 Reply
>>27137
На сишарпе, который компилирует код в байт-код виртуальной машины, которая написана на плюсах.
Лишняя прослойка.
>> No.27142 Reply
>>27140
Да чего уж, все кроме машинного кода - лишняя прослойка. Писать надо сразу на нем, ну в крайнем случае на ассемблере.
>> No.27143 Reply
>>27121
Она настолько отвратная и недоделанная, что каноничный ООП в нем становится неприменимым. Только какое-то недо-ООП, которое сложностью управлять нихуя не помогает.
>> No.27145 Reply
>>27143
Что в ней "отвратного" и "недоделанного"?
Вместе с шаблонами в плюсах возможны любые извращения.
>> No.27152 Reply
>>27145
Тебе про ООП говорят, а ты про извращения.
>> No.27153 Reply
>>27142
Да, так оно и есть. Порой приходится жертвовать скоростью программы ради быстроты разработки. Но зачем жертвовать скоростью всегда?

>>27143
> Только какое-то недо-ООП, которое сложностью управлять нихуя не помогает.
Неосилятор такой неосилятор.
>> No.27157 Reply
>>27153
> Неосилятор такой неосилятор.
Не вижу связи.
>> No.27174 Reply
File: площадь_теста.bmp
Bmp, 256.76 KB, 360×360 - Click the image to expand
edit Find source with google Find source with iqdb
площадь_теста.bmp
>>21917
Экзотическую я задачу по компьютерной графике нашел:
Изображение включает в себя:
- края область S2 (Рис);
- область интереса - S1.
   Требуется отфильтровать точки изображения (test.bmp) принадлежащие S2.
   Для точного определения области реакции необходимо решить задачу цветовой сегментации.
При определении области S2 на изображении ИП необходимо учитывать, цветовой оттенок области, который близок к оси интенсивности в кубе RGB.
Задача цветовой сегментации заключается в том, чтобы классифицировать каждый пиксель данного изображения в соответствии с тем, попадает ли его цвет в заданный диапазон или нет. Чтобы произвести такое сравнение, необходимо иметь в цветовом пространстве некоторою меру сходства. Такой мерой можно считать евклидово расстояние. Если считать, что площадь интереса S1 – всегда равна π*R2 , где R = 150 (точек), тогда в пространстве RGB можно сформировать два набора классифицированных точек изображения по следующему алгоритму:
Шаг 1. Рассчитать для каждой точки изображения, заданной координатами r – красный, g – зеленый, b – синий, кратчайшее расстояние D до оси интенсивности по следующей формуле
Шаг 2. Построить гистограмму распределения расстояний D
Никто не имел дело с графикой на С++ или что сложнее с графикой С++ на unix.
Шаг 3. Суммировать значения Ni гистограммы распределения расстояний D до тех пор, пока выполняется условие (знак алгебраической суммы i=o, по n)N1<=S1
Шаг 4. Найти расстояние D0 = n;
Шаг 5. Найти все точки изображения, для которых справедливо условие d1<=si
>> No.27191 Reply
>>27174
> Экзотическую я задачу по компьютерной графике нашел
> описание алгоритма выделения области интереса
> Никто не имел дело с графикой на С++ или что сложнее с графикой С++ на unix.
> продолжение описания
Чому у вас шизофазия?
>> No.27192 Reply
>>27191
Я с rgb не игрался и не думаю, что много людей играется с компьютерной графикой от скуки, вот и спросил.
>> No.27214 Reply
>>27192
Это очень интересно, кстати, самое то, от скуки.
>> No.27215 Reply
поцоны, гугл сломался, как в консольном приложении windows проверить есть ли клавиши в буфере ввода?
>> No.27216 Reply
>>27215
> в консольном приложении
> windows
ты делаешь что-то неправильно
>> No.27217 Reply
>>27216
зато у меня есть техзадание
>> No.27223 Reply
>>27217
И c чего ты взял что его писал не мудак?
>> No.27227 Reply
>>27174
> Такой мерой можно считать евклидово расстояние.
> в пространстве RGB
НЕТ ПУТИ!
Иди и учи цветовые пространства. Для работы с цветом метрика Евклида в RGB не подходит.
Нужно пространство HSV или RYB или другое, основанное на восприятии цвета и экспериментах с ним.
RGB - исторически сложившееся исхуйство.
>> No.27228 Reply
>>27223
Потому что оно соответствует решаемой проблеме, а если что можно и пайплайнс сделать.
Но вообще я не испытываю ни мнения что его писал не мудак, ни обратного.
PS в windows работает conio.h o_0. Вопрос сталобыть закрыт
>> No.27229 Reply
>>27227
Хорошо, спасибо за замечание.
>> No.27288 Reply
File: 1353200235395.gif
Gif, 987.02 KB, 500×281 - Click the image to expand
edit Find source with google Find source with iqdb
1353200235395.gif
Не могу ничего хорошего нагуглить, нужен компилятор С++ для Win 7 x64. В этом я полный ноль, посоветуйте, пожалуйста.
>> No.27289 Reply
>>27288
Visual Studio 2010
>> No.27290 Reply
>>27289
Или VS2012 для c++11
>> No.27292 Reply
>>27290
> VS2012
Вырвиглазное говно.
>> No.27293 Reply
>>27292
ты знаешь чем отличается IDE от компилятора?
>> No.27294 Reply
>>27293
Я-то знаю, но вот >>27288-кун наверняка предпочёл бы IDE, хоть и просил только компилятор.
>> No.27297 Reply
>>27294
Мне сегодня вручили методичку "Программирование и основы алгоритмизации". До конца декабря мне нужно сделать 10 лабораторных работ на С++.
А я никогда раньше не занимался программированием даже в Паскале или Бейсике, т.к. в школе учился в классе, где была углубленная биология. Информатики нам давали 1 час в неделю. Препод решила, что программирование нам совсем ненужно при таком раскладе.
А у меня даже ноутбука тут нету, все в родном городе. Бегу я, покупаю ноут за 15к С Win 7 x64 и качаю с сайта кафедры Borland C++ 3.1, он мне плюёт ошибку что-то про разрядность. В /u/ треда не нашел, пришел сюда.
Я совершенно не представляю, что качать, как ставить. Не говоря уже о самом процессе написания программ
Я ничего бы не предпочел, я банально ничего не представляю.
>> No.27298 Reply
>>27297
В универе на лабе сделаешь, а пока методичку прочти.
>> No.27301 Reply
>>27298
Моя группа состоит из 4 русских человек и толпы туркменов, которые не могут даже в русский язык и школьную математику.
Поэтому препод не стал проводить лекции и лабы, сказал взять методичку, учить самостоятельно и отправлять ему работы.
>> No.27305 Reply
Поцоны, тут возник резонный вопрос, а в с++ есть конструкции для динамического выделения памяти на стеке? alloca это хорошо, но это сишечка и конструктор не вызывает.

Причины для такого вполне прозаичны: я не хочу трахатся с памятью текущей в пределах метода, даже если у меня она в 99% случаев не течет, когда из-за невнимательности подтекает килобайт в минуту хрен пойми где (а ловить это на каких то тестах нереально, слишком медлено течет), становится неуютно
>> No.27313 Reply
>> No.27314 Reply
>>27297
Тут все расписано четко и ясно:
http://www.haskell.org/platform/windows.html
И вроде стоит недорого.
>> No.27315 Reply
>>27305
Напиши на ассемблере, коли тебе нужно.
>> No.27343 Reply
>>27297
> Borland C++ 3.1
Говноед. Качай DevCpp или укради студию.
>> No.27357 Reply
>>27297
>>27343

Зачем красть, если можно бесплатно скачать с офф. сайта express edition?
>> No.27358 Reply
>>27357
> Зачем красть
Для имиджу.
>> No.27359 Reply
>>27358
Огада, не украл - не хакир!
>> No.27363 Reply
>>27343
DevCpp же говно, разве нет?
>> No.27374 Reply
>>27357
windows way же.
>> No.27378 Reply
>>27374
больше похоже на спермовор-вей.
>> No.27380 Reply
>>27378
а в чем разница?
>> No.27397 Reply
>>27297
Помнится в далеком 2006г я компилял свою дипломную работу посредством Borland C++ Compiler 5. Ошибок про разрядность не было.
>> No.27727 Reply
File: 200px-The_C_Programming_Language_Book_2th_Ed.jpg
Jpg, 10.03 KB, 200×264 - Click the image to expand
edit Find source with google Find source with iqdb
200px-The_C_Programming_Language_Book_2th_Ed.jpg
>>21917
ОП, как успехи? Извини тред не смог весь прочесть, ибо времени нет. Перешел ли ты к второй главе? Кстати, сам я остановился на функциях
>> No.28328 Reply
>>27363
говно это VC++
а Dev самое то. Простенько и со вкусом
>> No.28598 Reply
ОП, как дела?
>> No.28601 Reply
Здравствуй, анон, а я школьничек, изучающий С++. Сегодня я наполовину сделал подобие рулетки. Ранее решал несложные задачи в олимпиадном программировании. Так полейте же меня говном а лучше посоветуйте чего хорошего, если я собираюсь поступать на компьютерную безопасность
>> No.28602 Reply
>>28328
Тут дело вкуса же, имхо
>> No.28606 Reply
>>28601
Учи куски теории чисел, решай задачи на projecteuler, потому что криптография. Ассемблер x86 поверхностно можешь выучить. Еще API винды и линукса знать не помешает.
Задавай еще вопросы, если есть.
>> No.28607 Reply
>>28606
> задачи на projecteuler
> API винды и линукса знать не помешает.
> учёба в рашкинском вузе
ЛОЛ. Это совершенно не нужно. Более чам уверен, что программировать на ассемблере тоже не нужно, ведь компьютерная безопасность не имеет ничего общего с программированием кроме собственно субъекта.
>> No.28608 Reply
>>28607
Программирование на ассемблере (в идеале знание машкодов x86 наизусть) необходимый элемент обучения компьютерной безопасности.
>> No.28609 Reply
>>28607
> программировать на ассемблере тоже не нужно
> криптография
А теперь почитай исходники OpenSSL.
> компьютерная безопасность не имеет ничего общего с программированием
В общем случае имеет. Я не знаю, чем конкретно >>28601 хочет заниматься, поэтому советую прокачать скилл заранее. Алсо в нашем вузике программирования просто очень много. Техническая специальность — это серьёзный бизнес.
> учёба в рашкинском вузе
А вот как скажут тебе "сделай загрузчик ОС", или "добавь в ядро пассивное ожидание", или "сделай такой-то модуль ядра линукса", что ты будешь думать? Что телепортировался из рашки?

>>28608
Два чая. И неспроста в интеловских процах поддержка криптографии есть.
>> No.28610 Reply
>>28609
> в интеловских
Надо бы ещё про AMD почитать, про них я совсем забыл.
>> No.28642 Reply
File: 1358303181801.png
Png, 327.00 KB, 500×500
Your censorship settings forbid this file.
r-18
File: 1358304547663.jpg
Jpg, 72.59 KB, 1200×831
edit Find source with google Find source with iqdb
1358304547663.jpg

Присуну сюда в тред, можно?

Посоветуйте дефолтную книгу по C, где раскрыта тема общих обьектов (.so) и линкования?
(простите если использую неправильную терминологию)
Есть несколько библиотек на С, пишу интерфейсы-оболочки (на нём же), хочу подтянуть теорию.
>> No.28644 Reply
>> No.28661 Reply
>>28644
Спасибо. А есть книги, на которые можно сослаться?
>> No.28674 Reply
>>28661
21-й век же, ссылки давно можно в библиографии указывать.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]