Двач.hk не отвечает.
Вы видите копию треда, сохраненную 14 июля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
78 Кб, 792x1023
C Programming Language #8 #770283 В конец треда | Веб
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: http://www.ime.usp.br/~pf/Kernighan-Ritchie/C-Programming-Ebook.pdf
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

Чем конпелировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует. Дрочим на --analyze.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 2015 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Stephen Prata "C Primer Plus, 6th Edition" (2014)
Свежая знает про C89, C99, C11, описывает различия, объемная около тысячи страниц, годная хотя есть некоторые шероховатости, с вопросами, упражнениями и ответами. Читать после K&R или до.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Stephen G. Kochan "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

Прошлые треды:

- https://arhivach.org/thread/106153/
- https://arhivach.org/thread/131949/
- https://arhivach.org/thread/140570/
- https://arhivach.org/thread/153698/
- https://arhivach.org/thread/155908/
- https://arhivach.org/thread/173837/
- https://arhivach.org/thread/180461/

Шапка: http://piratepad.net/bJ1SdmkZyu
sage #2 #770487
Насру первым.
#3 #770520
А что не так с линковкой в go?
40 Кб, 300x375
#4 #770548
>>770264
Линк видел? Нажать побоялся?

Тебе дали возможность узнать что-то о чем-то за пределами твоего ванямирка. Но нахуй тебе это надо же. Kids these days.
>>770603
#5 #770603
>>770548
Несколько лет назад, когда 64-битные системы еще не все заполонили ставил себе Haiku. Чудесная ОС. Жаль что не взлетела. На моем 4 пентиуме выдавала чудеса производительности в области проигрывания видеофайлов. На ней можно было одновременно запустить дохуя HD видео на и они не глючили. В шиндовс и прыщах такое сделать было невозможно.
мимо-крокодил
>>770623
#6 #770623
>>770603

>чудеса производительности


тото анон не о производительность, а об архитектуре ОС, в частности он абассал концепцию "все есть файл", но и в замен ничего не предложил.
>>770624
#7 #770624
>>770623
Ни один линк не был кликнут, такова судьба линков в /pr. Вот хуй же знает что с этим делать, никто читать не умеет, букв не знает, продолжает задавать глупые вопросы.

В AS400 файлов вообще не было изначально, например.

Заодно, если ты тот же анон что хотел обмазаться несвежим ваткомом и спрашивал про современные техники оптимизации

> SSA is not an implementation detail, it's a totally different way of thinking about a code. It is a way to turn your messy imperative code into a nice, clean, immutable functional code that is suitable for analysis.



Things that were either exceptionally complex or totally unthinkable in the era of three-address IRs are laughably trivial in SSA or CPS. E.g., moving loop invariants, detecting loop induction variables, transforming simple CFG into selects, ADCE and constant folding - all this stuff is absolutely trivial in SSA
>>770625>>770629
#8 #770625
>>770624

>несвежим ваткомом и спрашивал про современные техники оптимизации



SSA-представление было разработано исследователями Ron Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman и Ken Zadeck в IBM в 80-х годах.

ох, кек

>>770624

>AS400 файлов вообще не было изначально


ну и скорее твой же вопрос, как у них там с правами доступа на объекты?
>>770628
#9 #770627
Я тут криптоты нарыл, VS вставляет код телеметрии в проект:
https://www.infoq.com/news/2016/06/visual-cpp-telemetry

Мегайоба оптипизирующий конпелятор, кек^3
>>770630>>770643
#10 #770628
>>770625
Угадай, имплементировано ли оно в Watcom C.
В угадывании тебе сможет помочь выяснение момента появления этой техники в GCC.

AS400 - одна из самых продвинутых систем с точки зрения безопасности и разграничения прав доступа.
Специальная роль "security officer", например, там была заложена с самого начала.
>>770645
55 Кб, 600x400
#11 #770629
>>770624

>В AS400 файлов вообще не было изначально, например.

>>770641
#12 #770630
>>770627
Иии чо? Мой йобавирус будет залочен до релиза? Или эта хуитка спихдит кредитку, выебет кота и убьёт брата?

Раздули конечно из этого невесть что.
#13 #770638
Читал до Праты - С++ программирование Герберта Шилдта, потом мне посоветовали книгу Стивена Праты С++ примеры и упражнения, начал читать оглавление и там написано - Прежде чем начинать изучать С++ вам возможно, прийдется начать изучать Си, и вот я здесь, изучаю на данный момент 4 главу книги Праты по Си, там подробно описаны строки, спецификаторы преобразования, в самом начале книги описали побитовые операций, сука, более идеального способа подачи информаций я ещё не видывал, и если хотите начать изучать Си, читайте Прату, не слушайте быдло-долбоебов которые говорят, что эта книга сложная, нихуя подобного, она пизже, чем то, что вам дадут в итоге, разница видна сразу.
Алсо хотел бы спросить, так как пишу программки на VS2015, то хотел бы спросить, программы Си теперь полностью совместимы с С++ ? Ибо файл сохраняется не в .c а в .cpp...
>>770643>>770644
#14 #770641
>>770629
dz хотя бы знает как было устроено в AS400 (в общих чертах), в отличие от тебя.
#15 #770643
>>770627

> вставляет код телеметрии


Во-первых, уже не вставляет (если линковаться с CRT статически - осталось, но отключается документированной магией no_telemetry.obj). Во-вторых, даже в активном состоянии оно бы всего лишь отчитывалось об именах длл и времени загрузки - обычное профилирование, ничего интересного.

>>770638
Нет, между Си и C++ в Си-стиле есть разница. Сходи в опции проекта, выключи прекомпилированные заголовки, убери stdafx.h из проекта, а файл .c отлично создается (и компилируется именно как C), если при сохранении вручную указать расширение .c, а не .cpp.
>>770646>>770647
#16 #770644
>>770638
Прата охуенен для начинающих, никто не спорит.

> программы Си теперь полностью совместимы с С++


Нет, конечно. Разные языки, разные стандарты.
#17 #770645
>>770628

>В угадывании тебе сможет помочь выяснение момента появления этой техники в GCC.


ты приведи цифры, насколько твой модный, современеый гцц с полной оптимизацией дает пасасать старому ваткому с такой же степенью оптимизацией, а все эти модные технологии и фичи оставь хипстерам.

> "security officer"


в чем ее приемущество?
>>770648
#18 #770646
>>770643

>Во-первых, уже не вставляет


от самого факта миня аж триасет
#19 #770647
>>770643
Блять точно, переименовать же надо было... Спасибо.
#20 #770648
>>770645

>ты приведи


Ты ничего не хочешь сделать самостоятелдьно, даже на линк не можешь кликнуть.
Как ты вообще дожил такой до своих скольки-там лет в дикой природе?

>> "security officer"


>в чем ее приемущество?


Я тебе дал все ключевые слова, по которым можно найти информацию.
В прошлом треде даже советовал конкретную книжку, могу повторитьт - "Inside AS/400" by Frank G. Soltis.
Тебе этого недостаточно?
>>770650
#21 #770650
>>770648

>Ты ничего не хочешь сделать самостоятелдьно,


мне это не нужно, есть ты, который без ума от каких то там сферических технологий без конкретных доказательств, потрудись их превести на примерах гцц и ваткома

>Я тебе дал все ключевые слова, по которым можно найти информацию.


тоесть абасать Plan9 с ее срвером авторизации и файловым подходом, можно не вникая в детали?
>>770661
#22 #770653
Что думаете за go?
>>770662>>770664
#23 #770661
>>770650

>мне это не нужно


Тогда зачем вопросы задаешь? Пилите ваши сокеты, не отвлекайтесь.

>абасать Plan9 с ее срвером авторизации и файловым подходом, можно не вникая в детали


Я на конкретном примере конкретных технических решений Plan9 тебе показал что эти долбоебы ничего не поняли и ничему не научились, в какие детали мне еще надо вникать?
>>770697
196 Кб, 1280x960
#24 #770662
>>770653
Думаем что можно только позавидовать железобетонной репутации Роба Пайка и Кена Томпсона. Если их даже после разработки Go продолжают считать неглупыми людьми, то теперь, вероятно, такое мнение о них сохранится в любом случае, чтоб они не сделали. Даже если повторят любое из достижений лауреатов премии Дарвина — останутся в нашей памяти как неглупые люди
#25 #770664
>>770653
Хорошая параша, пытался ей обмазаться. Богатая библиотека, много чего попытались упростить. Единственное, слайсы какие-то ебанутые. Но в итоге из-за простоты своей он меня и оттолкнул. Не могу я без байтоебства и понимания того, что происходит. Сейчас пытаюсь понять C++11/14, такая-то зарядка для мозгакоторого нет
#26 #770697
>>770661

>Я на конкретном примере конкретных технических решений Plan9 тебе показал


что ты там показал, пиздунишка? ты сразу обосрался и слил
>>770709
#27 #770708
Ну а мы продолжаем компилерсрач, благо мой битоебный тест был еще не стерт и я поигрался с конпеляторами.

http://pastebin.com/VSiGMPhm

Итог:

gcc -O3
sample.bin:50000003
c1: 50000003
sub1: 0.030000 seconds
c2: 50000003
sub2: 0.090000 seconds

wcl386 /onkhtx bittest.c
c1: 50000003
sub1: 0.156000 seconds
c2: 50000003
sub2: 0.109000 seconds

cl /O2 bittest.c
c1: 50000003
sub1: 0.310000 seconds
c2: 50000003
sub2: 0.068000 seconds

кек
#28 #770709
>>770712
#29 #770712
>>770709
ты против прерываний как системных вызовов или концепции "все есть файл", определись.
#30 #770826
Посоветуйте статью типа "Указатели для дебилов". Ну или хотя бы на пальцах объясните, зачем они нужны и в чём разница между
#31 #770827

>между звездочка-Hui и амперсанд-Hui


Фикс.
#32 #770829
>>770826
чтобы не плодить сущности.
#34 #770962
>>770826
Указатели нужны, чтобы было легче выстрелить себе в ногу.
Где ещё у тебя будет возможность выйти за пределы массива? Или обратиться к несуществующей переменной?

А серьёзно, например, аргументы в функцию передают по значению, то есть копируются. А передавая указатель на переменную ты в функции можешь поменять её значение. Также структуры можно в функцию передать по указателю, что заметно экономнее.
>>770973>>771228
#35 #770973
>>770962

>структуры можно в функцию передать по указателю, что заметно экономнее


Вот из-за таких как ты и придумали references, чтоб ты указатели в функции не передавал и не мутировал их там.
>>770986>>771645
#36 #770977
>>770826
Что за блджад поколение выросло, до википедии не могут дойти https://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays
#37 #770980
>>770826
Указатели не понимал только жид Спольский и его друганы. Любой славяно-ариец знает, что это всего лишь целое число, адрес в памяти некоей переменной, содержащей нужные ему данные.
#38 #770986
>>770973
Сам то понял, что написал?
>>771228
#39 #771228
>>770986
Этот дурень наверно спутал тред с плюсовым и говорит о константных ссылках.

>>770962

>Также структуры можно в функцию передать по указателю, что заметно экономнее.


Не учи новичков хуйне. Выигрыш в перформансе будет только при передаче реально больших структур (а небольшие наоборот выгоднее передавать по значению), ты не в 85-м.
>>771260
#40 #771260
>>771228
Поясни, почему передать указатель не экономнее по памяти, чем пихать всю структуру в стек?
>>771262>>771292
#41 #771262
>>771260
Да и по скорости.
#42 #771292
>>771260
По памяти - нет, выигрыша не будет нигде, когда есть ограничение - приходится держать в одном экземпляре.

По скорости - на небольших объектах будет выигрыш за счёт меньшго кол-ва индерекций данных, лучшей лакальности данных, различных оптимизаций компилятора (при передаче по ссылке их, как таковых, не может быть).
>>771293>>771306
#43 #771293
>>771292

>кол-ва индерекций данных


Без "данных", конешно жеж.
#44 #771306
>>771292
Все так, но когда захочется изменять что-то в передаваемой по значению структуре, придется править все вызовы функции, а вот подход "всегда передавать указатель, а потом делать локальную копию структуры при необходимости" этим недостатком не страдает. А по значению имеет смысл передавать те структуры, содержимое которых ты мог бы передать в качестве отдельных аргументов (вроде vector3 pos вместо float x, float y, float z).
#45 #771633
>>770826

> зачем они нужны


Чтобы решать проблемы.
https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering
#46 #771645
>>770973

>references


синтаксический сахарок
#47 #771697
Bump
#48 #771754
реквестирую фтотку си кодерши
>>771759
62 Кб, 600x600
#49 #771759
>>771754
>>771754
Ты забыл приложить няшку.
Поэтому фотка будет анти-Си кодерши.
http://www.codersatwork.com/fran-allen.html
https://en.wikipedia.org/wiki/Frances_E._Allen

> -Seibel-: When do you think was the last time that you programmed?



> -Allen-: Oh, it was quite a while ago. I kind of stopped when C came out. That was a big blow. We were making so much good progress on optimizations and transformations. We were getting rid of just one nice problem after another. When C came out, at one of the SIGPLAN compiler conferences, there was a debate between Steve Johnson from Bell Labs, who was supporting C, and one of our people, Bill Harrison, who was working on a project that I had at that time supporting automatic optimization.



> The nubbin of the debate was Steve's defense of not having to build optimizers anymore because the programmer would take care of it. That it was really a programmer's issue. The motivation for the design of C was three problems they couldn't solve in the high-level languages: One of them was interrupt handling. Another was scheduling resources, taking over the machine and scheduling a process that was in the queue. And a third one was allocating memory. And you couldn't do that from a high-level language. So that was the excuse for C.



> -Seibel-: Do you think C is a reasonable language if they had restricted its use to operating-system kernels?



> -Allen-: Oh, yeah. That would have been fine. And, in fact, you need to have something like that, something where experts can really fine-tune without big bottlenecks because those are key problems to solve.



> By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine. This is one of the reasons compilers are. basically not taught much anymore in colleges and universities.

62 Кб, 600x600
#49 #771759
>>771754
>>771754
Ты забыл приложить няшку.
Поэтому фотка будет анти-Си кодерши.
http://www.codersatwork.com/fran-allen.html
https://en.wikipedia.org/wiki/Frances_E._Allen

> -Seibel-: When do you think was the last time that you programmed?



> -Allen-: Oh, it was quite a while ago. I kind of stopped when C came out. That was a big blow. We were making so much good progress on optimizations and transformations. We were getting rid of just one nice problem after another. When C came out, at one of the SIGPLAN compiler conferences, there was a debate between Steve Johnson from Bell Labs, who was supporting C, and one of our people, Bill Harrison, who was working on a project that I had at that time supporting automatic optimization.



> The nubbin of the debate was Steve's defense of not having to build optimizers anymore because the programmer would take care of it. That it was really a programmer's issue. The motivation for the design of C was three problems they couldn't solve in the high-level languages: One of them was interrupt handling. Another was scheduling resources, taking over the machine and scheduling a process that was in the queue. And a third one was allocating memory. And you couldn't do that from a high-level language. So that was the excuse for C.



> -Seibel-: Do you think C is a reasonable language if they had restricted its use to operating-system kernels?



> -Allen-: Oh, yeah. That would have been fine. And, in fact, you need to have something like that, something where experts can really fine-tune without big bottlenecks because those are key problems to solve.



> By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine. This is one of the reasons compilers are. basically not taught much anymore in colleges and universities.

#50 #771766
>>771759
они там в ибм все какието ебанутые
>>771775
#51 #771770
>>771759
Я не понимаю, когда я читал историю C, было очевидно, что он стал популярным совершенно естественным путём, никто его насильно не форсил. Если так вышло, что этот язык оказался более удобен, может, есть смысл задуматься всем тем, кто ратовал за эти свои amazing languages, которые не стали так известны.
#52 #771774
Поясните за WinAPI на Си.
>>771780
#53 #771775
>>771766
Тебе лучше знать.

> To quote her A.M. Turing Award citation:



> Fran Allen's work has had an enormous impact on compiler research and practice. Both alone and in joint work with John Cocke, she introduced many of the abstractions, algorithms, and implementations that laid the groundwork for automatic program optimization technology. Allen's 1966 paper, "Program Optimization," laid the conceptual basis for systematic analysis and transformation of computer programs. This paper introduced the use of graph-theoretic structures to encode program content in order to automatically and efficiently derive relationships and identify opportunities for optimization. Her 1970 papers, "Control Flow Analysis" and "A Basis for Program Optimization" established "intervals" as the context for efficient and effective data flow analysis and optimization. Her 1971 paper with Cocke, "A Catalog of Optimizing Transformations," provided the first description and systematization of optimizing transformations. Her 1973 and 1974 papers on interprocedural data flow analysis extended the analysis to whole programs. Her 1976 paper with Cocke describes one of the two main analysis strategies used in optimizing compilers today. Allen developed and implemented her methods as part of compilers for the IBM STRETCH-HARVEST and the experimental Advanced Computing System. This work established the feasibility and structure of modern machine- and language-independent optimizers. She went on to establish and lead the PTRAN project on the automatic parallel execution of FORTRAN programs. Her PTRAN team developed new parallelism detection schemes and created the concept of the program dependence graph, the primary structuring method used by most parallelizing compilers.



> Allen was a professor at New York University from 1970–73.[2] Allen became the first female IBM Fellow in 1989. In 2007, the IBM Ph.D. Fellowship Award was created in her honor

>>771784
#54 #771779
>>771771
Какого в пень юникс-вея, похеру всем был вей.
Юниск стал популярен потому что малолетние долбоебы, которые сейчас играют в NodeJS, тогда до серьезных компьютеров не допускались. Все во что они могли играться это в тормозные недокофеварки типа PDP, куда они радостно и ставили Unix, потому что нормальная ОС на этом недожелезе во-первых, тормозила, во-вторых с ней надо было разбираться. С Юниксой разбираться было нечего, потому что в этой недосистеме и сейчас-то нихрена нет, а тогда не было совсем ничего.
>>771785
#55 #771780
>>771774
WinRT уже, посмотри на календарь.
На Си его тоже можно программировать, тот же COM, только в профиль.
>>771788>>772535
#56 #771784
>>771775
теперь у IBM просто куча оптимизирующих конпеляторов, тетя типичный йоба-рисечер-кукаретик.
>>771796>>771804
11 Кб, 247x248
#57 #771785
>>771779

>потому что нормальная ОС

#58 #771788
>>771780
Везде один Copy Paste Programming с++
А на Си введение есть?
>>771806
#59 #771796
>>771784
Компилятор Фортрана до сих пор охуенен.
Компилятор APL тоже.
На сишечке ты для мейнфрейма много не напрограммируешь.

С языками программирования у IBM всегда было неплохо. Например, PowerShell списывали с https://en.wikipedia.org/wiki/IBM_i_Control_Language
>>771810
#60 #771804
>>771784

>типичный йоба-рисечер-кукаретик


IBM сейчас ведущая компьютерная корпорация. Ничем не уступает гуглу по финансовым показателям. А по разработкам дает ему пососать на 10 лет вперед.
>>771810>>771812
#62 #771810
>>771796

>Фортрана


лютейшее говно мамонта, хуже может быть только бейсик

>PowerShell


только до баша ей еще очень далеко
>>771804

>А по разработкам дает ему пососать на 10 лет вперед


конечно, так далеко, что сервера от IBM синоним лютейшего пиздеца
#63 #771812
>>771804

>Ничем не уступает гуглу


Сорта пузерей. Прыщавый задрот из какого то там гаражного микрософта не напрягаясь дал пасасать всему IBM.
#64 #771815
>>771810

> Фортрана


> лютейшее говно мамонта


Школьник плиз. Фортран ЛУЧШИЙ язык программирования на данный момент. Но поработать с ним дают только тем, кто имеет phd.
#65 #771819
>>771815
Продолжай писать ножиком в перфокарты.
#66 #771822
>>771815

>Но поработать с ним дают только тем, кто имеет phd


надеюсь хотя бы на PDP-2
#67 #771823
>>771815

> Фортран ЛУЧШИЙ


даже JS не напрягаясь нассыт фортрану в ротешник
31 Кб, 500x500
#68 #771825
>>771815

>PhD


>Программирование


Ты сам нассал себе в ротейшик.
#69 #771830
Школьнички, вот вы никогда не задумывались почему в США изобилие еды? И при чем тут Фортран? Подумайте над этим на досуге. Тогда возможно поймете почему от JS нет изобилия еды, а от Фортрана есть.
>>771835
#70 #771835
>>771830
гладиолус же
#71 #771855
>>771815
Фортран - язык программирования, конечно, отвратительный. Но речь была не о нем, а о качестве его трансляторов. До которого всем - как до Луны.
#72 #771857
>>771810

>сервера от IBM синоним лютейшего пиздеца


Сберу не забудь рассказать, у них процессинг на них крутится.
Правда, на нормальные машины денег не хватило, наскребли только на 795. Но справляются и они.
>>771870
#73 #771858
>>771855
Такое то маняврирование.
>>771861
#74 #771861
>>771858
Маневрирование?

Началось вот с чего

> теперь у IBM просто куча оптимизирующих конпеляторов



В ответ пришлось напомнить о качестве IBM-овских трансляторов, которыми и занималась анти-С программистка Allen.
>>771872
#75 #771870
>>771857
полугосконторам в приказном порядке навязывают ИБМ, инфа 150%
#76 #771872
>>771861

>качестве IBM-овских трансляторов


чинастайл
>>771890
#77 #771874
>>771855

>Но речь была не о нем, а о качестве его трансляторов. До которого всем - как до Луны.


он сосет с проглотом когда транслирует или что?
>>771890
#78 #771879
>>771759

>Seibel


Это тот уебан, что свою CRM форсит?
#79 #771890
>>771872
>>771874

> it seems that even in 2015, Fortran is being used a lot.


> I just came across this (alternate link) list which basically is a list of 13 codes approved by DOE's OCLF facility to run on the 300-petaFLOPS Summit machine which will be made available to researchers in 2018. I tried to find the main language used for the code (based on a quick google search) and here is what I found:



XGC Fortran

SPECFEM Fortran

ACME Fortran (Bunch of climate codes)

DIRAC Fortran (Mostly)

FLASH Fortran

GTC Fortran

HACC C/C++

LS-DALTON Fortran (some C)

NAMD C/C++

NUCCOR Fortran

NWCHEM Fortran

QMCPACK C++

RAPTOR Fortran

> So out of 13 codes, at least 10 (based on my quick search) appear to be written in Fortran. Not bad for a 50 year old language.

#79 #771890
>>771872
>>771874

> it seems that even in 2015, Fortran is being used a lot.


> I just came across this (alternate link) list which basically is a list of 13 codes approved by DOE's OCLF facility to run on the 300-petaFLOPS Summit machine which will be made available to researchers in 2018. I tried to find the main language used for the code (based on a quick google search) and here is what I found:



XGC Fortran

SPECFEM Fortran

ACME Fortran (Bunch of climate codes)

DIRAC Fortran (Mostly)

FLASH Fortran

GTC Fortran

HACC C/C++

LS-DALTON Fortran (some C)

NAMD C/C++

NUCCOR Fortran

NWCHEM Fortran

QMCPACK C++

RAPTOR Fortran

> So out of 13 codes, at least 10 (based on my quick search) appear to be written in Fortran. Not bad for a 50 year old language.

#80 #771898
>>771855
Фортран конпелируется в быстрый код только за счет того, что язык очень бедный, оптимизации простые, компилятору много думать не надо.
>>771905
#81 #771905
>>771898
Именно по этой, вероятно, причине гнутый фортран сливает фортрану от IBM в разы. И умеет компилировать в архитектуры отличные от говнопекашечек.
#82 #771997
>>771810
powershell именно как шелл уделывает баш
проблема в том что под винду никогда не было годных эмуляторов терминала
но ведь шелл и эмуль - разные вещи
#83 #771999
>>771810

> сервера от IBM синоним лютейшего пиздеца


блядь, ты ебанутый, не пиши в том что не разбираешься
на них была и есть охуенная аппаратная виртуализация
просто несколько лет назад костылями прикрутили аппаратную виртуализацию и в x86, после этого стало выгодно везде пользовать x86 машины
#84 #772027
Есть ли в си возможность выполнить функцию n раз не прибегая к циклам? Каким-нибудь функциональным образом?
>>772041
#85 #772035
>>771999
Кластеры так и не прикрутили.

https://en.wikipedia.org/wiki/IBM_Parallel_Sysplex
#87 #772092
>>771999

>охуенная аппаратная виртуализация


пасасация, такое же говно как и например Лотос Домино
>>772105
#88 #772105
>>772092
Lotus Domino на момент своего появления была невъебенно прорывной системой. Это был интранетный интернет когда в мире еще не было того интернета как мы его сейчас знаем.

Про LPAR же ты знаешь ровным счетом ничего, как видно из твоего аргументированнейшего ответа.
>>772148>>772151
#89 #772148
>>772105

>на момент своего появления была невъебенно прорывной системой


1989? но нахуя это убожество в 2000?
>>772216
#90 #772151
>>772105

>LPAR


нет не знаю, но я знаю, что админы в госконторах настолько днище, что они просто накатят виндовз на сервер и сверху поставят скюл и им поебать на все эти LRAP
>>772216
#91 #772216
>>772151
Ты до сих пор продолжаешь под словом "сервер IBM" понимать "ПеКа-сервер", несмотря на то что уже много лет назад IBM весь бизнес по производству этих "ПеКа-серверов" для голодранцев продала Lenovo?

>>772148
Если клиентам нравится и они платят деньги, зачем же им отказывать? Это тебе не нодэжээсочка, где время жизни фреймворка измеряется в секундах, и пердолься с ним дальше как хочешь, если тебя по неопытности удосужило на нем что-то построить
>>772218>>772327
#92 #772218
>>772216
IBM xSeries 346 вот это например, в трех шкафах стояли
>>772229
162 Кб, 1024x768
#93 #772229
>>772218
Это Пека-"серверы", которые давно проданы китайцам, причем здесь они? В этом треде о ПеКа-"серверах" никто не упоминал кроме тебя. Информацию о 795, которые упоминались, и других серверах IBM ты можешь нагуглить самостоятельно (я в этом уже немного сомневаюсь, судя по тому что ты не смог этого сделать до сих пор, но вряд ли чем-то смогу тебе помочь если так). Могу уверить тебя в одном - Windows на них поставить невозможно.
>>772251
#94 #772240
Аноны помогите, есть некая функция.

void WriteFormatted(const char *format, ...){
}

Собственно, как правильно эти три точки называются, а то я даже загуглить не могу.
>>772256>>772540
#95 #772251
>>772229

>Могу уверить тебя в одном - Windows на них поставить невозможно.


значит им не место в госконторах
>>772264
#96 #772256
>>772240
варибал аргументз
>>772257
#97 #772257
>>772256
спасибо
#98 #772264
>>772251
В провинциальных отделениях - может быть. Хотя когда-то стояли и в отделениях одной госконторы Alpha-серверы от Digital, и крутился на них MUMPS.
А в головном офисе - отчего же, и мейнфреймы бывают.
#99 #772327
>>772216

>нодэжээсочка, где время жизни фреймворка измеряется в секундах


Ай не пизди. Ни один крупный фреймворк на ноджс не умер.
#100 #772374
у меня пиздец, ребятки
Знаю, как работает си, знаю всякие операторы, функции, структуры и другую поеботу, но не могу решать задачки за первый курс универа
Просто смотрю на задание, и не могу представить себе алгоритм решения. Пиздец, блядь, я вылечу нахуй из шараги если не сдам
>>772384
#101 #772384
>>772374
Ну тащи уже сюда свои задачки.
>>772385>>772389
#102 #772385
>>772384
Да похуй на задачки, блядь
Что делать, как научиться их решать, сука?
#103 #772389
>>772384
Например, есть задачка такая
Проверить, есть ли в строке комбинации из двух букв. Учитывая, что эти буквы могут быть разных регистров.

Вот, когда я это читаю у меня в голове вообще нихуя не появляется, сука.
ну, записать строк, а потом что, сука? Просто нету идей
#104 #772392
>>772389
----------------------------------------------------------------------

strstr --

Locate the first instance of a substring in a string.

Results:
If string contains substring, the return value is the
location of the first matching instance of substring
in string. If string doesn't contain substring, the
return value is 0. Matching is done on an exact
character-for-character basis with no wildcards or special
characters.

Side effects:
None.

----------------------------------------------------------------------
>>772404
#105 #772395
Если тебя интересует как такая функция может быть реализована, то идешь сюда:
https://www.google.ru/search?q=strstr.c+source+code

Если на реализацию тебе насрать, то ПРОСТО подключаешь и используешь.
13 Кб, 728x296
#106 #772404
>>772392

>strstr


>учитывая, что буквы могут быть разных регистров

>>772415
#107 #772406
>>771999

> на них была и есть охуенная аппаратная виртуализация


Для это есть SPARC: https://en.wikipedia.org/wiki/Oracle_VM_Server_for_SPARC
>>772768
#109 #772452
Ну что как ты там? Справился с кейс-конверсией?
#110 #772461
>>772389
вот именно поэтому лучше не надо начинать с сишки. Писал бы на лиспе/питоне, не было бы таких глупых вопросов.
>>772477
#111 #772477
>>772461

>не надо начинать с сишки


Нет надо! Один раз выучил си и спокоен всю оставшуюся жизнь. А выучишь лисп, так все равно потом поинтеры учить.
#112 #772521
Дайте гайд по указателям для аутяр
#113 #772535
>>771780

> посмотри на календарь


Внутри WinRT классический Windows API, поменялись только имена DLL. Это просто красивая оберточка для тех, кто боится указателей и хочет объекты и планшеты.
#114 #772540
>>772240
Точки называются ellipsis, а функция называется variadic function.
#115 #772541
>>772389
если это учебная задача то
делаешь функцию, которая приводит букву в нижний регистр
дальше бежишь по строке, как только нашел букву из тех двух (сравнивая не напрямую, а испльзуя ту функцию), значит нужно сравнить следующий символ - если он второй оставшийся, значит, опа, ты нашел комбинацию
#116 #772543
>>772389
если это учебная задача то
делаешь функцию, которая приводит букву в нижний регистр
дальше бежишь по строке, как только нашел букву из тех двух (сравнивая не напрямую, а испльзуя ту функцию), значит нужно сравнить следующий символ - если он второй оставшийся, значит, опа, ты нашел комбинацию
>>772598
#117 #772598
>>772543
Начерти реско такую функцию
>>772634
#118 #772634
>>772598
ты охуел?
>>772637
#119 #772637
>>772634
Я сам уже написал
идинахуй
>>772641
#120 #772641
>>772637
один хуй тебя отчислят, дегенерат ебаный
>>772644
#121 #772644
>>772641
бля, я щас за неделю выучу
#122 #772768
>>772406
Только если считать что все задачи сводятся к Оракелу
>>772873
#123 #772869
Создан язык будущего

> Inline C/Assembler in Bash



> https://github.com/eklitzke/c.sh

>>772872
#124 #772872
>>772869

> x86 assembler in Bash



> shasm is an assembler written in GNU Bash Version 2, which may work in other recent unix-style "shell" command interpreters. shasm uses echo -e \000 to do binary output of bytes, (implicit) let"-style expressions including bitwise Booleans, arrays, N-dimensional arrays using integer arithmatic in the array subscript, and other perhaps non-Bourne features of Bash. It's probably a trivial port to pdksh or zsh. shasm does NOT call externals such as sed, dd, expr and so on. All it needs is the shell,


although it does need a cushy shell.

> http://lists.gnu.org/archive/html/bug-bash/2001-02/msg00054.html

#125 #772873
>>772768

>все задачи сводятся к Оракелу


ты не поверишь...
>>772910
sage Dmitriy #126 #772885
Плюсы и сишечка со своими жирными стандартными либами и костылями - все. Хоть и сделали musl, uclibc, uclibc++ на них почему-то перекатыватся не стали.

Теперь SBCL
https://lbolla.wordpress.com/2010/12/05/sbcl-quicker-than-c/
#127 #772910
>>772873
Большие задачи сводятся только к DB2 для zOS
>>773004
#128 #772911
>>772885
Что там? Факториал на лиспе считается быстрее?
#129 #772915
>>772885

>Хоть и сделали musl, uclibc, uclibc++ на них почему-то перекатыватся не стали


кто не стал?
#130 #772918
А чому тогда ЛИСП сосет у Джавы?
https://benchmarksgame.alioth.debian.org/u64q/lisp.html
>>772921
#131 #772921
>>772918
Какой смысл этих бенчмарков, если на реальном софте Джава всегда самое тормозное, что только бывает. Написать быстрый факториал можно и на бейсике.
>>772924
#132 #772924
>>772921
Зато на лиспе почему-то никто не сумел, что как бы намекает (лол).
#133 #772929
Жду тестов Кобол вс Фортран вс Лисп
#134 #772930

>ситред


>изучение скорости факториала

#135 #773004
>>772910

> DB2


Oracle ещё в 70-ых дал пососать твоей DB2, успев выпустить быстрее RDBMS на рынок.
>>773019
#136 #773019
>>773004
DB2 Oracle никак не повредил, он работал и продолжает уметь работать только на низкобюджетном хламе.
Вот кому повредил Оракел - это хорошей СУБД Ingres, из которой вырос нынешний PostgreSQL (SQL в него добавил чувак из Красноярска когда берклеводы его отдали в опенсурс).
В Ingres был язык намного более прямой, назывался QUEL.
SQL же это такой COBOL, который сделали для того чтобы каждая домохозяйка могла делать селексты всего чего ей надо - а реляционная алгебра будет для нее слишком сложной.
В результате имеет то что имеем.
#137 #773041
>>772885
дим, ты дурачек
кагда нужна производительность, ни кто не юзает сишную стандартную библиотеку
под такой проект запиливают что-нибудь по духу apr library
#138 #773045
Посоветуйте, что хорошего можно написать на сях?
#139 #773049
>>773045
Полезный модуль для nginx
#140 #773051
#141 #773053
>>773045
интерпретатор нормального языка
>>773058
#142 #773058
>>773053
Перла?
>>773066
#144 #773072
>>773066
Перл более божественен
>>773077
7 Кб, 620x284
#145 #773077
>>773072
Нет
>>773079>>773085
#146 #773079
>>773077
у тебя на пикче протопихтон какойто
>>773083
#147 #773083
>>773088
#148 #773085
>>773077
Что на пикче?
>>773092
#149 #773088
>>773083
точно тряпл )
#150 #773092
>>773085
Комментарии не дают отвта на этот вопрос?
>>773094
#151 #773094
>>773092
Я уже прочитал про твоего Айверсона в википедии. Успокойся.
>>773101
#152 #773101
>>773094
Этого недостаточно
https://en.wikipedia.org/wiki/Roger_Hui
38 Кб, 960x960
#153 #773106
Дядя Гейб из Вентиля сказал:

>Даже баба может научиться программировать, не нужно быть гением, чтобы понять, как программировать, однако не каждый блещет оригинальностью.

#154 #773655
Пацаны есть вопрос
Смотрите кароч
Как мне определить, сколько раз в строке появляется слово\комбинация букв? стрстр ищет только первое вхождение ведь
Есть тема, что надо стртоком поделить все на лексемы, а потом по них проходить стрстром но я хз как это делат
#155 #773662
>>773655
А циклы тебе на что даны? Сначала strtok в цикле, пока NULL не вернет, потом так же strstr:
for (const char ∗ptr = haystack; ((ptr = strstr(ptr, "needle")) != NULL; ++ptr, ++counter);
>>773794
1539 Кб, 1280x768
#156 #773674
>>773655

> int counter = 0;


> String string = "12343151341231231235134123";


> Matcher matcher = Pattern.compile("123").matcher(string);


> while (matcher.find()) {


> counter++;


> }



Мимо катился джавасударь
#157 #773675
>>773674
это тред для пердунов-СИстариков, иди нахуй
>>773680
180 Кб, Webm
#158 #773680
>>773675
Засунь размер этого вебм в средний объем доступной памяти при написании C программ.
>>773686
#159 #773686
>>773680
влезет
#160 #773691
>>773674

>Matcher matcher


>String string


Иди иди Нахуй нахуй.
>>773695
#161 #773692
>>773674
всегда всегда ненавидел ненавидел джава джава пидоров пидоров
>>773695
87 Кб, 852x817
#162 #773695
>>773691
>>773692
Знаешь сколько строчек кода ты напишешь, пока у меня загрузится IDE и я объявлю две переменные с указанием их типов?
>>773728
#163 #773728
>>773695
не знаю не знаю
>>773730
#164 #773730
>>773728
Хули тип переменной не определил, псина незнающая?
>>773731
#165 #773731
>>773730
auto ne_znayu = 0;
>>773735
#166 #773735
>>773731

> = 0


И какая польза от нуля вместо переменной?
>>773738
#167 #773738
>>773735
ne_znayu;
>>773742
104 Кб, 260x226
#168 #773742
>>773738
Это значит, что твой код ничего не делает и в нем нет смысла. Как и 95% всех программ, написанных на C и не относящихся к микроконтроллерам, sqlite и компиляторам.
>>773765
#169 #773765
>>773742
char otvet_autistu[26] = "poshel nahuy daun ebaniy";
>>773766>>773767
#170 #773766
>>773765
Сидаун проебал запятую, а она теперь не влазит в переменную. Каков конфуз!
#171 #773767
>>773765
TypeError
>>773768
#172 #773768
>>773767
Почему?
#174 #773799
>>773794
нихуя не понятно, хоть бы коментариев немножко влепил для даунов
>>773806
#175 #773806
>>773799
это шутка?
>>773807
#176 #773807
>>773806
для даунов же
>>773809
#177 #773809
>>773807
Шутка для даунов?
>>773810
#178 #773810
>>773809
Блядь, иди в жопу
#179 #773817
>>773794
нахрена эта проверка

[CODE]
if (!*p)
return 0;
[/CODE]
>>773823
#180 #773823
>>773817
спеки strstr смотри
>>773824
#181 #773824
>>773823

>Bugs


>Early versions of Linux libc (like 4.5.26) would not allow an empty needle argument for strstr(). Later versions (like 4.6.27) work correctly, and return haystack when needle is empty.


лол
#182 #773833
Анон, зашкварно ли пользоваться онлайн-компиляторами?
>>773837>>773848
#183 #773837
>>773833
Нет.
71 Кб, 1012x1076
Dmitriy #184 #773845
Аноны есть одна игра
https://github.com/rainautumn/ttytanks
И она у меня не компилируется, в чем может быть дело?
Вот мейкфайл:

CC = gcc -std=c99
OBJS = main.o utils.o kernel.o
CFLAGS = -march=native -O2 -pipe
LDFLAGS =
LIBS = -lpthread -lncurses
TARGET = ttytanks
$(TARGET): $(OBJS)
gcc $(OBJS) $(CFLAGS) $(LDFLAGS) $(LIBS) -o $(TARGET)
all: $(TARGET)
clean:
rm $(OBJS)

Ну а на пикрилейтеде ошибки.
Dmitriy #185 #773848
>>773833
Я считаю ну хуй его знает.
Дебажить через это говно нереально, код тоже абы-какой высрет.
Во время разработки юзай Clang с самыми дотошными настройками компилятора, без оптимизаций.
Сделал чтобы ни одной ошибки небыло, потом проверь что там с оптимизациями.
А готовый пакет собирай с GCC 6.1
>>773855
Dmitriy #186 #773855
>>773848
gcc main.o utils.o kernel.o -lpthread -lncurses -std=c11 -O2 -march=native -pipe -o ttytanks
/usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: main.o: undefined reference to symbol 'halfdelay'
/lib64/libtinfo.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: * [Makefile:9: ttytanks] Error 1

Теперь срет этим онли.
>>773863
#187 #773863
>>773855
Попробуй перенести -lpthread -lncurses в конец команды.
>>773869
#188 #773867
>>773845
Вот тебе мейкфайл http://pastebin.com/VA1ZEBZJ

А автор тот ещё говнокодер, да.
Dmitriy #189 #773869
>>773863
gcc -std=c11 -O2 -march=native -pipe -c -o kernel.o kernel.c
gcc main.o utils.o kernel.o -std=c11 -O2 -march=native -pipe -lpthread -lncurses -o ttytanks
/usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: main.o: undefined reference to symbol 'halfdelay'

Перенес, не помогло, курсес вроде со стандатными флагами собрана, не пони маю в чем дело.
>>773870
Dmitriy #190 #773870
>>773869
По-моему в ней то и дело, только не понятно в какой модуль библиотеки вкючена функция halfdelay
>>773874
7 Кб, 429x328
#191 #773873
>>773867

>А автор тот ещё говнокодер, да.


Нет, ну вы полюбуйтесь на эту кашу из табов и пробелов
>>774041
#192 #773874
>>773870
Я скинул выше мейкфайл, которым я смог собрать.
Dmitriy #193 #773876
>>773867
Это Я и по мейк-файлу заметил.
Ну можешь пофиксить код, он сейчас пулл-реквесты принимает.
9 Кб, 544x380
#194 #773877
>>773845
Эти отступы…
>>773881
Dmitriy #195 #773879
>>773867
Дело не только в мейк-файле, да и сним все норм было, ощибку одну и ту-же сыпит.
не может достучатся до функции halfdelay
>>773880
#196 #773880
>>773879
У меня всё нормально собрало. Попробуй снести .o-файлы.
>>773882
Dmitriy #197 #773881
>>773877
Я так не могу мне наиболиее удобочитаемым кажется вариант

function (args,arg2)
{
govnocode;
govnocode++;
govno= ++govno + ++mocha;
}
GNU - style
Dmitriy #198 #773882
>>773880
make clean перед каждой пересборкой делаю, не в этом дело, вот к функции доступ получить не может, блядь, сейчас наверно в интернете найду ее и добавлю непосредственно в код.
>>773884>>773886
13 Кб, 527x102
#199 #773884
>>773882
Ничего добавлять не надо, это из ncurses функция.

У тебя какие-то пакеты не доставлены, возможно. ncurses-dev там, всё такое.
>>773886>>773889
28 Кб, 1351x313
Dmitriy #202 #773889
>>773884
И чего еще может не хватать?
Я конечно еще тот неосилятор, но с этим пакетом вроде все в норме.
#203 #773890
А вообще ты неймфаг, так что иди нахуй. Вот что.
Dmitriy #204 #773895
>>773888
Спасибо антоша
-ltinfo
Помогло.
Нормальный мейкфайл? Dmitriy #205 #773910
CC = gcc
OBJS = main.o utils.o kernel.o
CFLAGS = -std=c11 -O2 -march=native -pipe
LIBS = -lpthread -lncurses -lm -ltinfo
TARGET = ttytanks

$(TARGET): $(OBJS)
$(CC) $(OBJS) -o $(TARGET) $(LIBS)
all: $(TARGET)
clean:
rm $(OBJS) $(TARGET)
>>773912
sage #206 #773912
>>773910
Либы суют в LDLIBS

При линковке добавляют LDFLAGS

rm -f, чтобы не верещал, когда файлов нет.
>>773925
Dmitriy #207 #773925
>>773912
Поебался с ним, а он все верещит. Пусть верещит, хоть выхлоп понятный будет.
CC = gcc
OBJS = main.o utils.o kernel.o
CFLAGS = -std=c11 -O2 -march=native -pipe
LDLIBS = -lpthread -lncurses -lm -ltinfo
TARGET = ttytanks

$(TARGET): $(OBJS)
$(CC) $(OBJS) $(CFLAGS) $(LDLIBS) -o $(TARGET)
all: $(TARGET)
clean:
rm $(TARGET) $(OBJS}
>>774148
#208 #774002
>>774008
#209 #774008
>>774002
Вы ошиблись тредом.
#210 #774041
>>773873
чё у тебя за пидорский редактор на пике
>>775060
#211 #774148
>>773925
В каком плане верещит?
>>774666
#212 #774269
Си это же обёртка над ассемблером? Как написать свою ось? Вот написал я хеллоуворлд, скомпилировал в бинарник. Как сделать, чтобы при включении пеки она отображалась?
>>774337>>774354
#213 #774337
>>774269
тебе предстоит долгий путь...
#214 #774354
>>774269

>Как сделать, чтобы при включении пеки она отображалась


все просто, тебе нужно поместить его в определенный сектор диска который считывается биосом при загрузке, потом просто скопируешь строку в видиопамять и все
#215 #774401
Допустим, есть один мультиплеерный рогалик на 5 рыл.
Каждому из клиентов нужно отсылать каждую сек пакеты с обновленными координатами соперников и все такое.
Вот только я не пойму, по идее для каждого клиента нужно иметь свой поток? Или же как в данном случае поступают?
Либо же просто выделить отправку пакетов и прием в тред, отстраненный от остального игрового цикла?
>>774434>>774454
#216 #774434
>>774401
Если тебе заведомо хватает производительности одного ядра, то лучше вообще с потоками не заморачиваться. Почти любую хуйню проще сделать в одном потоке. Но даже если писать с потоками, то по потоку на клиента это в любом случае хуита.
>>774439
#217 #774439
>>774434
Понятно. Пожалуй, просто сделаю один поток на всех, чтобы получение/отправка не шароебилось среди остального говна.
#218 #774454
>>774401
еще udp пакетами клиентам ебаш
>>774461
#219 #774461
>>774454
Чому не тисипи? Все-таки желательно проверять доставку.
>>774469
#220 #774469
>>774461
жрет много, ну и если другие сделали ход, а с тисипи еще в процессе подтверждения? это типа риалтайм же?
#221 #774472
з.ы. проще засчитывать проеб клиенту по таймауту
>>774478
#222 #774478
>>774472
По таймауту чего?
>>774484
#223 #774484
>>774478
ну бля, тисипи тебе не гарантирует время доставки, нужно время принятия решения, вообщем подумай над этим
>>774519
#224 #774486
з.ы. а рогалик это чтото для пидоров?
#225 #774519
>>774484
Окей. Щас в интернетах почитаю примеры.
>>774528
#226 #774528
>>774519
дава, потом раскажешь, мы подрочим
>>774598
#227 #774598
>>774528
На что? На селфи палку?
>>774610
#228 #774610
>>774598
на тисипи и юдипи, глупыш
#229 #774630
что читать если не смог осилить k&r?
#230 #774639
>>774630

> k&r


нахуы ты эту парашу вообще читал?
>>774661
#232 #774661
>>774639
ну типо классика, вроде советовали ее и говорили самая годная
>>774670
#233 #774662
>>774654
зочем?
Dmitriy #234 #774666
>>774148
Что файлов нет, когда их нет)
#235 #774670
>>774661
нужно быть педагогом, короче начни с Праты
#237 #774675
>>774672
там легче чем в k&r?
>>774677>>774678
#238 #774677
#239 #774678
>>774675
Не )
>>774681
#240 #774681
>>774678
так что тогда читать?
>>774683>>774751
#243 #774755
>>774751
Если его хейтят, то что еще кроме K&R есть?
>>774767
#244 #774767
>>774755
Оппост же.
>>774773
#245 #774770
>>774751
Согласен, говно. Это был стёб, как и отсылка к glibc manuals
>>774802
#246 #774773
>>774767
там годного вроде ничего больше нет
>>774805
#247 #774802
>>774770
Чего ж glibc manuals не почитать, в мануалах много полезного пишут. Дреппер про память годно рассказывал http://lwn.net/Articles/250967/

Что человек он нелегкий - то кто из нас сахар
>>774808
#248 #774805
>>774773
Пратту прочитал? Линдена прочитал?
#249 #774808
>>774802
Стёб в смысле отсылать учиться по этим двум источникам.

А когда ты уже не нуб, то и learnthehardway почитать невредно.
>>774809>>774812
#250 #774809
>>774808
Когда ты уже не нуб, тебя от Зеда уже давно тошнит еще с его рельсоизрыганий.
#251 #774812
>>774808
Раньше учились по манам, когда энторнетов не было, получалось лучше чем сейчас.
#252 #774838
>>770283 (OP)
Почему функции принимают аргументы типа в "void звездочка", только для того чтобы привести их потом к нужному типу? 88 строка, например.
http://pastebin.com/79ZNZJpx
>>774888
#253 #774888
>>774838

> Почему функции принимают аргументы типа в "void звездочка"


Потому что event_new() требует колбэка с такой сигнатурой.
>>774981
#254 #774981
>>774888
Почему он требует колбэка с такой сигнатурой если первой же строчкой приводит его тип к указателю на одну конкретную структуру, без вариантов?
>>775014
#255 #775014
>>774981
event_new принимает функцию (колбэк), которая принимает указатель на void. Делает она так потому, что вместо do_accept в нее могла бы быть передана любая другая пользовательская функция с такой же сигнатурой (в этом суть колбэков). В данном случае do_accept принимает указатель на struct event_base, но другая функция могла бы принимать указатель на другой тип. Ну и вот чтобы позволить функции event_new принять и затем передать в колбэк указатель на произвольный тип (такой, какой нужен конкретному колбэку), на месте этого типа и используется указатель на void.

Алсо, лучше бы ты спросил, для чего каст вот в этой вот строчке:
listener_event = event_new(base, listener, EV_READ|EV_PERSIST, do_accept, (void*)base);
Потому что хз зачем он там.
>>775016
#256 #775016
>>775014
Компилятор у автора ворнингами ругался при -Wall, вот и вставил каст.
>>775022>>775119
#257 #775022
>>775016
Интересно, у меня ни gcc -Wall -pedantic ни clang -Weverything -pedantic в таких случаях не ругаются.
>>775038
#258 #775038
>>775022
Автор мог злоупотреблять тяжелыми линтами и валграйндами
>>775058
#259 #775058
>>775038
Код без каста абсолютно валидный, ругаться там не на что.
>>775062
#260 #775060
#261 #775062
>>775058
Многие писатели линтов и валграйндов, не говоря уж о коммерческих статических анализаторах кода, понимают свою задачу не в том чтобы послать нахер, потому что стандарту не противоречит, а в том чтобы указать на все места, где может быть программист допустил ошибку, потому что это место похоже на типичные ошибки, которые программисты допускают.
>>775100
#262 #775100
>>775062
Все это так, но в чем же типичная ошибка при передаче типизированного указателя вместо указателя на void?
#263 #775103
Как перестать быть хеллоувордщиком? Я даже задачу себе не могу придумать.
>>775104>>775105
#264 #775104
>>775103
Напиши смс-центр.
#265 #775105
>>775103
Купи ардуину и дрочи в присядку.
#266 #775119
>>775016
В C преобразование любого указателя к указателю на void и обратно допустимо без всяких кастов.
>>775129
#267 #775129
>>775119
Но, кстати, при этом преобразование указателя на функцию, скажем такого:
int (∗f1)(struct xy ∗arg)
к такому:
int (∗f2)(void ∗arg)
недопустимо вообще.
Вопрос: разве это не бага в языке? Зачем так сделано? Раз уж разрешили неявное преобразование (void ∗) в другие указатели, то почему не разрешили преобразование таких указателей на функции?
>>775134
#268 #775134
>>775129

>Вопрос: разве это не бага в языке?


нет.
>>775135
#269 #775135
>>775134
Тогда поясни пожалуйста, для чего так сделано? В чем практический смысл? А то уже давно меня мучает этот вопрос.
>>775137>>775144
#270 #775137
>>775135
Что сделано? Неявное преобразование? Чтобы malloc-ом пользоваться и прочими memcpy
>>775140
#271 #775140
>>775137
Отсутствие преобразования (хоть явного, хоть неявного) такого указателя int (∗f1)(struct xy ∗arg) к такому int (∗f2)(void ∗arg). Учитывая тот факт, что преобразование struct xy ∗arg к void ∗arg разрешено, и даже может производиться неявно.
>>775156
#272 #775144
>>775135
Этот язык вообще один большой баг. Один только алиасинг чего стоит. Ты еще спроси, почему функции f1 и f2 несовместимы, если у одной параметр - указатель на struct foo { int a; }, а у другой - указатель на struct bar { int a; }.
41 Кб, 576x463
#273 #775146
>>775144

>Этот язык вообще один большой баг.

>>775158
#274 #775147
>>775144

>Ты еще спроси, почему функции f1 и f2 несовместимы, если у одной параметр - указатель на struct foo { int a; }, а у другой - указатель на struct bar { int a; }.


Очевидно, потому что у структур разные теги.
>>775158
#275 #775156
>>775140

>int (∗f1)(struct xy ∗arg) к такому int (∗f2)(void ∗arg)


Потому что функция хочет принимать именно указатель на struct xy, а не что-то другое.
>>775186
#276 #775158
>>775146
Ты отрицаешь очевидное. Например,

>>775147
А вот и нихуя. Если определения структурок видны полностью на момент вызова - функции совместимы, можно объявлять указатель int (∗ptr)(struct bar ∗) и вызывать по нему обе функции. А вот если на момент вызова одну из структурок не видно, функции уже магически перестают быть совместимыми, скастить f1 к ptr можно, а вызывать уже нельзя.
>>775161
#277 #775161
>>775158

>А вот и нихуя.


Что "нихуя"? foo и bar это не разные теги?
>>775163
#278 #775163
>>775161
Структуры с разными тегами тоже могут быть совместимыми.
>>775166
#279 #775166
>>775163
В стандарте сказано, что не могут. Я больше верю стандарту, чем анонимному хуйлу с бредом реформаторства.
>>775168
#280 #775168
>>775166

> в стандарте сказано


Сказано. C11 6.2.7 же:

> If both are completed anywhere within their respective translation units,


> then the following additional requirements apply: there shall be a


> one-to-one correspondence between their members such that


> each pair of corresponding members are declared with compatible types


> ...

>>775174>>775219
#281 #775174
>>775168
Угу. А перед этим предложение

> If one is declared with a tag, the other shall be declared with the same tag

#282 #775186
>>775144

>Ты еще спроси, почему функции f1 и f2 несовместимы, если у одной параметр - указатель на struct foo { int a; }, а у другой - указатель на struct bar { int a; }.


Ну, по крайней мере
struct foo x = {99};
struct bar y;
y = x;
тоже выдаст ошибку. В случае же с указателем на void, указатели преобразовываются без проблем, но почему-то только если они не в составе указателей на функции.

>>775156
А когда я пишу struct xy ∗ptr = malloc(sizeof(struct xy) ∗ 10);
ptr хочет принимать в себя только указатель на struct xy, а не что-то другое? Нет, тут для void сделано исключение.
В случае же, если этот указатель на void является частью типа указателя на функцию, это исключение уже не работает. Особого практического смысла я в этом пока не вижу, а вот минусы есть: например, менее удобно реализовывать подобие интерфейсов из ООП. Так вот, почему бы это в очередном стандарте не исправить, разрешив преобразование указателей на функции, если типы всех их аргументов друг в друга преобразуются? Ведь даже с обратной совместимостью никаких проблем не будет.
>>775197>>775198
115 Кб, 256x192
#283 #775197
>>775186
Ты пытаешься найти логику в Си?

http://pastebin.com/UAQaWuWG
>>775210
#284 #775198
>>775186

> тут для void сделано исключение.


Для него не делали исключение. Указатель но void специально ввели, чтобы возвращать из malloc-а или принимать в memcpy.
>>775210
#285 #775210
>>775197
Ну, при принятии очередного стандарта, когда что-то (не) изменяют в языке, какой-то логикой наверно при этом руководствуются? Я надеюсь.

>>775198
Но почему бы тогда таким же образом не ввести правило, чтобы можно было без проблем присваивать указатели на функции, если списки аргументов у них отличаются только тем, что в одном случае аргумент указатель на void, а в другом – указатель на какой-то полный тип? Все равно ведь это ограничение легко обходится с помощью функции-обертки (и при этом по стандарту, не вызывая UB), так почему бы не избавить программистов от лишнего бойлерплейта?
>>775212
#286 #775212
>>775210
Это новая мода — троллинг тупостью?
>>775223
#287 #775219
>>775168
И вообще, зачем ты полез в раздел про определения типов в различных translation unit. В стандарте есть место, где совсем явно сказано, что если разные теги — то это разные типы.
#288 #775223
>>775212
Я не знаю, где ты тут видишь троллинг или тупость. Вызов функции, принимающей (по факту) указатель на некий тип, через указатель на функцию, принимающую указатель на void является повсеместной практикой (те же коллбэки, ООП), без которой нормальное программирование на C было бы невозможным. Я задался вопросом, по какой именно причине связанные с этими практиками неудобства еще не пофикшены в стандарте? Эти причины пока никто толком не смог объяснить.
>>775280
#289 #775280
>>775223
http://www.open-std.org/jtc1/sc22/wg14/
Ну накатай им свои претензии. Будто цель твоих постов не троллинг
>>775317
#290 #775317
>>775280
Ладно, ты меня раскусил.

Смотрите, что нашел только что:
http://loci-lang.org/LanguageGoals.html
Кто-нибудь что-нибудь знает про эту хуйню?
sage #291 #775517
Уже обсуждали очередную попытку Microsoft испортить язык? https://github.com/Microsoft/checkedc/releases/download/v0.5-final/checkedc-v0.5.pdf
>>775838
#292 #775801
Посоны, экспресс вопрос:
приведение переменной к void
uint32_t temp =0;
(void)(temp);
освободит ее место?
>>775805
#293 #775805
>>775801
Конечно нет.
>>775810
#294 #775810
>>775805
А в чем тогда смысл такого каста?
>>775816
#295 #775816
>>775810
Если у тебя в программе есть переменная, но по каким-то причинам ты временно её не используешь, компилятор будет выдавать warning'и, что типа у тебя лишняя переменная. Если кастануть такую неиспользуемую переменную в void, то компилятор заткнется. А во время компиляции оптимизатор может потом ее и выкинуть в общем-то.
#296 #775838
>>775517
А уже есть люди, которые уже перекатились на С11?
Мне казалось, что как ни крути рулетку, дрочка на С89 никуда не денется.
>>775850>>776198
#297 #775850
>>775838
Что значит "перекатились"?

"Программистов на одном языке" было мало, теперь еще и "программисты на одной версии одного языка" появились?
>>775856
#298 #775856
>>775850
Не, в смысле используют новые фичи. Анонимные структуры там, многопоточность в стандартной поставке, более фичастный юникод. Хотя многим приложениям нафиг многопоточность не нужна. Да и в гуестроении своя атмосфера.
В общем энивей MS в этом документе усложняет язык, делая этакий С++ Lite, а это нафиг не нужно.
#299 #775860
>>775856
По сравнению с тем сколько MS всего с С++ сделала, сишникам еще повезло.
С++ Managed, C++ CLI, что там еще было?
#300 #775864
>>775860
Хз, на крестах не писал никогда.
>>775922
#301 #775901
>>775860
CLI и Managed это разве не одно и то же?
>>775921
#302 #775921
>>775901
Одно, но не совсем, иначе это был бы не MS

> Новый набор изменений называется C++/CLI и полностью поддерживается Visual Studio 2005. Таким образом Managed C++ считается устаревшей спецификацией, и код, написанный таким образом, рекомендуется переписать.



То что я сразу не вспомнил называется C++ CX
>>775929
#303 #775922
>>775864

> "Программистов на одном языке" было мало

>>775961
#304 #775929
>>775921
Все равно, что новомодный CX, что CLI, почти не используются, для C/С++ сейчас все используют Qt
#305 #775961
>>775922
Я не слежу, что там в инфраструктуре C++ разработки под винду происходит.
Вот в сишке все просто. Есть autotools, есть cmake, есть meson из систем сборки. Из gui gtk и efl. Ну и до кучи либ для тестирования, производительных серверов, различные бд, вот это вот все.
sage #306 #776198
>>775838

> А уже есть люди, которые уже перекатились на С11?


Да. У нас на работе новые проекты на C11, старые на C99, а на C89 только форкнутый опенсорс.
>>776408
#307 #776223
>>775856

> Анонимные структуры


Как расширение GNU, все, кому надо было, использовали задолго до C11

> многопоточность в стандартной поставке


По стандарту опциональна. И никто не поставляет, ни MS, ни GNU. Да и нахуй не нужны C11-треды при живых pthreads.

> более фичастный юникод


Хуичастый. Нормализация есть хоть в твоём "фичастом"?
>>776245>>776266
sage #308 #776245
>>775856
>>776223
Только не пойми неправильно. Я осознаю, что стандартизация часто это закрепление сложившейся практики. Это и было в случае с C11 (да и 99 тоже). Большая часть новых "фич" уже давно были реализованы в расширениях.

В этом радикальное отличие от выхода стандарта C++11.
#309 #776262
Что вписать в а чтобы иф срабатывал?
http://ideone.com/sNY8Da
>>776295>>776352
#310 #776266
>>776223

>pthreads


Которые в Линупсе через Дреппера сделаны.
>>776268>>777716
sage #311 #776268
>>776266
Сказать-то что хотел?
#313 #776325
>>776295
Там много читать. Лучше скажи как узнать правильное значение а при котором иф будет работать.
>>776371
#314 #776352
>>776262

> float b


> b == 3.141593



H@H@H@
>>776355
#315 #776355
>>776352
Вижу. Сажи как исправить
#316 #776371
>>776325
В общем случае ты не можешь сравнить два float, но ты можешь удостовериться, что они отличаются не более чем на некоторое число. Это число зависит от задачи. Вспоминай школу - округление, приближенные вычисления, погрешность - вот это все. И втыкай, ну хотя бы if (fabs(b - 3.141593) < 1.0f) printf("В военное время значение пи может достигать четырех\n");
#317 #776408
>>776198

>проекты


в /pr нада писать "проЭкты", баран
>>776445
#318 #776412
>>775860
сейчас есть расширение с++ для более удобной работы с winrt и uwp
sage #319 #776445
>>776408
Так это ж не мои прожекты.
#320 #776865
Как конпелировать с Clang-LLVM на винде, не имея при том всего скама вроде цугвина, мингв, тдм-гцц, и.т.д, чтобы чистый Clang-LLvm с его либой под венду
>>776901>>777000
#321 #776901
#322 #777000
>>776865
никак
либо с мингв
либо в vs2015 ставишь фронэнд шланга, а бекенд будет майкрософт
#323 #777152
котаны, нужно перенести в условие цикла, есть:

while (1) {
if (a||b||c) break;
}

получаю

while (!(a||b||c)) {
}

так вот, в первом случае, если а истино, то условие остальной части не проверяется, а вот во вторм случае, чета не пойму...
#324 #777153
>>777152
з.ы. типа равно оно while(!a&!b&!c) что не оптимально
>>777159>>777164
#325 #777159
>>777153
Вполне оптимально (только &&, а не &, чтобы лениво было). Скорее всего, даже скомпилится в тот же самый код, как и с if (...) break.
>>777167
#326 #777163
>>777152

>while (1)


Пиздец.
#327 #777164
>>777152
>>777153

Не & а &&.
Что неоптимально тебе?
>>777167
#328 #777167
>>777164
>>777159
очепятка, но с логическим И нужна проверка всех условий, а в случае с ИЛИ не всех. и да, на конпелятор не хочу надеятся, нужно что бы логика была наглядной
>>777173
#329 #777173
>>777167
Это ты тут недавно switch() оптимизировал?

> с логическим И нужна проверка всех условий


Чушь собачья. Первое же встреченное ненулевое значение превратится в нулевое, и справа && уже ничего вычислять не будет.

Алсо, да, я был прав. Даже древний компилятор из Visual Studio 6.0 собирает из этих двух вариантов абсолютно идентичный (совпадает до последнего бита!) код.
#330 #777176
Привет, ребят.
Перевожу проект на vcc14, столкнулся с проблемой. Есть функция, которая считает количество использованной приложением памяти. Вот часть кода:

http://pastebin.com/qHBEcKQZ

По итогу, оно входит в infinite loop на HeapWalk, и каждый раз записывает одно и то же значение в heapinfo. Может, кто знает, в чем может быть проблема?
>>777188
#331 #777179
>>777173
ага и нашел недочеты, битовая версия дает пасасать
>>777185
#332 #777181
>>777173

>Первое же встреченное ненулевое значение превратится в нулевое


похоже на то
#333 #777183
>>777173

>древний компилятор из Visual Studio 6.0


Он уже был очень хороший.
Вот Microsoft QuickC 2.x тебе бы наоптимизировал.
>>777188
#334 #777185
>>777179
Ты подписывай свои сообщения уже.
Можешь псевдонимом "ЯлублуВатком"
>>777186>>777195
#335 #777186
>>777185
зачем?
>>777191
#336 #777188
>>777183
Максимум была бы разница в JZ/JNZ.

>>777176
На реальном проекте тестируешь? Повреждение кучи уже исключил?
>>777197
#337 #777191
>>777186
Чтоб душевных сил на тебя не тратить за явной бесперспективностью диалога.
>>777192
#338 #777192
>>777191
не трать, можешь даже сходить нахуй.
#339 #777195
>>777185

>ЯлублуВатком


да и ты не привел слив Ваткома перед GCC
>>777208>>777456
#340 #777197
>>777188
На реальном.
Пытаюсь разобраться. Знаю, что скорее всего, повреждение будет из-за того, что указатель где-то приводится не к uintptr_t, а к int, но хз, где именно.

Вообще, легаси - говно. Хуй знает, как обнаружить повреждение.
>>777209
311 Кб, 478x359
#341 #777208
>>777195

> не трать


>да и ты не привел


Не буду.
>>777215
21 Кб, 536x558
#342 #777209
>>777197
Собрать гцц c -fsanitize=address нереально? Тогда остается gflags. Какие галки ставить, сам разберешься.
#343 #777215
>>777208

>Не буду.


вот и правильно, гцц то уже не спасти.
102 Кб, 757x579
#344 #777439
Ура. Я нашел тред про С. Не буду вас томить. а сразу спрошу - что за херню от меня требует компилятор?
#345 #777456
>>777195
Нахуй кому-то делать ради тебя что-то? Ватком развивался мелкой командой и давно заброшен, GCC живёт и развивается гигантским коммунити, и там уже не первый год идёт рефакторинг – код не ухудшается день ото дня как ты предполагаешь.
>>777510
#346 #777510
>>777456

>Нахуй кому-то делать ради тебя что-то


ты же должен признать, что обосрался. ватком заброшен верно, но и даже такое старье не проигрывает живущему и развивающемуся гигантским коммунити гцц, выволд - гцц делают уебаны
>>777541
#347 #777515
>>777439
инвалид поинтер инициалазер
#348 #777516
>>777439
Объявление disp_hardware_t покажи.
И покажи что такое DISP_D4_PORT.
>>777525>>777528
#349 #777525
>>777516
typedef struct
{
GPIO_TypeDef *port;
GPIO_Pin_TypeDef pin;
} disp_hardware_t;
>>777537
#350 #777528
>>777516

> что такое DISP_D4_PORT.


#define DISP_D4_PORT GPIOC
#351 #777537
>>777525

>GPIO_TypeDef *port;


Звездочка ни на что тебе не намекает?

> #define DISP_D4_PORT GPIOC


Теперь тоже самое для GPIOC
>>777550
#352 #777541
>>777510
В чем оно не проигрывает-то? Не поддерживает и 10-й части платформ GCC? Не имеет выборной поддержки любого стандарта, причём даже с расширениями? Сасай по оптимизации?

Блять, ну лол, он выигрывает только в твоём слабоумном мозгу.
>>777558
#353 #777542
>>777439
Ламповый ИАР. Как же я его ненавижу!
>>777550
#354 #777550
>>777537
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)

#define GPIOC_BASE (uint16_t)0x500A

>>777542
STVD+Cosmic

Если бы я еще был бы программистом, то сам бы разобрался, а так как я криворукий уебан - приходится вот вас мучить.
>>777562
#355 #777558
>>777541

>Сасай по оптимизации?


давай пруфы
>>777568
#356 #777562
>>777550

>STVD+Cosmic


Это же ещё хуже!
Stm8 чтоли, раз такой больной выбор IDE?
>>777720
#357 #777568
>>777558
Давай лучше ты. Я вот не верю что твоё засохшее говно выиграет топовый компилятор в таком сражении.
>>777578
#358 #777578
>>777568
я уже выкладывал, ходя там есть интересные недочеты
#359 #777716
>>776266

>>pthreads


>Которые в Линупсе через Дреппера сделаны.


Как будто C11-threads не поверх pthreads будут сделаны.
#360 #777720
>>777562
Ага, она родимая. Разобрался, файл с дефайнами забыл включить. Спасибо всем ответившим.
#361 #777814
>>770283 (OP)
Ну-ка быстро объяснили мне! Правильно так
#define YOBA 1
или так
const int YOBA = 1;
?
Я слышал, что типа во втором случае может быть выделена память и создана переменная, поэтому он сосет. Так ли это?
#362 #777826
>>777833
Самый важный выбор в моей жизни #363 #777829
Что мне ставить Cygwin или Mingw?
>>777830>>777838
#364 #777830
>>777829
Убунту на виртуалку накати.
>>777837
#365 #777833
>>777826
А тут какие-то петуханы говорили, что #define для констант использовать нельзя. Почему?
#366 #777836
>>777814
В первом случае препроцессор на этапе компиляции подставит вместо йобы литерал, и его использование будет бесплатным (ничего нигде не надо выделять). Во втором случае, если не брать в расчёт оптимизации компилятора, то на стеке появится переменная i, равная 1.
>>777839
#367 #777837
>>777830
Почему нельзя попердолится с цугвином или мингв?
>>777841
22 Кб, 429x375
#368 #777838
>>777829
В десятке называется "подсистема Linux" и включается так:
https://habrahabr.ru/company/eset/blog/281418/
>>777844>>777846
#369 #777839
>>777836
А если так const register int YOBA = 1?
#370 #777841
>>777837
Зачем городить костыли, если есть нормальное решение?
Хочешь удобства линукс но без линукс?
#371 #777842
>>777839
Компиляторы очень вольно обращаются с модификатором register.
#372 #777844
>>777838
А там можно gcc накатить?
>>777848
#373 #777846
>>777838
Кстати, там есть GCC и Make. Получается, что Microsoft вертит Штульмана на хую? Ведь по GPL нельзя использовать GPL софт в качестве компонента для несвободной системы.
#374 #777848
>>777844
Он там есть. Еще make, vi, возможно еще какие-то утилиты из Линукса.
#375 #777850
>>777846
Всем поебать на GPL и прочие недоразумения
>>777855>>777869
#376 #777852
>>777839
Однохуйственно. register лишь даёт рекомендацию компиляторам (которые, тащем-та, давно уже задрочились класть хуй на рекомендации и делать заебись автоматически) хранить переменную в одном из регистров. Напротив, если она не хранится в регистре, значит, она (или указатель на неё) хранится на стеке, а указатель на вершину стека -- в регистре.
#377 #777855
>>777850
"ШВАБОДКА!" раздался пронзительный голос со стороны FSF...
#378 #777867
>>777839
слишком по петуховски, есть божественные дефайны, бесплатно и без смс
>>777882
#379 #777869
>>777850
но как... ращве гпл питухи не отстаивают свою права в суде? развели бы мелкопидоров на кучу лямов
>>777885
#380 #777872
>>777846
Никто им не мешает выложить исходники линуховой подсистемы, что они и сделают. Она не слинкована статично с вендой, так что все ок.
>>777885
#381 #777882
>>777867
Просто неоднократно слышал, что #define это ТИП НИПРАВИЛЬНА и нужно через const. Почему - не объясняют. Я всегда константы объявлял дефайном, не вижу в этом ничего плохого.
>>777887
#382 #777883
кста, я вот пилю свой проджект и хочу его открыть, а в дальнейшем и монетизировать, но я не хочу что бы проприетарные пидоры его или часть кода бесплатно использовали в своих продуктах, как мне его залецензить, чтобы не пасасать?
>>777891
#383 #777885
>>777872
Это верно для LGPL, а GCC и Make под GPL.

>>777869
Вот и непонятно, куда они смотрят? В Mac OS X кстати раньше тоже использовался GCC (сейчас сменили на Clang).
>>777893>>780166
#384 #777887
>>777882
тебе уже объяснили преимущество дефайнов, всегда есть адеты и хейтеры
#385 #777891
>>777883
Двойная лицензия, как раньшу у Qt: GPL/коммерческая. Проприетарщикам придется отстегивать бабло либо открывать свой собственный код.
>>777896>>777897
#386 #777893
>>777885

>Вот и непонятно, куда они смотрят


может мелкософт занесла котлету главарям гпл, а макакам как всегда
>>777899
#387 #777896
>>777891
Пиздишь как Троцкий.
>>777906
#388 #777897
>>777891
но кьют вроде же статическую линковку не позволяет в комерческих проектах. и да, есть ли шаблон лицензии? я один хуй ее с нуля не напишу
>>777901>>777906
#389 #777899
>>777893
Разве дедушка Штульман может продаться проприетарщикам? Он же не такой!
#390 #777901
>>777897
Кьют идет по LGPL, что значит - ты обязан обеспечить возможность ковырять/изменять/изучать кьют в проге. Проще всего это добивается динамической линковкой - кьют это dll/so шки, но в принципе - ты можешь сделать и статику, но тогда сам ебись с механизмом, которым ты сможешь обеспечить это требование.
#391 #777906
>>777897
За бабло позволяет. У них двойная лицензия, либо покупаешь, либо LGPL (раньше была GPL).

>>777896
https://en.wikipedia.org/wiki/Qt_(software)
https://www.qt.io/licensing/
>>777907>>777908
#392 #777907
>>777906

> либо LGPL


LGPL не обязывает проприетарщиков открывать свой код.
>>777909>>777916
#393 #777908
>>777906
ну за бабло то понятно, вот в линковке там вся и разница, как я понял
#394 #777909
>>777907
там помойму все открытые лицензии нихуя пропреитарщиков ничем не обязывают, для этого гитхаб и придумали, что бы залез, скопипастил половину, вставил в свой проект и продал, а авторам гитохуй
>>777913
#395 #777913
>>777909
Большой кусок частично не скопипастишь - заебешься.
>>777922
#396 #777916
>>777907
Раньше была просто GPL.
>>777920
#397 #777920
>>777916
Это было очень сильно раньше, как бы вообще не до 4й ветки.
>>777924
#398 #777922
>>777913
ну я том, что не зря этот гитхаб так навязывают
#399 #777924
>>777920
На Qt4 сменили.
>>777928
#400 #777928
>>777924
Нагуглил уже - на 4.5 добавили, в 2009м. Короче, 8 лет назад.
Вот тогда Qt то и взлетел, чтоб за пределами линупса и кед.
#401 #777934
>>777846

> Ведь по GPL нельзя использовать GPL софт в качестве компонента для несвободной системы.


Это какая-то GPL из твоего манямирка.
>>777936
#402 #777936
>>777934
Ну, тащемто он прав, не?
GPL обязывает открывать сорцы проги, которые изают GPL-код. Она же вирусная.
>>777938
#403 #777938
>>777936
Ну так там ставится софт из убунту-репозиториев, для которого все исходники есть.

А драйверы в ядре и проч. для поддержки запуска этого софта GPL-сырцов не используют.
>>777943>>777948
#404 #777943
>>777938
Ты не понел. Ты не можешь написать прогу и не открыть ее код, если она использует GPL либу.
(То есть конечно можешь, но это будет нзаконно). И насрать, на то что чужие исходники ты приложил - ты обязан выложить и свои, или не использовать. В этом вся суть GPL.

Не устраивает - покупай проприетарь, линкуй динамически с LGPL, или ищи BSD (в которой хоть дрочи вприсядку - никаких ограничений)
>>777947
#405 #777947
>>777943
И к чему ты это всё написал? Где нарушение GPL при запуске линуксовых прог под виндой?
>>777952
#406 #777948
>>777938
Разве драйверы не динамически линкуются?
>>777950
#407 #777950
>>777948
Ну можно и так сказать.
Только линкуются они с ntoskrnl
#408 #777952
>>777947
Ты дебил чтоле? У линуксовых прог - код открытый.
>>777954
#409 #777954
>>777956
#410 #777956
>>777954
Хуи, блять.
Винда запускает БИНАРЬ, и КОД никаким образом их не использует.

А вот выдрать кусок ядра линукса - например сетевой стек - и вставить в код винды - ты не можешь.
(Поэтому в винде сетевой стек спиздили из BSD)
>>777959>>777962
#411 #777959
>>777956
Пиздец ты долбоёб. Нахуй ты мне объясняешь, что нарушения GPL нет, когда я с этим не спорю.
>>777960
#412 #777960
>>777959
Это ты долбоеб. Ой все, уебывай, больше не кормлю.
>>777985>>778780
#413 #777962
>>777956

>(Поэтому в винде сетевой стек спиздили из BSD)


пруфов, конечно, нет
#414 #777985
>>777960
Т.е. нарушений GPL нет.
#415 #778440
Ваш срач услышан в шапке

> Компания Red Hat объявила об изменении лицензии на DLL-библиотеку Cygwin, эмулирующую базовый Linux API в Windows и позволяющую с минимальными изменениями собирать созданные для Linux программы. Вместо лицензии GPLv3+ библиотека отныне распространяется под лицензией LGPLv3+, которая позволяет связывать код с приложениями под любыми лицензиями, в том числе с проприетарным ПО.



> Кроме того, Red Hat отказывается от поставки коммерческой лицензии на Cygwin, так как LGPL позволяет обойтись без лицензионных исключений, и больше не будет требовать от разработчиков, присылающих изменения в Cygwin, подписания соглашения о передаче имущественных прав на код. Соответственно процедура участия в разработке существенно упрощается и лишается бумажной волокиты, отпугивающей многих разработчиков.



> Одновременно доступен выпуск Cygwin 2.5.2, в котором отражено изменение лицензии и прекращена поддержка Windows XP и Windows Server 2003. Изменение лицензии произведено только для библиотеки, утилиты и другие компоненты пакета Cygwin (cygserver, cygpath, regtool и т.п.) остались под лицензией GPLv3+.

#416 #778470
>>770283 (OP)
Анонище, расскажи, что ты пишешь на сишке? Или хочешь написать?
>>778508
#417 #778499
>>778440
У цугвина способ другой. Там перекомпиляция требуется специально под cygwin, а в десяточке сделали трансляцию системных вызовов, что позволяет просто брать бинарь с его окружением и запускать, не рассказывая, что ядро не его родное.
#418 #778508
>>778470
Ну, например на прошлой неделе написал несложное ESME для использования в одном проекте на работе (работаю не программистом, но иногда что-то такое пилю), в свободное время потихоньку пишу свой игровой движок.
Что писать мне без разницы, главное, чтобы у этого в итоге было хоть какое-нибудь применение.
>>778703
sage #419 #778536
>>777846

> Ведь по GPL нельзя использовать GPL софт в качестве компонента для несвободной системы.


Ты не понял, что в GPL подразумевается под "компонентом системы". Программы, которые ты ставишь на винду — это не компоненты винды.

Тем более, что microsoft не распространяет софт. Он подтягивается из убунтовых репов.
sage #420 #778539
>>778440
Лол. Красношляпые поняли, что их платная цацка теперь нафиг не нужна с появлением подсистемы Linux в Windows. И стали раздавать её бесплатно всем, а не только опенсорсу.
#421 #778703
>>778508

>Что писать мне без разницы, главное, чтобы у этого в итоге было хоть какое-нибудь применение.


два чаю
#422 #778780
>>777960
Всё никак не могу догнать эту разницу между LGPL и GPL.
Есть библиотека. Распространяется по LGPL. Можно мне её использовать в своём платном приложении с закрытым исходным кодом и если можно то как?
>>778788
#423 #778788
>>778780
наверное так же как и все остальные поступают, линкуешь и молчишь
92 Кб, 662x620
#424 #778922
Я вам мемес принес.
>>778928
19 Кб, 310x201
#425 #778928
>>778922
Последняя неправильная
>>778939
#426 #778939
>>778928
Хипстеры же. Такие же как сейчас на NodeJS хуякают.
Хуя-хуяк и в продакшн.
Недоязык, недоОС.
>>778942
#427 #778942
>>778939

> Недоязык


Мне, простому колхознику, и этот недоязык силов не хватает понять.
>>778999
#428 #778951
>>778440
Суки, ЭксПи не пожалели.
:(
#429 #778999
>>778942
Для колхозников есть Delphi.
>>779009
#430 #779009
>>778999
Иди нахер, назло тебе Си выучу.
>>779012
#431 #779012
>>779009
Delphi один раз выучил, и за вечер клепаешь автоматизацию автосервиса, получаешь бабло.
А к Си тебе придется еще учить C++, потом Qt, потом SQLite, потом месяц с этим всем пердолиться, а результат такой же.
>>779013
#432 #779013
>>779012
Мне одного Си хватит. Я чтоб с контроллерами пердолиться.
>>779066
#433 #779066
>>779013
Для этого Си не надо знать. Битшифтики, ножку 11 поднял, два байта в порт 22 переслал.
>>779083
#434 #779083
>>779066
Интересные у тебя представления об этой сфере.
>>779086>>779123
#435 #779086
>>779083
Ардуинщик наверное.
63 Кб, 500x681
#436 #779105
>>770283 (OP)
У меня есть значение цвета в виде INT. У меня есть значение сдвига цвета, тоже в виде INT. Т.е. загружая палитру, я выполняю такой кусок кода:
for (i = 0; i < palette_size; i++) vram_palette = rom_palette + shift;
Как сделать так, чтобы цвет с нулевым значением так и оставался нулевым, без сдвига? Обыкновенный IF мне кажется слишком медленным, как и такая хуита:
sign = (color > 0) — (color < 0);
color = color + shift * sign;
>>779106
#437 #779106
>>779105
Блядь, макаба форматирование пожрала. Вот на пастебине, короче:
http://pastebin.com/tVQTdWk4
#438 #779123
>>779083
Думаешь он будет DSP программировать и встроенные в кристалл мини-FPGA ловко вертеть на хую, устраивая в них dynamic offloading критических частей сложнейших алгоримтов?
Хрен там, будет байтики между портами возить на тележке и закатывать солнце вручную.
>>779279
#440 #779205
Посоветуйте книги по обработке сигналов для ньюфагов.
#441 #779279
>>779123

> stm32


> байтики на тележке


ню-ню
>>779372
#442 #779372
>>779279
Прямая Память-Тележка Двойной Емкости - это ведь совсем не тележка!
#443 #779504
Говноеды, что вы там пишете под МК?
>>779577
#444 #779577
>>779504
Драйвер вибратора твоей мамки.
15 Кб, 669x563
#445 #780042
А что тут не так?
Мимо проходил
>>780153
#446 #780153
>>780042
Ты билд делал?
Он нормально забилдился?
Прошлый запущенный процесс отладки завершен?
Почему у меня капча из хуйцов?
#447 #780164
>>777814
Нет, это ты сосешь.

Второй случай нужен, чтобы держать данные ридонли-секции.

Это может быть полезно, если ты хочешь разместить конфигурацию портов микроконтроллера в виде массива структур во флешь-памяти и конфигурировать их циклом, в котором обходится каждая структура.

Работать будет чуть медленнее (что практически не важно, ибо подобная операция выполняется не часто), но и места займет меньше.

Аналогично можно делать таблицы виртуальных методов, конечные автоматы и прочие ABI с размещением во флеш.
#448 #780166
>>777885
Ну, убунта же делала linux.sys...

И никто тебе не запрещает поставить швабодный gcc на венду....

Так что вся эта подсистема - тупо пакет швабодки, который можно поставить на венду.
покормил
67 Кб, 1224x653
#449 #780268
Анон, хочу изучать си, но споткнулся на первом же шаге из Кернигана и Ричи. Вот я написал код для вывода "хелло ворлд".
Что мне теперь делать? Как запустить программу? В гугле пишут нажать "начать отладку", но у меня она серая.
#450 #780279
>>780268
Левее "Сброка", собери, откомпилируй и радуйся жызни.
>>780290
19 Кб, 894x219
#451 #780290
>>780279
Что-то не выходит
>>780298
#452 #780298
>>780290
Ты ; проебал после вызова pritf
>>780307
#453 #780300
Объясните, нахуя в каждом Win32 приложении должен быть цикл обработки сообщений? Его задача заключается в том, что функция GetMessage достает из системной очереди приложений очередной сообщение и передает его в DispatchMessage, где производится поиск оконной процедуры, которой предназначено сообщение, и этой процедуре отправляется данное сообщение.

Но нахуя это делать в каждом приложении? Пусть, например, эксплорер достает все приложения из системной очереди и передает их нужным оконным процедурам.
#454 #780301
>>780300

>все приложени


Все сообщения.
быстрофикс
19 Кб, 874x229
#455 #780307
>>780298
Я видимо что-то не то делаю.
#456 #780308
>>780300
Наследие Windows 3.1, когда не было тредов и была кооперативная многозадачность.
#457 #780313
>>780268
Ты ебанутый? У тебя солюшн пустой
>>780324
#458 #780315
>>780307
1) int main()
2) return 0; добавь еще, после printf
#459 #780324
>>780313
>>780268

> проектов: 0


Хм, да. Что-то ты не то сделал. Закрой это нахуй и создай новый проект (Консольное приложение). В проекте добавь новый элемент, файл C++ и назови его main.c. Там уже набирай (или вставляй) код и компилируй.
>>780354
#460 #780330
>>780300
Этот цикл нужен для ожидания\обработки действий пользователя. GetMessage - точка блокировки (без блокировки цикл сожрет все процессорное не выполняя полезной работы). Не ну ты конечно можешь их не обрабатывать (например так всякие консольные утилитки делают), но тогда и твой процесс завершиться очень быстро.
И это не только в винде, это во всех системах, где ожидают действий от юзера. Эксплорер виндовой это самое обычное приложение, а ты просто ленивая скотина.
>>780338
#461 #780338
>>780330
Но можно было просто одной функцией Run(); сделать (вместо 3-х, GetMessage, TranslateMessage и DispatchMessage), а сообщения обрабатывать в отдельных потоках.
>>780344>>780381
#462 #780344
>>780338
А основная нитка что тогда по твоему делать?
В Qt в общем то одним вызовом и запускается все это (а внутри уже и крутится цикл обработки эвентов)
>>780361
5 Кб, 690x292
#463 #780354
>>780324
Всем спасибо, сделал всё по-новой - заработало.
>>780357
#464 #780357
>>780354
А, такой вопрос. Что-то посвежее КиР есть? Там не было ничего про return 0 и int перед main тоже не было
>>780364>>780381
#465 #780361
>>780344
В Run просто вызывать Sleep(1), чтобы не было блокировки. И проверять, не было ли получено сообщение WM_QUIT.
>>780388
#466 #780364
>>780357
Какое у тебя издание, не первое случайно?
>>780371
7 Кб, 550x285
#467 #780371
>>780394>>780399
1203 Кб, 839x794
600 Кб, 841x643
#468 #780372
Откуда эти пикчи в книге Криса Касперски про шеллкоды? Он что, из этих?
>>780379
#469 #780379
>>780372
Да, он из интернетов
#470 #780381
>>780338

> Но можно было просто одной функцией Run(); сделать


Нельзя. Из тройки GetMessage/TranslateMessage/DispatchMessage обязателен только GetMessage - дождаться уведомления о выключении компа, например. Остальные нужны не всегда. Еще в цикле обработки событий могут быть IsDialogMessage и TranslateAccelerator, они тоже не всегда нужны. А в играх делают цикл без блокировок, что-то типа if (PeekMessage()) { ...dispatch... } else { render(); }. Поэтому одного Run даже с кучей флагов нифига не достаточно, чтобы покрыть все случаи использования.

>>780357
Прата из шапки. На крайний случай Кочан. Но лучше сначала K&R дочитай.
>>780387
#471 #780387
>>780381
А есть ли в этом смысл, если он такой старый?
>>780394
#472 #780388
>>780361
Да ты просто гений программирования. Очень замечательный интерфейс получается. Ты правда думаешь, что если тебе не хочется делать цикл приема сообщений, то юзеры должны ждать секунду пока твой код сообразит обработать сообщения?
>>780394>>780408
#473 #780394
>>780387
Это классика. К тому же, второе издание знает о C89 третьего издания вообще не существует - хуй знает, что за говно у тебя >>780371 тут, а множество консерваторов до сих пор пишет именно на C89.

>>780388
Ну вообще-то хотя бы один из тредов программы, слинкованной с /SUBSYSTEM:GUI, обязан обрабатывать сообщения, или винда сочтет, что программа зависла.
>>780451
#474 #780399
>>780371
Странно, это уже после выхода стандарта. Везде советуют использовать именно int main и возвращать 0:
http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?id=1043284376&answer=1044841143
https://www.ty-penguin.org.uk/~auj/voidmain/
Либо там авторы просто не заморачивались возвращаемым значением.
В разных скриптах считается, что при успешном выполнении программа должна возвращать 0, иначе код ошибки.
#475 #780402
>>780307

>Я видимо что-то не то делаю.


Используешь продукты Microsoft.
CodeBlocks накати бля.
>>780411
#476 #780408
>>780388

> секунду


Как же я проиграл.
#477 #780411
>>780402
Только консолька. Без консольки хороший сишник не получится.
>>780414
#478 #780414
>>780307

> проектов: 0


Проект создай, епт.

>>780411
Нахуй иди. Ну напишет он cl /c main.c && link main.obj, и что, это такое адски необходимое на начальных этапах знание? Или про это так сложно прочитать, когда оно понадобится?
>>780450
#479 #780438
Callback функции — это изобретение си или с++? Есть какой-нибудь авторитетный источник с описанием что это такое и как правильно реализовать?
#480 #780442
>>780438
Это паттерн существовавший ещё до си, просто широкую распространённость получил только после ноды с её асинхронностью на каждый пук.

Реализовывается везде одинаково – передаёшь указател на ф-цию как аргумент и вызываешь когда окончишь работу/по опр. событию и тд.
>>780467
#481 #780443
>>780438

>Есть какой-нибудь авторитетный источник с описанием что это такое и как правильно реализовать?


Лямбда-исчисление.
#482 #780445
>>780438
Разберись лучше с корутинами, это более общая абстракция https://www.youtube.com/watch?v=_fu0gx-xseY
>>780447>>780596
sage #483 #780447
>>780445

> In C++17 this is how you would do...


Ты тредом ошибся.
#484 #780450
>>780414

> Нахуй иди.


Ты в скарказм уже не можешь?
46 Кб, 520x850
#485 #780451
>>780394

> третьего издания вообще не существует - хуй знает, что за говно у тебя


И у меня
>>780455
#486 #780455
>>780451

> Для настоящего третьего русского издания перевод заново сверен с оригиналом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошедшие годы изменения в терминологии, а так же учтены замечания


В общем, они его придумали. По сути это второе издание перевода второго издания K&R.
#487 #780467
>>780442

>Это паттерн существовавший ещё до си, просто широкую распространённость получил только после ноды с её асинхронностью на каждый пук.


Проиграл с этого хипстера. Он был широко распространён ещё во времена Windows NT, где был коллбек на каждое событие в интерфейсе.
sage #488 #780470
>>780467
Проиграл с этого проигравшего. Какое слово во фразе "еще до си" тебе непонятно?
#489 #780485
>>780467
Олдфажный хакер порвался)))
#490 #780488
>>780467
Пиздуй вирусы пиши и не выйобуцся
#491 #780489
Си старики потрясают клюками, кек
>>780491
#492 #780491
>>780489
У пистушков и раби-даунов так печет, что они несут свой баттхерт в тред к старикам. Сделай плиз сайт вот такой как этот.
>>780493
#493 #780493
>>780491
У меня вообще не печет, я пришел сюда чтобы стать си стариком, как и вы!
>>780500
#494 #780500
>>780493
А я уже старик, а решил Си изучить. Доживу ли до конца изучения?
>>780501
#495 #780501
>>780500
Чому нет, это же не плюсы.
>>780502
#496 #780502
>>780501
8 лет хватит, чтоб в 50 накатить за знание С?
>>780506
#497 #780506
>>780502
А я-то думал, я здесь самый старый. Хватит. Если не залезать в дебри, язык простой. Месяц на изучение синтаксиса, год на изучение либ и тонкостей типа неопределенного поведения. Умножь на два, если ты уже не тот, что прежде.
>>780509
#498 #780509
>>780506

> не тот, что прежде


Давно уже не тот. В 93 хуярил на Ростовской областной олимпиаде по информатике. Места занимал. А сейчас туплю над структурой по пол дня.
>>780515
#499 #780515
>>780509
Осиляторство языка - это еще не главное. Может оказаться, что тебе просто писать нечего, потому что все уже написано, а то, что не написано, неподъемно для одного человека. Тогда, наверно, только реверс и дрочение класических алгоритмов может сохранить интерес к кодингу.
>>780603
#500 #780594
Где в линуксе определен addr_t?
#501 #780596
>>780445
как связаны сопрограммы и коллбек-функции
#502 #780597
>>780438
коллбек функции в си - это способ параметризировать поведение (а не данные)
в разных языках и разных либах по разному решается
это могут быть делегаты встроенные в язык в шарпике и явке, интерфейсы встроенные в язык, либо делегаты и интерфейсы реализованные на уровне либ, либо тупые коллбеки, либо тру лямбды (не синт сахар) и другая экзотерика в функциональщине
>>780604
#503 #780603
>>780515
А что если только это и интересно, а вот писать самому-не очень?
#504 #780604
>>780597
ах, да, там если лезть в функциональщину, то еще и есть замыкания, функции высших порядков
альтернатива в опп - это полиморфизм
ПЕРЕКАТ # OP #505 #780631
А у нас тем временем ПЕРЕКАТ. И снова со старой картинкой и старой шапкой.

>>780630 (OP)
>>780630 (OP)
>>780630 (OP)
>>780630 (OP)
>>780630 (OP)
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 14 июля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски