М.Двач / Программирование

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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

78 Кб, 792x1023
C Programming Language #36 /clang/ # OP 3 дек, 05:43 1305157 В конец треда | Веб

Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ или http://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: 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: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

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

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

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? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

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

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "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://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

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

- №33: https://arhivach.tk/thread/383767/
- №34: https://arhivach.tk/thread/398890/
- №35: https://arhivach.tk/thread/398891/

Ответы0523006921092791471017698

2 3 дек, 10:42 2 1305230

>>1305157 (OP)
Чуток подучил С, разобрался с байтоебством, могу написать программку которая считывает инпуты и записывает их в файлы, разные алгоритмы сортировки и поиска тоже могу написать.
А теперь вопрос, где применить эти знания? Как написать настоящую программу? Просто не понимаю области применения С.

Ответы05235052360529705328

3 3 дек, 11:10 3 1305235

>>1305230
>Просто не понимаю области применения С
Да всё что угодно, где нужен прямой доступ к памяти/железу или важна производительность и нетребовательность к ресурсам или же интероперабельность с другими ЯП.

Ответы0529713105

4 3 дек, 11:12 4 1305236

>>1305230
> Просто не понимаю области применения С.

В данный момент только embedded -- ебаться с железками и байтоебством. Никакой другой области для сишки, где платят деньги сейчас нет. Да и за это платят не сказать что бы много.

Ответы052560529813105

5 3 дек, 12:59 5 1305256

>>1305236
Люди на реверсинге заебись зарабатывают, не пизди.

Ответы05259

6 3 дек, 13:03 6 1305259

>>1305256

И где ты собрался работать? У кашперского? Один работодатель на все рашку -- работа мечты просто. Я тащемта не обоссать написал все, а типа мудрого совета.

Ответы05261

7 3 дек, 13:11 7 1305261

>>1305259
Работы куча, просто нужно уметь найти ее.

Ответы05262

8 3 дек, 13:13 8 1305262

>>1305261
> просто нужно уметь найти ее

Да-да, ПРОСТО взял и нашел. Сам-то уже нашел? Чтобы хотя бы 200к+ было?

Ответы05266

9 3 дек, 13:36 9 1305266

>>1305262
Никто не говорил что это просто. И никто не получает 200К сразу.

Ответы05267

10 3 дек, 13:38 10 1305267

>>1305266

Ну вот конкретно ты, который говорит, что

> Работы куча, просто нужно уметь найти ее.

Уже нашел? Сколько получаешь? Или только мечтаешь?

Ответы0527208248

11 3 дек, 13:50 11 1305272

>>1305267
Сишнкиком? Пока нет, даже не искал, но нашел бы если нужно было.

Ответы05275

12 3 дек, 13:55 12 1305275

>>1305272
> Сишнкиком? Пока нет, даже не искал

Но вот и не пизди тогда.

> но нашел бы если нужно было

Да-да, иди нахуй. Оригинальное заявление было в том, что работа на сишки есть только в embedded и за нее не особо платят. Какие-то там другие отдельные вакансии для звезд.

Ответы0531405447

13 3 дек, 14:51 13 1305297

>>1305230
>>1305235
Я подробнее объясню:
Сам я макака-формошлеп, зарабатываю неплохо, но угарел по С и начал изучать его, мне просто нравится да и полезно в работе будет (надеюсь). И если в работе формошлепом, выучив js, я могу выучить какой-нибудь фреймворк и написать браузерное приложение или же зная C# и .net я могу написать .exe программу под винду например и использовать. Так вот что пишут на С? Какие то программы которые запускают из консоли и они начинают работать "с железом", то есть с компьютером? Есть ли где-то туториалы или что-то подобное? Просто вообще не понимаю как подойти и с чего начать чтобы сделать что-то серьезное.

Ответы05298053000573413105

14 3 дек, 14:52 14 1305298

>>1305236
промахнулся

Это и тебе тоже >>1305297

15 3 дек, 14:52 15 1305299

бля, чуваки, знаете какой адрес электронной почты у роба пайка?
rqESANUSgoogl4.qePUNCTUMcoQkIm
охуеть

Ответы05386

16 3 дек, 14:53 16 1305300

>>1305297
>Так вот что пишут на С?
Все где нужна скорость и производительность.

Ответы05301

17 3 дек, 14:54 17 1305301

>>1305300
Бля, похоже никто не может понять что я пытаюсь узнать.

Ответы05304

18 3 дек, 15:04 18 1305304

>>1305301

Драйвера для новых устройств, прошивки для всякой встроенной залупы вроде видеорегистраторов, охранных систем и т.д. В линупсе много программ на сишке, но никто тебе за них платить не будет. Ищи на hh.ru вакансии по слову embedded и узнаешь что хочет работодатель от сишника

https://hh.ru/search/vacancy?text=embedded&area=1

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

Ответы05307

19 3 дек, 15:08 19 1305307

>>1305304
Я не ищу работу, я уже работаю. Но в целом понял тебя.

20 3 дек, 15:20 20 1305314

>>1305275
Так кто тебе мешает внедрить плюсы в свои навыки? Или ассемблер какой нибудь ебануть?

21 3 дек, 15:36 21 1305328

>>1305230
>Просто не понимаю области применения С.
Очевидный эмбед и всё железно-низкоуровневое. Если в ангельский можешь, записывайся на edx на Embedded Systems - Shape the World, а закончишь, можешь об hardware hacking поколотиться.

Ответы0535813105

22 3 дек, 16:57 22 1305358

>>1305328
На edx проходил курс cs50, как раз оттуда и подсел на С.
Спасибо.

Ответы05398

23 3 дек, 18:17 23 1305386

>>1305299
фу, мог бы не шквариться гуглозондами, а поднять свой сервак

60 Кб, 400x399
24 3 дек, 18:24 24 1305392

>Мой план на ближайшие 9 месяцев:
>(В примерно хронологическом порядке)
>C Primer Plus -- Stephen Prata
>Data Structures Using C -- Langsam, Augenstein, Tenenbaum
>Algorithms in C -- Robert Sedgewick
>Structured Computer Organization -- Andrew Tanenbaum
>Modern Operating Systems -- Andrew Tanenbaum
>Computer Networks -- Andrew Tanenbaum

V1.1
C Primer Plus -- Stephen Prata
Data Structures Using C -- Langsam, Augenstein, Tenenbaum
Algorithms in C -- Robert Sedgewick
* Computer Systems, A Programmer’s Perspective -- Bryant, O’Hallaron
Computer Networks -- Andrew Tanenbaum

25 3 дек, 18:37 25 1305398

>>1305358
>На edx проходил курс cs50
CS50 неплохой, но только в качестве базового. Там, например, указатели довольно тухло объяснены.

Не пожалей времени, запишись на и пройди 7 курсов C Programming от Dartmouth College и IMT! Это будет ОХУИТЕЛЬНЕЙШИМ продолжением CS50 и прекрасной базой для Embedded Systems - Shape the World. Для последнего уже нужно владеть C на более-менее пристойном уровне - особенно это касается структур (structs).

Ответы0546105473

26 3 дек, 20:34 26 1305447

>>1305275
Я вот работаю джуном, пишу на си, драйвер для Linux.
Пришёл вообще без опыта работы, получаю сейчас 35к.
норм ящитаю, я не в ДС живу, да ещё и без опыта уже такая зп

Ответы05460

27 3 дек, 20:54 27 1305460

>>1305447
Какое образование, когда вкотился?
Расскажи о себе.

Ответы05462

28 3 дек, 20:57 28 1305461

>>1305398
Спасибо за наводку, обязательно пройду.

29 3 дек, 20:57 29 1305462

>>1305460
Я сейчас на третьем курсе, образование ойти.
Собственно на втором курсе начал усиленно дрочить плюсы, т.к. изучал глубинные вещи, то это имело отношение и к си тоже.
Собственно из того, что спрашивали на интервью я не знал только, что такое union, т.к. никогда до этого ими не пользовался.
Алсо собеседование было и по си и по плюсам.
просто у нас пишут не только на си, но я попал в Линуксовую команду, а тут как бы выбора и нет

30 3 дек, 21:15 30 1305473

>>1305398
>C Programming от Dartmouth College
Что то не могу найти, ссылкой не поделишься?

Ответы05486

31 3 дек, 21:44 31 1305486

>>1305473
>Что то не могу найти, ссылкой не поделишься?

www.edx.org/school/dartmouthx

Все курсы, которые с "C Programming:" начинаются, и можешь ещё из этой же серии Linux Basics взять, если для тебя актуально. По ошибке только специализацию не схвати (Professional Certificate Program которая; это то же самое, но с сертификатом и за деньги).

Ответы05617

32 3 дек, 21:53 32 1305491

129 Кб, 861x527116 Кб, 867x458

Это wincrypt такой кривой или я долбоеб?
Каким хуем вызов функции меняет локальную переменную (переданную как аргумент функции если важно) provname?

Ответы05494

33 3 дек, 22:07 33 1305494

>>1305491
Не вижу, где ты передаешь provname куда-либо. Где-то ты сам пидорасишь стек, ищи. По скриншотам нихуя не понятно.

Ответы05522

34 3 дек, 23:28 34 1305522

14 Кб, 762x11947 Кб, 926x429

>>1305494
Все довольно линейно, не представляю как что-то может похериться.
Есть мейн, provname берется из аргументов командной строки (argv[6]), переводится в массив wchar_t (возможно с этим связано, без этого преобразования не работает так что я не вдумываясь зачем как и почему спиздил его со стековерфлоу), передается в encrypt (wc2), хуйня происходит всегда на CertOpenStore, 100% воспроизводимость, во всяком случае со значением "Microsoft Strong Cryptographic Provider".
Я тащемта обошел это тем, что просто provname использовал до откытия хранилища, но все равно интересно что за дерьмо там происходит.
Самое классное еще что у аргумента const стоит, но он все равно изменяется.

Ответы05558

35 4 дек, 01:21 35 1305555

Посоны, я правильно понимаю, что без образования в няшную/кресты лучше не соваться, ибо работу не найду?

Ответы0555805569

36 4 дек, 01:37 36 1305558

>>1305522
Ну как минимум ты говоришь wcstombs писать cSize символов размером sizeof(wchar_t), а выделяешь сSize байтов. Умножь cSize на sizeof(wchar_t) в обоих маллоках.

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

Ответы05568

37 4 дек, 02:59 37 1305568

>>1305558
Так я не совсем с нуля. Двенадцать лет назад писал лабы на няшной и немного на asm для К580 на первоми единственном курсе. Знаю, что такое указатели, двоичная арифметика и всё такое, но после отчисления дел с погромированием не имел. Чекнул вакансии по регионубульба и если, например, по java тоннами берут джунов, есть горы всевозможных стажировок и тренингов, то по няшной/крестам почти везде нужны инжинеры с опытом и профильной вышкой и самих вакансий меньше раз эдак в 50. Сейчас у меня примерно год, чтобы сделать вкат на зарплату во что-нибудь и я боюсь, что если начну няшную, в лучшем случае смогу попасть на какой-нибудь завод, прошивать контроллеры за еду. Такие дела.

Ответы05570

5,2 Мб, 4032x2484
38 4 дек, 03:00 38 1305569

>>1305555
Все найдешь, люди на базе 9 классов работают получше чем те, что с образованием, и корка о высшем это уже стереотип далеко неприятный многим. Мой совет это различного рода конференции по тематикам которые тебе нравятся, дают визитки всем и со всех стран.

Для примера, мне как хую который ничего не знает предложили должность джуна в Китае, Эмиратах, Канаде и т.д

Английский конечно важен и наличие хотя бы 30К чтобы поехать на конференцию, но все зависит от местоположения.

Можно так же устроиться в какую нибудь команию типа Samsung, опять же, резюме и навыки, но примут и так и так, но без базы и хороших знаний лучше не лезть, хотя бы на базовые вопросы нужно уметь отвечать. Can you C?

А так если есть желание можно в тот же инстаграм устроиться, главное это упорство как мне кажется. Но уметь налаживать контакты с людьми с которыми вы познакомились очень важно, важны связи опять же, которые делаете ВЫ.

Ответы0561905622

39 4 дек, 03:02 39 1305570

>>1305568
Ну дк Си это инструмент, а не специализация же, это очень мощная галочка если ты пойдешь в какую либо сферу, например дрова писать, не?

Ответы05603

40 4 дек, 08:46 40 1305603

>>1305570

Сейчас кресты очень сильно ся потеснили с последними стандартами языка за счет своей халявной магии шаблонов и смартпоинтеров с placement new. В итоге нонешние кресты позволяют теперь обходиться без тяжелого наследования и жирного рантайма, в отличии от раньше. Многие системные хуитки (например mesa3D и её юзермодные драйверы) уже вовсю на крестах.

41 4 дек, 10:32 41 1305617

>>1305486
Благодарочка.

42 4 дек, 10:38 42 1305619

>>1305569
Так это же на собеседования тебя пригласили, а не на работу?

Ответы05639

44 Кб, 727x727
43 4 дек, 10:45 43 1305622

>>1305569
>Albert Hui

44 4 дек, 11:35 44 1305639

>>1305619
Сам Альберт Хуй пригласил на собес.

45 4 дек, 11:59 45 1305645

Аноны, в проге нужно получение и форматирование данных из шелла. Правильно ли что нужно юзать FILE popen() и т.д? Ну и тот же system(камманда) не особо быстро же работает, так что так лучше не делать, верно?

46 4 дек, 15:26 46 1305734

>>1305297
Сишечка сейчас это системный софт *NIX, а также embedded soft (микроконтроллеры).

47 4 дек, 15:26 47 1305735

поисковые Google сервера это кресты.
Web сервера, NGINX - это кресты.
Гамесы - это кресты.

Ответы057370576805769

48 4 дек, 15:29 48 1305737

>>1305735

Тред о сишке, которая не плюсы, вы не забыли?

49 4 дек, 16:31 49 1305768

>>1305735
>Web сервера, NGINX - это кресты.
А разве не сишечка?

Ответы05771

50 4 дек, 16:43 50 1305769

>>1305735
>поисковые Google сервера
это звучит только пафосно, там логики меньше чем в Постгресс, которая внезапно на ..

51 4 дек, 16:52 51 1305771

>>1305768
Сишечка хороша для вкатывания в программирование и как база для дальнейшего обучения.
Все, кто в этом треде и подобных тредах утверждает, что сишечка самодостаточна и способна вынести большой, современный проект - суть лицемеры.
Да, есть лялих оставим неземное качество продухта, но удел современного сишечника, не сподобившегося научиться современным технологиям - "программирование" станков и оборудования за еду.
К величайшему сожалению.
Надо понимать, что для многих упертых сишечников, си - это пора юности и счастья. Как для некоторых, например, QBasic. Но доказывать окружающим а на самом деле - себе что на си время застыло - это вызывает только жалость.
Си - это только начало пути. Как Паскаль 40 лет назад. Как Бейсик 30 лет назад.
Добро пожаловать в 20 лет назад, анон.

Ответы05778058040580605807

52 4 дек, 17:09 52 1305778

>>1305771
>большой, современный проект
Это что например?
>научиться современным технологиям
Это чему например?

Ответы05781

53 4 дек, 17:18 53 1305781

>>1305778
>Это что например?
Посмотри вокруг, например.

>Это чему например?
Все что пришло после си. Посмотри вокруг.

54 4 дек, 18:31 54 1305804

>>1305771
Это все так. Но есть очень простой контраргумент: сишечку можно выучить и досконально понимать целиком. Современные кресты выучить нельзя, степень реализации везде отличается, полного понимания языка нет ни у кого. Поэтому вменяемые люди оставляют крестам высокий уровень, а либы пишут на Си.

Ответы0585205920

55 4 дек, 18:37 55 1305806

>>1305771
>Сишечка хороша для вкатывания в программирование и как база для дальнейшего обучения.
Для этого сишка очень плоха.
Сишка хороша для программирования под железо и как база для изучения с++.
Ну и еще сишный FFI поддерживают все языки.

Ответы05855

56 4 дек, 18:39 56 1305807

>>1305771
>Сишечка хороша для вкатывания в программирование
Хуйни не городи! Сейчас для этих целей идеально подходит Python: минимум писанины, возможность быстро получить наглядный а не текстовую дрись результат, нет жёсткой привязки к железу.
>и как база для дальнейшего обучения
Любой язык - это тупо инструмент, который можно рассматривать как базу для для дальнейшего обучения. Вопрос только, чему учиться. Cи сегодня - это возня с железом, но не на уровне цифровой схемотехники, а чуть повыше.
>Все, кто в этом треде и подобных тредах утверждает, что сишечка самодостаточна и способна вынести большой, современный проект - суть лицемеры
Что в твоём понимании "большой проект"? На борту у микроконтроллера может быть несколько десятков Кб памяти, но при этом сам микроконтроллер управляет хуергой размером с дом. Это как, большой проект или небольшой? Алсо, id Software про невозможность создания больших проектов расскажи. У них всё, что создано до 2000, писалось на чистом Cи.
>Надо понимать, что для многих упертых сишечников, си - это пора юности и счастья
Для многих это тупо инструмент. Берёшь и хуяришь. Любить или не любит язык - это приблизительно то же, что и любить или не любить шариковую ручку или молоток.

Ответы0581905859058620586306397

57 4 дек, 19:03 57 1305819

>>1305807
>Python
>нет жёсткой привязки к железу.
>отбиваешь табами отступы как пидор
Нет, спасибо, ональное ООП в куче с уебищной реализацией и косплейем Перла с тормозами

Ответы05824058260583105866

58 4 дек, 19:06 58 1305824

>>1305819
Ну а что еще, руби помер, у жс куча других недостатков. Статические языки вообще мрак

59 4 дек, 19:15 59 1305826

>>1305819
>отбиваешь табами отступы как пидор
Ты в нотепаде что-ли код пишешь? Или у тебя автоотступалка поломалась?
>Нет, спасибо, ональное ООП
Взять скриптовую пепяку, изначально созданную для несложной автоматизации, и удивляться несерьёзности. Это как местные идиоты пытаются с помощью ардуины автоматизировать производство, а потом клянут саму ардуину и удивляются "чому не взлетает?!"

Ответы0582705829

60 4 дек, 19:20 60 1305827

>>1305826
>Взять скриптовую пепяку, изначально созданную для несложной автоматизации, и удивляться несерьёзности.
Ты долбоеб? Какие пипяки, какие несерьезности, давай конкретику.
>в нотепаде
Да, писал в ВИМЕ, но сейчас на ноутпаде++ под спермосью. Язык навязывающий стилистику однозначно пидерский.

Ответы05849

61 4 дек, 19:22 61 1305829

>>1305826
>Ты в нотепаде что-ли код пишешь? Или у тебя автоотступалка поломалась?
Из-за отсутствия end'ов питон не знает, что конкретно ты имеешь в виду, чтобы автоматически делать отступы. Поэтому приходится и вручную блоки двигать (естественно, выделяя блок целиком, а не табами, но все равно это гемор), и проебывать индентацию при копипасте. Блядство редкостное такой синтаксис.

62 4 дек, 19:23 62 1305831

>>1305819
>косплейем Перла
ебло стяни. Где эти лаконичные сокращения в питоне как в перле?
Да и на питоне необязательно в ООП-писать. То, что там всё - объекты не значит, что ты не можешь там создать свои пускай и костыльные типы данных и писать в ООП-парадигме. Наоборот динамическая типизация избавляет от лишних проверок. Хз, что ты агришься на питон. Дебил, навернок.

Ответы05833

63 4 дек, 19:28 63 1305833

>>1305831
>костыльные типы данных
Все ясно, ты малолетний долбоеб. За сим прощаюсь и иду шпилить твою мамку в очело.

Ответы05836

64 4 дек, 19:33 64 1305836

>>1305833
При этом маняврирует по поводу лаконичности перла. Да, да. Рассказывай.

Ответы05843

183 Кб, 700x933
65 4 дек, 19:39 65 1305843

>>1305836
Рассказал тебе мужским членом за щеку. Теперь глотай и уебуй делать домашку.

66 4 дек, 19:47 66 1305849

>>1305827
>Ты долбоеб? Какие пипяки, какие несерьезности, давай конкретику.
Какую тебе конкретику? Прохладную о том, как Гвидо создал язык как автоматизации какой-то там своей повседневной хуерги, а потом этот язык зажил своей жизнью? Почитай интервью Гвидо, он сто раз про рождение питона рассказывал.
>Язык навязывающий стилистику однозначно пидерский.
Ох, а фигурные скобки тебе ничего блять не навязывают! Мань, ну хорош! Просто ты закусился на предмет "питон - говно", и теперь тебе всякое лыко в строку: отступы не отступы, синтаксис не синтаксис и ООП не ООП... А в сухом остатке, нормальный язык для начинающих а также сисадминов, бэк-эндщиков и мамкиных машинно-обучаторов - можно быстро игрулю типа тетриса написать, наглядно разобраться с основами погромизма, а за всем остальным идти на C/C++/C#/Java или к чему там душа больше лежит.

Ответы05857

67 4 дек, 19:49 67 1305852

>>1305804
>Но есть очень простой контраргумент: сишечку можно выучить и досконально понимать целиком
Как и QBasic. Как и Pascal.
Это не контраргумент, а совершенно обратное, обрати внимание.
Повторюсь - к большому моему сожалению.

68 4 дек, 19:51 68 1305855

>>1305806
>как база для изучения с++.
Об этом собственно и речь. С++ - серьезный уровень, за серьезные деньги. С++ должен быть целью, хотя бы промежуточной. А начать надо с Си.

69 4 дек, 19:52 69 1305857

>>1305849
>Рассказал тебе мужским членом за щеку. Теперь глотай и уебуй делать домашку.
дольоеб, уходи

Ответы05875

70 4 дек, 19:53 70 1305859

>>1305807
Не буду холиварить, вот реально не хочу. Выбор языков - та еще тема.
Но:
>id Software про невозможность создания больших проектов расскажи. У них всё, что создано до 2000, писалось на чистом Cи.
Ты неправ. Писалось на плюсах.

Ответы0586305875

71 4 дек, 19:55 71 1305862

>>1305807
>что и любить или не любить шариковую ручку
Когда в детстве писал пером и чернилами.
Это аллегория, и я с тобой согласен насчет инструмента. Речь об эмоциональной связи с предметом, которая подменяет функциональность.

72 4 дек, 19:59 72 1305863

>>1305859
>>1305807
>Сейчас для этих целей идеально подходит Python
Только добавлю один момент.
Из моего окружения довольно много вкатывальщиков, всех практически возрастов.
Так вот, если человек - взрослый технарь с вышкой, то переучиться на программиста кайфовее начиная с сишечки.
Если подросток или еще в универе - питон самое то.
Не знаю почему так. Просто наблюдение.
Думаю, что старшим технарям нужно знать досконально что конкретно происходит в каждой инструкции, плюс привычка работать по стандартам.

Ответы05889

73 4 дек, 20:03 73 1305866

>>1305819
ООП - всего лишь развитие парадигмы, которая была реализована на си в том числе, была признана перспективной, и в конце концов реализована через отдельный зоопарк.
Что за ненависть-то?

Ответы05872

74 4 дек, 20:07 74 1305872

>>1305866
Да, бесполезно с этой дурой разговаривать. Залётыш-крестоблядь, которая рещила собрать внимания.

75 4 дек, 20:12 75 1305875

>>1305857
Не рвись!

>>1305859
>Не буду холиварить, вот реально не хочу. Выбор языков - та еще тема.
Так я тоже. Я к тому, что каждый язык для какой-то конкретной задачи разрабатывался и сравнивать их на уровне "лучше - хуже" - это детский сад. Анон утверждал, что закатываться в программирование лучше через Си, а по мне, лучше через Питон, ибо он проще для нубов в т.ч. и из-за отсутствия миллиона скобок и прочей писанины. Что, впрочем, не делает Питон языком богов и наоборот. Разные языки, разные области/ниши/задачи.
>id Software
>всё, что создано до 2000, писалось на чистом Cи
>Ты неправ. Писалось на плюсах.
Кармак говорит, писал на чистом Си, ты говоришь, на плюсах. Кому из вас верить?

Ответы0589705899

76 4 дек, 20:29 76 1305889

>>1305863
Во, тебя двачую!
>Из моего окружения довольно много вкатывальщиков, всех практически возрастов
>если человек - взрослый технарь с вышкой, то переучиться на программиста кайфовее начиная с сишечки
Я преподавая золотую середину, кстати, нашёл, которая для всех абсолютно нубов подходит:
1). Берём питон (pygame), и пишем простенькую игрулю уровня флаппи бёрд.
2). Написали, берём ардуину, барахло натурально, задача не взять готовые кнопки и т.д., а наковырять из какой-нибудь старой железяки говна, и делаем к этому флаппи бёрду контроллер.

В сухом остатке, весело, наглядно и удаётся 12-52-левелам быстро и погромизм, и основы эмбеда/электронства в головы запихать. А начинали бы с С/С++, на втором-третьем занятии уже никого бы не было.

Ответы05900

77 4 дек, 20:34 77 1305897

>>1305875
Сырцы Wolfenstein 3D на чистом Си.
Мимо

78 4 дек, 20:41 78 1305899

>>1305875
>Кармак говорит, писал на чистом Си, ты говоришь, на плюсах. Кому из вас верить?
Лол, я почему-то твердо помню, что он говорил про С++. Извини.

Ответы0590205907

79 4 дек, 20:48 79 1305900

>>1305889
Лол, мне 38.
Начинал с вкатывание с С++, Java, Haskelllol, C#.
Ничего не зашло.
Читаю сишечку Прату, отлично заходит.
На курсы не могу записаться, читаю/решаю задачки реально урывками, работа все время съедает.

80 4 дек, 20:53 80 1305902

>>1305899
Он тебе напиздел, это же очевидно )))

Ответы06397

81 4 дек, 20:59 81 1305907

>>1305899
>говорил
И это программисты блядь. Кармак последовательно опенсорсит свой старый код, все лежит на гитхабе.
С++ у него начался с quake 3.
Вот тебе квейк первый на чистом си например:
https://github.com/id-Software/Quake/tree/master/QW/client

Ответы06400

7 Кб, 612x357
anonymous 82 4 дек, 21:05 82 1305910

молю,истолкуйте раку почему 2017 вижла ругается на библиотеку graphics.h

Ответы0591405915

83 4 дек, 21:07 83 1305914

>>1305910
Потому что она не установлена? Добавь её в проект и укажи путь, где она лежит.

84 4 дек, 21:07 84 1305915

>>1305910
Потому как ты отстал лет на 20-25? Этой библиотеки давно уже нет в поставках Студии, накатывай какой-нибудь Turbo C в досбоксе.

Ответы05919

85 4 дек, 21:14 85 1305919

>>1305915
>Потому как ты отстал лет на 20-25? Этой библиотеки давно уже нет в поставках Студии, накатывай какой-нибудь Turbo C в досбоксе.
А как рисовать кружочки/квадратики?

Ответы0592205923

86 4 дек, 21:16 86 1305920

>>1305804
>Но есть очень простой контраргумент: сишечку можно выучить и досконально понимать целиком. Современные кресты выучить нельзя, степень реализации везде отличается, полного понимания языка нет ни у кого.
Не-а. Чтобы писать большие проекты на сишке, надо знать С++ и уметь реализовывать все крестоконцепции на более низком уровне. Потому что собственно С++ появился как автоматизация сишных костылей.

Например, что там у нас есть...
В С++:
struct Yoba {
private:
int yoba;
public:
int getYoba(){return yoba;}.
};
В сишке как инкапсуляцию структуры сделать? О, это целое дело. В хедере нужно написать форвард декларейшен структуры

typedef struct Yoba_tag Yoba;

В .c файле сделать конструктор и пропертю:

void create_yoba(Yoba@@);
int getYoba(Yoba@ yoba);

Шаблоны? Приготовся пердолиться с препроцессором и .inc файлами. Типа

#define YOBA_VECTOR_TYPE double
#include "yoba_vector.inc"
#undef YOBA_VECTOR_TYPE

yoba_vector_double yoba;

И так далее. Писать нормальный код на сишке сложнее, чем на С++, а знать примерно одинаково по сложности.

86 4 дек, 21:16 86 1305920

>>1305804
>Но есть очень простой контраргумент: сишечку можно выучить и досконально понимать целиком. Современные кресты выучить нельзя, степень реализации везде отличается, полного понимания языка нет ни у кого.
Не-а. Чтобы писать большие проекты на сишке, надо знать С++ и уметь реализовывать все крестоконцепции на более низком уровне. Потому что собственно С++ появился как автоматизация сишных костылей.

Например, что там у нас есть...
В С++:
struct Yoba {
private:
int yoba;
public:
int getYoba(){return yoba;}.
};
В сишке как инкапсуляцию структуры сделать? О, это целое дело. В хедере нужно написать форвард декларейшен структуры

typedef struct Yoba_tag Yoba;

В .c файле сделать конструктор и пропертю:

void create_yoba(Yoba@@);
int getYoba(Yoba@ yoba);

Шаблоны? Приготовся пердолиться с препроцессором и .inc файлами. Типа

#define YOBA_VECTOR_TYPE double
#include "yoba_vector.inc"
#undef YOBA_VECTOR_TYPE

yoba_vector_double yoba;

И так далее. Писать нормальный код на сишке сложнее, чем на С++, а знать примерно одинаково по сложности.

Показать весь текст
Ответы05974

87 4 дек, 21:16 87 1305922

>>1305919
Если прямо надо через graphics (требует препод, например) - качай WinBGI, это порт либы. Если не надо - то у тебя огромный выбор, от WinAPI и DirectX до SDL2 и OpenGL. Сам рекомендую SDL2, он достаточно прост в освоении.

88 4 дек, 21:18 88 1305923

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

Ответы0592505988

89 4 дек, 21:20 89 1305925

>>1305923
Что поделать, гуишный мир победил, окна оказались сильней.

Ответы05934

90 4 дек, 21:33 90 1305934

>>1305925
Дело не в этом, а в том, что когда компьютеры были простыми, начинать с сишки было легко и приятно. В конце концов, принципиально она отличается от того же турбопаскаля разве что наличием в паскале человеческих коротких строк.
Сейчас же уровень не просто низкий, это уровень шахты с шахтерами.

Ответы0593805986

91 4 дек, 21:35 91 1305938

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

Ответы05944

92 4 дек, 21:49 92 1305944

>>1305938
Ой всё.
Все легче и понятнее после сишечки.

Ответы05954

93 4 дек, 22:05 93 1305954

>>1305944
Сишечка слишком упрощает, я не могу строки воспринимать иначе как последовательность байт теперь. Постоянно на байтоебство тянет.

Ответы05985

94 4 дек, 22:24 94 1305974

>>1305920
Пиздец. То, что ты не можешь в scope - это не проблема сей. Смекаешь?

Ответы05984

95 4 дек, 22:35 95 1305984

>>1305974
>Пиздец. То, что ты не можешь в scope - это не проблема сей. Смекаешь?
Разъясни плизики. Причем здесь скоп?
Инкапсуляция это несколько выше возможностей сишечки.
Ведь это:
>Потому что собственно С++ появился как автоматизация сишных костылей
Правда, зачем отрицать очевидное?
Мимонуб-миддл

96 4 дек, 22:36 96 1305985

>>1305954
О БОЖЕ МОЙ, просто используй строку без задней мысли и все.

97 4 дек, 22:37 97 1305986

>>1305934
>Сейчас же уровень не просто низкий, это уровень шахты с шахтерами.
Уровень чего?

98 4 дек, 22:41 98 1305988

>>1305923
Если раньше для выезда в другой город надо было всего лишь сесть на лошадь, то теперь пердолинг с рулём и АКП.

Ответы05990

99 4 дек, 22:42 99 1305989

Короч сижу на K&R сейчас и там в начале тутор есть якобы вступительный (Англ версия) и кое какие задания более менее понятны, но задачка типа где нужно вместо двух бланков один сделать непонятна и решить ее не могу, решить хочу сам поэтому прошу не помогать.
Но ведь сразу видно, что решить ее может опытный кодер на Си, ибо я таких тонкостей языка не знаю, я уже перечитываю главу много раз и не вижу там даже намека на решение и в общем голова болит.
У Праты с таким нет проблем, все задачки решаемы и он все объясняет, но я хочу продолжить с K&R параллельно с Пратой и еще подключаю Learn C The Hard Way, но там вообще кошмар.
Сижу на Шляпе и там параллельно на административку системы учусь, скрипты пишу, с железом разбираюсь и т.д

Я в правильном направлений?

Ответы05995060930609506105

100 4 дек, 22:42 100 1305990

>>1305988
Хуевая аналогия

Ответы05992

101 4 дек, 22:43 101 1305992

>>1305990
Ну придумай лучше

Ответы05993

102 4 дек, 22:44 102 1305993

>>1305992
Нахуй, аналогии для долбоебов

103 4 дек, 22:46 103 1305995

>>1305989
>Но ведь сразу видно, что решить ее может опытный кодер на Си, ибо я таких тонкостей языка не знаю
При чем тут тонкости языка, задача для школьника с использованием двух функций, которые тебе уже объяснили - getchar и putchar и одной переменной состояния.
Ты просто туповат. Не в смысле пиздец как тупой и сишка тебе не светит, а так, среднемакака.

Ответы06000

104 4 дек, 22:57 104 1306000

>>1305995
>Ты просто туповат.
Не отрицаю, но чет сложна. Книга была написана аж в 80х, там люди поумнее конечно и наверняка знали не только Си.

105 5 дек, 06:48 105 1306093

>>1305989

Бля, кир не для новичков, эта книжка писалась для программистов на других языках. То, что долбоебы советуют ее новичкам -- ну так на то они и долбоебы. Не мучай себя, прочитай прату, потому КиР.

106 5 дек, 06:50 106 1306095

>>1305989

Какой номер упражнения btw?

Ответы06102

107 5 дек, 07:14 107 1306102

>>1306095
>Бля, кир не для новичков, эта книжка писалась для программистов на других языках. То, что долбоебы советуют ее новичкам -- ну так на то они и долбоебы. Не мучай себя, прочитай прату, потому КиР.
Да мне никто не советовал, сам нашел заинтересовался. Я тоже об этом подумал кстати, там люди программировали в баше и в общем то наверняка дальше просто по книге пошли и когда поняли язык решили эту задачку на каком то этапе.
>Какой номер упражнения btw?
1-9.

108 5 дек, 07:24 108 1306105

>>1305989

Сейчас порылся в своих старых записях, вот так я его делал:

https://ideone.com/DgD8SY

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

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

Ответы0610806211

109 5 дек, 07:27 109 1306108

>>1306105
Я щас посмотрел код и все таки это решить трудно. Я ничего не понял.

Ответы06111

110 5 дек, 07:36 110 1306111

>>1306108

Тебе нужно сделать, чтобы пробел был только один.

1. Считываем символ;
2. Если это пробел, то проверяем счетчик пробелов space;
3. Если счетчик равен нулю т.е. пробелов перед ним не было, то просто выводим этот символ пробел в stdout с помощью putchar;
4. Если счетчик больше нуля, значит пробелы перед ним уже были и мы просто увеличиваем счетчик на единицу и ничего не выводим в stdout;
5. Если это вообще не пробел, то обнуляем счетчик пробелов space и просто выводим символ в stdout.

Ну это мое решение НАЧИНАЮЩЕГО, так что не судите строго лол. Но вроде должно работать правильно.

Ответы0611206138

111 5 дек, 07:38 111 1306112

>>1306111

3.1 И увеличиваем счетчик пробелов на единицу;

112 5 дек, 09:11 112 1306138

>>1306111
Зачем там что-то считать (не читал задание)?
int prev = EOF, c;
while ((c = getchar() != EOF) {
if (c != ' ' || c != prev) { putchar(c); }
prev = c;
}

113 5 дек, 11:16 113 1306211

>>1306105
Что значит максимальные размеры?
Диапазон значений или размер в плане сколько они в памяти занимают?
алсо и то и то очень легко

Ответы06213

114 5 дек, 11:18 114 1306213

>>1306211
> Диапазон значений

Да.

> алсо и то и то очень легко

Решения, которые я находил заключались в сдвиге битов или какой-то другой подобной залупе.

Ответы0621406217

115 5 дек, 11:20 115 1306214

>>1306213
Увеличивай на 1, пока у тебя значение переменной меньше, чем значение переменной + 1.
Так ты найдешь верхнюю границу.
Аналогично с нижней.

Ответы0621706219

116 5 дек, 11:21 116 1306217

>>1306213
>>1306214
По факту я сказал тоже самое, только сдвиг битов будет работать быстрее, т.к. там мы передвигаемся по степеням двойки сразу, а не прибавляем единицу.
надеюсь ты хотя бы смысл понял

Ответы06219

117 5 дек, 11:23 117 1306219

>>1306214

Ну это конечно может и правильное решение, но как-то.. хуй знает. Я понял что ты имеешь ввиду, но я ожидал немного другого лол. Хотя может так оно и задумывалось.

>>1306217

Наверное так эти решения и работали, я просто пока не вкуриваю двоичную арифметику и все эти сдвиги и поэтому не понял что там имели ввиду.

Ответы0622306229

118 5 дек, 11:25 118 1306223

>>1306219
>правильное решение
#include <limits.h>

Ответы0622506228

119 5 дек, 11:27 119 1306225

>>1306223
Ну там надо самому понять же, как это получить, лол.
А не подключить лимиты.

120 5 дек, 11:28 120 1306228

>>1306223

С этим инклюдом предыдущее задание, а в этом надо ВЫЧИСЛИТЬ.

121 5 дек, 11:28 121 1306229

>>1306219
Двоичная арифметика тоже самое что и обычная, нет никакой магии.
Алсо вот, что я имел в видуя хз, что тебя смутило, очень простое решение
https://ideone.com/qy4f9N

Ответы06233

122 5 дек, 11:30 122 1306233

>>1306229

Да я понял что ты имел ввиду. Просто некоторые решения кажутся настолько тупыми, что думаешь НЕ, НУ ЭТО НЕ МОЖЕТ БЫТЬ ТАК ПРОСТО/ТУПО, ОЧЕВИДНО ТАМ ЧТО-ТО ХИТРОЕ ПОДРАЗУМЕВАЛИ. А на самом деле ничего такого не подразумевали :)

Ответы06240

123 5 дек, 11:32 123 1306240

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

124 5 дек, 15:49 124 1306397

>>1305807
>У них всё, что создано до 2000, писалось на чистом Cи.
>>1305902
>С++ у него начался с quake 3.

Уважаемые, я не совсем понимаю, пример чего вы здесь привели? Что крутой программер, адепт си, уже 18 лет как перешел на с++? Что это доказывает?

Ответы07007

125 5 дек, 15:51 125 1306400

>>1305907
>Кармак последовательно опенсорсит свой старый код, все лежит на гитхабе.

А где лежит арихитектура проекта? Не UML но хотя бы блок схема простая, из каких компонентов состоит проект, наглядно.
Ведь не может быть что такую большую разработку без элементарного чертежа.

Ответы0640306573

126 5 дек, 16:01 126 1306403

>>1306400
>Ведь не может быть что такую большую разработку без элементарного чертежа.
Любой чертеж требует постоянного согласования между собственно чертежом и исходным кодом, поэтому после начальных набросков, если они есть, работают уже непосредственно с кодом, а все эти UML'и не взлетели.
Ты можешь найти статью по архитектуре кваки http://fabiensanglard.net/quake3/ , но это уже описание того, что получилось

Ответы0640606410

127 5 дек, 16:18 127 1306406

>>1306403
Я понимаю, но мой вопрос в том как например они разделяют обязанности между командой.
Я не знаю как это делается, но например двое работают над движком, один над графикой.
Как стыковать отдельные участки кода без чертежа? Где задокументированы т.н. интерфейсы отдельных кусков проекта?

Ответы064110641606497

128 5 дек, 16:26 128 1306410

>>1306403
>Game Engine Black Book: Wolfenstein 3D
Уухх бля, чую на неделю по пизде пошел мой план обучения.
Ныряю в детство!

129 5 дек, 16:30 129 1306411

>>1306406
Там разве два человека работало над движком?
>Как стыковать отдельные участки кода без чертежа
Если ты так любишь инженерные аналогии, то программа и есть чертеж. Изделие это билд.

Ответы06498

130 5 дек, 16:43 130 1306416

>>1306406
Блин, знакомая проблема. Я начинаю дико буксовать при попытке написать хоть сколько-то большую программу. Пытаюсь придумать архитектуру, фейлюсь и забиваю. Плохо быть тупым.

Ответы06421

131 5 дек, 16:52 131 1306421

>>1306416
Любая большая программа когда-то была маленькой

Ответы06425

132 5 дек, 16:55 132 1306425

>>1306421
Ну вот например сейчас я хочу сделать небольшую типа стратегию пошаговую. Прикинул - надо отдельным модулем графику низкоуровневую (обертку над SDL) реализовывать, отдельным - сцены и объекты на них, скриптовый движок прикручивать, саму общую логику, обработку ввода. И все это еще и вместе собрать. Не знаю, за что браться.

Ответы06428

133 5 дек, 16:58 133 1306428

>>1306425
Цель какая? Если сделать игру на продажу, то браться надо за мануал к игровому движку по своему вкусу.
Если цель просто поразвлекаться, я бы остановился на ascii графике, которую впоследствии можно сделать тайловой.

Ответы0643407203

43 Кб, 258x260
134 5 дек, 17:00 134 1306430

https://pastebin.com/PTqqd2Gk

Ответы06433

135 5 дек, 17:01 135 1306433

>>1306430
Нестрогая типизация как есть

136 5 дек, 17:03 136 1306434

>>1306428
Для себя. Там графики-то и не надо, по сути, все будет в тоннах меню происходить.

137 5 дек, 19:05 137 1306497

>>1306406
Бампану, пожалуй.
Итак, как из сорцов получить архитектуру? Надо самому вычеркивать на бумажке в 21м веке? Или все-таки есть решения?

Ответы06499

138 5 дек, 19:07 138 1306498

>>1306411
>Каждая группа разработчиков получает набор требований к своей части системы, включая точное описание её функциональности и предельные требования к процессорному времени, занимаемой памяти, месту на диске и т. д.
Где вот это вот всё? А?!

Ответы06525

139 5 дек, 19:09 139 1306499

>>1306497
Профессионал в голове ее строит, читая исходники

Ответы06501

140 5 дек, 19:11 140 1306501

>>1306499

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

Ответы06514065150652406535

141 5 дек, 19:35 141 1306514

>>1306501
Тоже интересно. Эксперты, вы здесь?

41 Кб, 449x375
142 5 дек, 19:36 142 1306515

>>1306501
WinMain

143 5 дек, 19:49 143 1306524

>>1306501
в отрасли есть интуитивное мнение, что полностью исходный код унаследованного проекта читают только единицы программистов
и это и есть лучшие кадры
как читают? да как книгу, пусть и дурно написанную

Ответы06528

144 5 дек, 19:49 144 1306525

>>1306498
В неповоротливых корпорациях, живущих по заветам доинтернетовских времен.
Краткий экскурс в историю. Сначала была инженерия. Какой-нибудь автомобиль разрабатывают лет пять, не меньше. У инженера циклы итерации длятся месяцами, а ошибка стоит дорого.
Потом появилось ПО, на которое перенесли методы инженерии, ну просто потому что ничего другого не умели. Но релизы сократились примерно до года. Раз в год какой-нибудь майкрософт выпускал CD-ROM с носителем, в котором был вылизанный продукт. То есть примерно так: полгода пилятся фичи разными отделами, потом полгода пытаются совместить эти фичи до приемлемого состояния. Ошибка стоит уже не так дорого, как в случае с автомобилем, ведь можно накатить сервис-пак, но все равно это неприятно.
А потом появился интернет. Все ускорилось. Релизы раз в год - очень долго, конкуренты обойдут. "Автомобильная" ситуация, когда сначала год пишут требования, а потом их реализуют - тем более. Требования пишутся в процессе разработки. Пришла эра аджайла, когда продукт должен быть готов всегда, а требования не устаканиваются никогда. Релизы раз в две недели, между релизами улучшения идут по фичам.

Ответы06543

145 5 дек, 19:54 145 1306528

>>1306524

Ну я хуй знает как это читать без хотя бы какой-то приблизительной документации какие компоненты за что отвечают и как все устроено. Разобраться конечно можно, но это должно занять кучу времени.

146 5 дек, 19:58 146 1306535

>>1306501
> Открывает функцию мейн и все, что в ней найдет?
В мейне он найдет примерно то же, что написано по слову "--help".
Сначала надо прочитать файлы, которые название которых лежит в корне проекта и написано капсом. Это файлы для людей - README, BUILD, и т. п. Дальше надо собрать проект, потому что иначе это будет ближе к реверс-инижинирингу.
Дальше нужно изучить файловую структуру. Найти конфиг, который программист запилил для себя - там скорее всего будут все возможности проги, даже незадокументированные. Затем можно поизучать интерфейсы основных классов и модулей, возможно там будут комменты. После этого, если проект сбилжен, брать в руки printf и хуряить лог. Мы в сишном треде, так что можно подробнее. Хуяришь вот такую йобу

#define TRACE fprintf(stderr, "trace: %s:%s:%d", __FILE__, __FUNCTION__, __LINE__);fflush(stderr);

и запускаешь. Смотришь лог - кто за чем запускается, как часто и т. п. Убираешь лишний мусор, модифицируешь этот лог, возможно добавляешь печатание дополнительной инфы. Так поймешь где в коде инициализация, "горячие" места в коде и прочие интересные места. Читаешь их.

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

Ответы0654506552066660672906783

147 5 дек, 20:11 147 1306543

>>1306525
>Пришла эра аджайла, когда продукт должен быть готов всегда, а требования не устаканиваются никогда.
Создается ощущение что это просто ЕБУЧИЙ ПОРТАЛ для потоков несопровождаемого быдлокода. Я прав или просто не понял технологию?

Ответы06553

148 5 дек, 20:13 148 1306545

>>1306535
>классов
Вот кстати, что под классом подразумевается в си?

Ответы06562

sage 149 5 дек, 20:20 149 1306552

>>1306535
> отладка принтфами
> 2018

Ответы0655406573

150 5 дек, 20:20 150 1306553

>>1306543
>Создается ощущение что это просто ЕБУЧИЙ ПОРТАЛ для потоков несопровождаемого быдлокода.
Все ровно наоборот. Подумай сам, когда студент лучше учится, когда раз в две недели у него контрольная, или когда раз в год ему нужно сдавать ебический экзамен, а все остальное время он сам по себе. В аджайле технический долг весит над тобой постоянно, наговнокодил сегодня - завтра не успел с фичей и остался на ночь.

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

Ответы06557

151 5 дек, 20:21 151 1306554

>>1306552
Ты ведь младше 19, правда?

Ответы06556

sage 152 5 дек, 20:23 152 1306556

>>1306554
Не угадал, а вот на Си я пишу примерно столько.

Ответы06558

153 5 дек, 20:24 153 1306557

>>1306553
Спасибо за подробный ответ.

154 5 дек, 20:24 154 1306558

>>1306556
Тогда ты совсем дегенерат, увы

Ответы06805

155 5 дек, 20:35 155 1306562

>>1306545
На уровне языка классов нет (поэтому я написал классов и модулей, модуль, которого на уровне языка тоже нет, - это пара из .h и.c файлов с одним именем, ну ты понял), но в целом, если перед тобой есть нечто, что

1. Имеет конструктор
2. Имеет деструктор
3. И имеет кучу функций, работающих только с элементом этой сущности.
4. И, опционально, допуступно только в виде указателя

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

Пример - FILE из стандартной библиотеки.

1. fopen - конструктор
2. fclose - деструктор
3. fwrite, fseek, fprintf - методы
4. Сама структура FILE не документирована, тебе дан только указатель

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

Ответы0658306599

156 5 дек, 20:44 156 1306573

>>1306552
Давай свой пример, не можешь аргументировать - не лезь в дискуссию.
>>1306400-мэн

Ответы06603

157 5 дек, 20:49 157 1306583

>>1306562
Спасибо, добра!
У меня для тебя есть вопрос интересный. Долго выписывать, попозже выложу.
Вкратце - есть одна механическая головоломка с хитрым алгоритмом решения.
Хотелось бы направление как решить описать ее програмными сущностями. Я ее понимаю как инженер, но возможно надо посмотреть под другим углом.

Ответы06596

158 5 дек, 20:55 158 1306596

>>1306583
Механическая-механическая типа вытащить кольцо из ебучей 3д поверхности, или типа кубика Рубика? Потому что первое совсем непросто, а второе совсем просто.

Ответы06604

159 5 дек, 20:57 159 1306599

>>1306562
Что можешь рассказать про реализацию полиморфизма в си? На мой нубский взгляд, это практически брат инкапсуляции - единственные фичи в ООП, которые не нарушают ООП, лол.
Есть некостыльные паттерны в си для этих принципов?

Ответы06631066600679606803

sage 160 5 дек, 21:00 160 1306603

>>1306573
Там говорилось о разборе чужого кода, как читать исходник. Большинство нормальных программ нормально же и читаются, понимания происходящего в целом достаточно ознакомиться с содержимым .h и документацией (если она есть). Чтобы разобраться в реализации, чаще всего достаточно IDE или даже редактора, который умеет в goto definition/find uses. Совсем уж непонятные места гораздо проще отлаживать интерактивно и пошагово, т.е., опять-таки в IDE. А принтфы остаются для сбора информации уровня "составить более-менее полный список файлов, которые открывает программа", а эти задачи напрямую к чтению исходников не относятся.

Ответы06608

161 5 дек, 21:01 161 1306604

>>1306596
Нет-нет, никакой топологии.
Головоломка называется waiter's tray puzzle (поднос официанта):
https://www.youtube.com/watch?v=Q5aDhxrtrP0
Если можно не выкладывай свои мысли пока, я бы хотел узнать мыслю ли я в правильном направлении.
Потому что при анализе получается что там чистейший ООП, хотя иду по ТРИЗ.

Ответы06685

162 5 дек, 21:08 162 1306608

>>1306603
>Большинство нормальных программ нормально же и читаются
Можно список нормальных программ?

163 5 дек, 21:43 163 1306631

>>1306599
Посмотри ядро линукса.
Там сплошь и рядом это.

11 Кб, 214x229
164 5 дек, 22:55 164 1306660

>>1306599
>некостыльные паттерны в си
>некостыльные
>некостыльные
>в си
>некостыльные в си

Ответы06731

165 5 дек, 23:07 165 1306666

>>1306535
От душа анон. Какой охуенно полезный макрос. Просто тонну чая тебе. Сам почему-то до сих пор до него не додумался.

166 5 дек, 23:34 166 1306685

>>1306604
Твоя головоломка напоминает взлом отмычками цилиндровых замков.

167 6 дек, 02:26 167 1306729

>>1306535
Можно пожалуйста пример полностью с хеллоувордом каким нибудь?

168 6 дек, 02:30 168 1306731

>>1306660
Крестоблядь, съеби уже. Хватит притягивать понятие "костыль" ко всему, что увидишь. Если следовать такой логике, то кресты это один большой костыль.

37 Кб, 460x604
169 6 дек, 07:53 169 1306781

Не совсем релейтед треду вопрос, но лучше задам тут, сишники же самые вумные.
Хочу поиграться с GTK+, сначала из сишки которую плохо знаю, потом из питона.
Но я виндузятник и слабо понимаю как подключаются библиотеки линуксового окружения, да и вообще слабо представляю что называют "окружением".
Обычно использую git-bash, но в его MinGW нет пекедж менеджера.
Насколько я понимаю мне нужно поставить MinGW или msys и в их пекедж-менеджере накатить GTK+.
Дальше мне нужно будет пользоваться башем что идёт с MinGW/msys или можно продолжить с привычным мне git-bash?

Ответы06787

170 6 дек, 07:55 170 1306783

>>1306535

Ну вот откуда ты, например, узнал об этом макросе? Какие есть книги, которые рассказывают о таких вещах?

Ответы06917

57 Кб, 807x454
171 6 дек, 08:07 171 1306787

>>1306781
Запердоль линукс в виртуалке, в том же VMware. Под виндой юзать линуксовые тулкиты такое себе. Ну и да, с вида гтк кода ты можешь с непривычки охуеть

Ответы06792

157 Кб, 1100x885
172 6 дек, 08:18 172 1306792

>>1306787
>Под виндой юзать линуксовые тулкиты такое себе.
Но GTK же КРОССПЛАТФОРМЕННЫЙ.
Блять, ни одного нормального GUI-фреймверка. Нет, я не хочу Qt.

Ответы06802

173 6 дек, 08:27 173 1306796

>>1306599
>реализацию полиморфизма в си?
статический и ad hoc делается макросами
динамический через рукописный vtable

Ответы06798

174 6 дек, 08:29 174 1306798

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

Вот блять из-за этой залупы половину си-кода читать невозможно. Макрос на макросе макросом погоняет.

Ответы06813

175 6 дек, 08:35 175 1306802

>>1306792
Как будто qt хорошая кроссплатформа. У меня на линуксах вообще культей нет. Т.к это говно на крестопараше к которому хуй прикрутишь норм ЯП. Мне вот wxWidgets нравиться, но это тоже не идеал как по мне

176 6 дек, 08:38 176 1306803

>>1306599
>инкапсуляции
на уровне динамических и статический библиотек - функции (и глобальные переменные) следует явно помечать как импортируемые/экпортируемые
на уровне объектных файлов можно ограничить видимость функций и переменных через ключевое слово static
переменные в функциях и блоках имеют локальность
композиция осуществляется за счет возможности введения производных типов, в частности структур

177 6 дек, 08:42 177 1306805

>>1306558
я другой анон, но обзывать человека дегенератом за то что он вполне справедливо заметил о том что отлаживаться принтами - глупость, это конечно, наглость

Ответы068060681206917

178 6 дек, 08:45 178 1306806

>>1306805
Тоже встряну. Ведь этот TRACE можно по-иному назвать ERROR_LOG, или просто LOG. Как бы ты лично реализовал логгер в одну строку?

Ответы06810

179 6 дек, 09:05 179 1306810

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

180 6 дек, 09:14 180 1306812

>>1306805
Отлаживаться принтфами вполне нормальная практика, когда на 99% понимаешь, что за код пишешь и как он будет работать, и сомнения лишь есть в самых редких случаях работы программы в сложно-спроектированных программ, но это проблема уже не разработки таких программ, а в слабом проектирование, так как добросовестно спроектированным приложениям отладка совсем не требуется.
Деббагеры нужны только в случае же анализа работы сторонних программ по бинарным файлам - реинженеринг, ну или когда код программы был написан очередным мамкиным программистом на уровне отъебись, т.е. сложность кода стремится к бесконечности, тогда и только тогда стоит использовать специальный отладочный софт. Ну а если программисту известно с чем он столкнулся и для его глаза видно, что программа неоправдано сложно реализована, тогда у него может возникнуть желание написать версию исходника намного простую (но не проще) и практичную (если ему это надо), однако это обратно пропорционально объёму исходного текста программы (желание есть, а исходник овер 9000 строк, поэтому придётся свой прекрасный код мешать с говнокодом).
----
Мораль такова, что не стоит эксплуатировать деббагеры слишком часто в неопраданных целях, потому что это приводит к такой очень плохой практике как "написание программ методом горячей отладки". В "холодной отладке" и "лог отладке" нет ничего хорошего или плохого, однако, прибегая к таким практикам, это в очередной раз лишь показывает непрофессионализм программиста.

Стремитесь к высококвалифицированности в мелочах для самых различных ситуаций программирования, проектирования и исследования стороннего кода по принципу "Лучше быть очередным Пабло Пикассо, чем инертным копипастером".

Ответы06814

181 6 дек, 09:15 181 1306813

>>1306798
можно компилировать с опцией оставляющей результат препроцессирования, удобно смотреть во что разворачиваются макросы
потом никто не мешает использовать шаблоны с++, те писать в сишном стиле, но делать шаблоны там где их можно использовать вместо макросов

182 6 дек, 09:19 182 1306814

>>1306812
эй, давай по простому:
нахуя срать макросами трассировки по коду, компилить все это, потом оставлять всю эту отладочную срань в релизе или вычищать ручками, добавляя себе работенку
когда можно тупо прогнать ту же трассировку в отладчике, или, более того, воспользоваться специализированными тулзами для этого

Ответы0681906917

183 6 дек, 09:41 183 1306819

>>1306814
Об этом мной и было написано, к тому же из того следует, что макросы трассировки желательно достигать в объме 1% исходного текста, а также программист, который выпускает исходник в массы с макросами трассировки - показывает лишь то, что этот программист совершенно не самолюбив и ментальная невежда, потому что демонстрирует свою неопытность широким массам и мазолит глаза опытным программистам.
Практика же "журналирования" предполагает постоянный вывод информации об предупреждениях или ошибках при тех или иных обстоятельствах.
Практика же "лог отладки" предполагает лишь создание временной платформы избыточного кода для того, чтобы разрешить неопределенность понимания работы спроектированного кода или произвести локальную проверку на "подводные камни" (т.е. профсамотестирование) и при получение исчерпывающей информации необходимо разобрать данную платформу (если имеется полная увереность в исчерпаности локального исследования работы разработанного кода).

Ответы06923

184 6 дек, 10:05 184 1306826

Анон, стоп скроллинг хир, ай нид хелп.
Опишу ситуацию в общем. Много лет писал на паскале, использовал делфи для коммерческих задач и fpc для всякой системщины. На fpc писал используя функциональный стиль программирования. В какой то момент понял, что меня от паскаля уже воротит, и решил перекатиться в си. До этого на си писал под контроллеры только и не особо большие проекты, строк на 200-300 кода. Последний месяц пишу на це. Под линукс использую gcc+clion, под винду студию. Перекатиться с паскаля проблем не составило, к синтаксису привык за неделю. Под линукс уже написано пара проектов сетевых демонов, под винду сейчас пилится один большой проект.
Так вот, оглядываясь на свой код, я понимаю, что поддерживать его в будущем будет затруднительно, так как изначально архитектура приложения была построена криво. Когда проект не большой, помогает рефакторинг, но когда проект разрастается, тут уже борешься за голову и охуеваешь, от того, как криво все спроектировано внутри приложения.
На гитхабе изучены тонны исходников разных проектов, от маленьких до больших опенсорсных. И я замечаю, что большинство из них написаны абы как, лишь бы работало.
Так вот вопрос в чем, может есть где годные книги или статьи, как научиться правильно проектировать приложения, но именно касательно функциональных ЯП? Чтобы в будущем при поддержке проекта не возникли ситуации, что при добавлении новой фичи, приходилось бы переписывать половину кода.
Либо киньте ссылку на гитхаб проекта, который вы считаете эталоном хорошей архитектуры приложения.

Ответы068360683706854

185 6 дек, 10:33 185 1306836

>>1306826
Хорошо спроектировать код - это задача творческого характера.
Найти универсальное плацебо для всевозможных програм очень сложно, почти невозможно.
Обычно при проектирование кода желательно придерживаться основных принципов, таких как машстабирование, переносимость, прозрачность и максимальная независимость элементов кода. Также всегда можно обратится к практике "самопрождающих шаблонов проектирования" и полезно ознакомится с видами "антипаттернов", однако иногда при данном использование может понадобиться несколько "паттернов", что может вызвать некоторые избыточности при наложении друг на друга данных методик.

Сколько бы книжек или идеальных проектов не исследовано - проектирование всегда индивидуальный процесс для каждого проекта и регулируется в рамках поставленной цели (хорошо, конечно, если весь проект вписывается в один "паттерн", но это настолько редко, что можно назвать исключением).
Однако, ознакомится с чужим опытом, несомненно, всегда полезно, но следует всегда быть бдительным и аккуратным.

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

186 6 дек, 10:38 186 1306837

>>1306826
>может есть где годные книги или статьи, как научиться правильно проектировать приложения, но именно касательно функциональных ЯП?
Удваиваю вопрос.

Я бы разнес все максисально по модулям и директориям, по отдельным небольшим файлам. Погугли еще TDD, должно здорово помочь с этим

187 6 дек, 10:55 187 1306843

Сап. Какие есть способы вывести многострочный текст в си? Вот что известно мне - https://pastebin.com/8VFEEH8Q
Последний вообще надо выводить последовательно в цикле

Может есть способы по элегантнее?

Ответы06846

188 6 дек, 11:30 188 1306846

>>1306843
//text.h
#define USERNAME "anonymous"
#define TEXT_HELP_APPLICATION \
"Useful documentation of the application for you.\n\
Call program without a pain and regrets, also prepare to kick self ass!\n\
After we are talking with you \
"USERNAME" \
and helpful again.\n"

//main.c
#include <stdio.h>
#include "text.h"

int main ()
{
char* something;
something = TEXT_HELP_APPLICATION;
printf("%s", something);
return 0;
}

Мне такое больше по душе, но это всегда было, как по мне, делом вкуса для каждого программиста.

189 6 дек, 11:44 189 1306854

>>1306826
>хорошей архитектуры приложения
svn, использующий apr
в отличие от git, кстати
это если речь о внутренних потрохах

190 6 дек, 13:50 190 1306906

Скажите, а как отзывались о языке Си программисты в те времена, когда он только появляся на публике? Что почитать по истории языка Си на эту тему?

Ответы06915

191 6 дек, 14:12 191 1306915

>>1306906
Насчет "как относились" мне неизвестно, а сам язык с 1972 претерпел значительные конструктивные изменения лишь в 1989-1990 гг.
Далее небольшие дополнения в 1995 году и уже с 1999 годов Си вырос в Плюсы (Костыли) по настоящее время (2011, 2014, 2017 гг.).
Поэтому многие приверженцы языка программирования Си. Нужно больше информации по истории развития языка - читай/учи/разбирайся в спецификациях, включая мёртвые.

Историю развития языка "в лицах" самому было бы забавно почитать, но думаю такое маловероятно найдётся или не будет посвящено полностью только Си языку, а вот с историей развития ЭВМ от гигантов до декстопов весьма полезно будет ознакомится.
Почитать данную историю можешь в интернетах с помощью гугла.

Ответы06922

192 6 дек, 14:13 192 1306917

>>1306783
По-моему из этого ответа на SO
https://stackoverflow.com/questions/1644868/c-define-macro-for-debug-printing
>>1306805
Дегенерат он потому, что я не писал об отладке ни слова. Просто очередной IDE-ребенок триггернулся "ой, как же, это принтфы, а у меня же туулинг, маам, скажи этому дяде, что сейчас не 1970 год".
И если отлаживаться притфами или дебаггером - вопрос спорный и мне лень об этом спорить (ответ тут простой - нужно уметь и то и то, IDE-дети без отладчика работать не умеют), то здесь никакого вопроса нет, потому что альтернативы подобному логгированию при чтении чужого кода нет. У меня в тексте даже не написано "не пользуйтесь отладчиком", потому что мне похуй. Подобные трейсы при работе с отладчиком тоже помогают.
>трассировку такими отладочными макросами имеет смысл делать когда работаешь с замороченным сетевым, многопоточным кодом, потому что, хоть сейчас и есть инструментарий что может работать и с таким кодом, зачастую он требует некой предварительной настройки и, вообще, времени на его освоение
А еще с кодом с большим количеством рекурсивных вложений, с кодом, использующим плохо выводимые в отладчике структуры данных (типа математики видеокодеков). Ну то есть с любым современным кодом.
А вы мне тут про ваши лабы кукарекаете, в которых можно часами кликать step-in и step-out. То есть в целом аргументация простая - нахуя нам учить что-то новое, если для чтения лаб и так сойдет. Ну деградируйте, хули.
>>1306814
>нахуя срать макросами трассировки по коду, компилить все это, потом оставлять всю эту отладочную срань в релизе или вычищать ручками, добавляя себе работенку
Открой для себя git stash, ребенок.

Ответы0694006943

193 6 дек, 14:23 193 1306921

>>1305157 (OP)
Эй, мудрецы, как там конпеляторы относятся к дефайнам с русскими утф8 символами?

194 6 дек, 14:24 194 1306922

>>1306915
>Насчет "как относились" мне неизвестно

В те годы столько программистов перешло на Си с других языков. Наверняка должны остаться письменные воспоминания с впечатлениями.
Советские программисты, наверное, позже всех перешли.

Ответы06926

195 6 дек, 14:24 195 1306923

>>1306819
>Практика же "журналирования" предполагает постоянный вывод информации об предупреждениях или ошибках при тех или иных обстоятельствах.
Не обязательно постоянный. У журналирования может быть несколько уровней, включая несколько уровней отладочной информации.

>Практика же "лог отладки" предполагает лишь создание временной платформы избыточного кода для того, чтобы разрешить неопределенность понимания работы спроектированного кода или произвести локальную проверку на "подводные камни" (т.е. профсамотестирование) и при получение исчерпывающей информации необходимо разобрать данную платформу (если имеется полная увереность в исчерпаности локального исследования работы разработанного кода).
Эта практика предполагает наличие постоянной платформы в виде набора pretty_print функций, которые легко позволяют тебе выводить состояние твоей программы в любом месте. Вывод состояния после отладки ты удаляешь, но вот сами эти функции остаются в коде. В сишке это в особенности важно, потому что даже массивы не умеют себя выводить по умолчанию, не говоря уже о сложных рекурсивных структурах. Десятое правило Гринспена короче.

Ответы0693806945

196 6 дек, 14:28 196 1306926

>>1306922
Впервые о языке C, о системе Unix я прочитал еще в семидесятые… Пользуясь семейным блатом в ГРНТБ (республиканской научно-технической библиотеке), я имел доступ к журналам, которые переводились на русский или реферировались, т.е. считались благонадежными и были всего лишь «для служебного пользования». Каковое пользование заключалось в том, что они в пятницу вечером уносились в сумке из библиотеки, а в понедельник утром благополучно туда возвращались. Так я лет пятнадцать читал Electronics Weekly и Acta Informatica… Но то были рассказы о чем-то далеком и недоступном. Как вдруг, году эдак в 81-м, сразу во многих местах появились магнитные ленты с дистрибутивами Unix v6 и v7. Откуда? Переписали у знакомых, те — у своих знакомых… далее — везде… Система преспокойно запускалась на СМ-4 (игнорируя, естественно, русский язык), а дистрибутивы содержали исходные тексты ядра, компиляторов, утилит, а также полную документацию. Конечно, требовалась русификация драйверов дисплеев и принтеров и «обучение русскому языку» многочисленных программ обработки текстов. Но это все были вполне посильные задачи, главное же — система изначально была вполне работоспособной…

Удивительного в самом факте появления лент мало: в Союз попадала математика от IBM, DEC и HP, теперь вот попали разработки Bell Labs — большое дело! Удивительна была дальнейшая судьба этих лент в Союзе. Не передача (под большим секретом) в пару-тройку институтов, чтобы там на их основе с понтом якобы разрабатывать якобы советскую математику, но бесконтрольное и явно несанкционированное распространение по разным ВЦ в разных городах страны. Похоже, что ленты привезены были в Союз не доблестными героями из «конторы глубинного бурения», а аспирантами-докторантами, выезжавшими по обмену на стажировку в западные университеты (где дистрибутивы Unix распространялись свободно и бесплатно). Конечно, людям вроде меня, бывшим долгие годы невыездными, в это верится с трудом. Когда мне разрешили, наконец, навестить родственников в Польше, я всерьез трясся, что на границе не пропустят купленные там книжки Лема. К счастью, пропустили. Однако помню, как в том же вагоне погранцы повязали старика-поляка. Они когда шли по вагону, то громкой скороговоркой возглашали: «оружие-наркотики-религиозные атрибуты». Это что запрещено, дескать, ко ввозу. Именно так, через тире: оружие — иконки — наркотики… И вот старика обшмонали и обнаружили дешевенькую литографическую бумажную иконку. Старик — явно сельский житель из галицийской глубинки — путая от волнения украинские и польские слова, сбивчиво пытался объяснить, что его старуха больная, он ей везет освященный образок Матки Боски Ченстоховой, только ей, больше никому даже показывать не будет. А когда иконку забрали — заплакал, попытался бухнуться на колени, лопотал, что у старухи рак, она умирает, он только за этим образком в Польшу и ездил… Погранцы увели его и никто в битком набитом вагоне за старика не заступился. И я молчал — такой же трусливый раб, как все, только что с фигой в кармане… Так вот, тогда у меня и в мыслях не могло возникнуть тащить через границу магнитную ленту. Но… это пуганый воробей стреляную ворону боится. А вот знакомый поляк, учившийся в заочной аспирантуре в Киеве, постоянно мотался туда-сюда и именно с лентами. Вряд ли на границе проверяли, где материалы его личной диссертации, а где что-то другое. Да и люди, выезжавшие на Запад на стажировку — хоть и мало таких, но были (даже среди авторов «Заметок» есть) — с хорошими анкетами, непуганые… Так что, по здравому размышлению, версия о привозе в Союз этих лент в порядке частной инициативы выглядит вполне реалистичной.

Другая версия — еще (сюр)реалистичней: через знаменитый рыболовецкий колхоз имени В. И. Ленина, что на острове Сааремаа (вот написал и засомневался: Ленина ли или какого другого краснопузого ублюдка калибром помельче?.. но, не суть важно). Сведущие люди не удивятся и не спросят, а какое это отношение имели эстонские рыбаки к операционным системам и вообще — к компьютерам. Те же, кто не в курсе, могут погуглить “Datasaab affair” — это будет предыстория. Что до самой истории, то позднее мне довелось познакомиться с этими славными колхозниками, о чем расскажу в свое время. На прямой вопрос об их причастности к “Unix affair” я получил довольно уклончивый ответ. Что, как говориться, наводит на…

Ну ладно, так или иначе ленты в страну попали, а дальше… А дальше сработала та Unix-магия, которая очаровывала всякого, кто начинал знакомиться с системой. И которая за считанные годы принесла сугубо исследовательскому, любопытства ради затеянному, некоммерческому проекту феноменальную популярность по всему свету… Хм… тут, чувствую, необходимо сделать некое предуведомление. До сих пор я рассказывал о делах давно минувших, о компьютерах, сохранившихся разве что в музеях, о программах и языках, если и доживших до наших дней, то доживающих где-то в укромных уголках, вдали от столбовых дорог. Unix же сегодня — это даже не одна конкретная система, а целый континент, целая техническая цивилизация со своей сорокалетней историей, что и по меркам человеческой жизни много, а в масштабе спрессованного времени IT-мира соответствует столетиям, эпохам. Это определенная философия, стиль, комплеск идей, определивших облик современной IT-индустрии. Наконец, это весомый сегмент рынка, многомиллиардные активы. Что же до языка C, то он и его потомки (C++, Objective-C, Java, C#) составляют мэйнстрим, доминанту современного программирования… и трудно сыскать язык, созданный в последнюю четверть века и не испытавший его влияния. А для большинства активно работающих программистов (тридцати- и сорокалетних) нынешний мир — единственный, другой они не застали. Я же пытаюсь рассказать о том другом, исчезнувшем мире. О далеких предках могущественных фамилий Unix и C, передавших потомкам свои имена и родовые черты, но отличавшихся от них, нынешних, поведением и мотивацией, привычками и идеалами — очень, очень многим… Тогда в начале восьмидесятых в Союзе мы имели технику семидесятых годов (неизбывное технологическое отставание) и версии Unix нам были доступны из предыдущего десятилетия (не потому даже, что более современные не удалось спереть на Западе, а попросту не было машин, где б они могли работать). Итак, если вдруг кто-то из молодых коллег будет читать этот текст, пусть примет во внимание временнóй фактор: речь идет о первом десятилетии сорокалетней истории. Это все равно как первое столетие четырехвековой истории Нью-Йорка — безлюдные лесные чащобы Манхэттэна, крошечное поселение на побережье и… все еще впереди…

196 6 дек, 14:28 196 1306926

>>1306922
Впервые о языке C, о системе Unix я прочитал еще в семидесятые… Пользуясь семейным блатом в ГРНТБ (республиканской научно-технической библиотеке), я имел доступ к журналам, которые переводились на русский или реферировались, т.е. считались благонадежными и были всего лишь «для служебного пользования». Каковое пользование заключалось в том, что они в пятницу вечером уносились в сумке из библиотеки, а в понедельник утром благополучно туда возвращались. Так я лет пятнадцать читал Electronics Weekly и Acta Informatica… Но то были рассказы о чем-то далеком и недоступном. Как вдруг, году эдак в 81-м, сразу во многих местах появились магнитные ленты с дистрибутивами Unix v6 и v7. Откуда? Переписали у знакомых, те — у своих знакомых… далее — везде… Система преспокойно запускалась на СМ-4 (игнорируя, естественно, русский язык), а дистрибутивы содержали исходные тексты ядра, компиляторов, утилит, а также полную документацию. Конечно, требовалась русификация драйверов дисплеев и принтеров и «обучение русскому языку» многочисленных программ обработки текстов. Но это все были вполне посильные задачи, главное же — система изначально была вполне работоспособной…

Удивительного в самом факте появления лент мало: в Союз попадала математика от IBM, DEC и HP, теперь вот попали разработки Bell Labs — большое дело! Удивительна была дальнейшая судьба этих лент в Союзе. Не передача (под большим секретом) в пару-тройку институтов, чтобы там на их основе с понтом якобы разрабатывать якобы советскую математику, но бесконтрольное и явно несанкционированное распространение по разным ВЦ в разных городах страны. Похоже, что ленты привезены были в Союз не доблестными героями из «конторы глубинного бурения», а аспирантами-докторантами, выезжавшими по обмену на стажировку в западные университеты (где дистрибутивы Unix распространялись свободно и бесплатно). Конечно, людям вроде меня, бывшим долгие годы невыездными, в это верится с трудом. Когда мне разрешили, наконец, навестить родственников в Польше, я всерьез трясся, что на границе не пропустят купленные там книжки Лема. К счастью, пропустили. Однако помню, как в том же вагоне погранцы повязали старика-поляка. Они когда шли по вагону, то громкой скороговоркой возглашали: «оружие-наркотики-религиозные атрибуты». Это что запрещено, дескать, ко ввозу. Именно так, через тире: оружие — иконки — наркотики… И вот старика обшмонали и обнаружили дешевенькую литографическую бумажную иконку. Старик — явно сельский житель из галицийской глубинки — путая от волнения украинские и польские слова, сбивчиво пытался объяснить, что его старуха больная, он ей везет освященный образок Матки Боски Ченстоховой, только ей, больше никому даже показывать не будет. А когда иконку забрали — заплакал, попытался бухнуться на колени, лопотал, что у старухи рак, она умирает, он только за этим образком в Польшу и ездил… Погранцы увели его и никто в битком набитом вагоне за старика не заступился. И я молчал — такой же трусливый раб, как все, только что с фигой в кармане… Так вот, тогда у меня и в мыслях не могло возникнуть тащить через границу магнитную ленту. Но… это пуганый воробей стреляную ворону боится. А вот знакомый поляк, учившийся в заочной аспирантуре в Киеве, постоянно мотался туда-сюда и именно с лентами. Вряд ли на границе проверяли, где материалы его личной диссертации, а где что-то другое. Да и люди, выезжавшие на Запад на стажировку — хоть и мало таких, но были (даже среди авторов «Заметок» есть) — с хорошими анкетами, непуганые… Так что, по здравому размышлению, версия о привозе в Союз этих лент в порядке частной инициативы выглядит вполне реалистичной.

Другая версия — еще (сюр)реалистичней: через знаменитый рыболовецкий колхоз имени В. И. Ленина, что на острове Сааремаа (вот написал и засомневался: Ленина ли или какого другого краснопузого ублюдка калибром помельче?.. но, не суть важно). Сведущие люди не удивятся и не спросят, а какое это отношение имели эстонские рыбаки к операционным системам и вообще — к компьютерам. Те же, кто не в курсе, могут погуглить “Datasaab affair” — это будет предыстория. Что до самой истории, то позднее мне довелось познакомиться с этими славными колхозниками, о чем расскажу в свое время. На прямой вопрос об их причастности к “Unix affair” я получил довольно уклончивый ответ. Что, как говориться, наводит на…

Ну ладно, так или иначе ленты в страну попали, а дальше… А дальше сработала та Unix-магия, которая очаровывала всякого, кто начинал знакомиться с системой. И которая за считанные годы принесла сугубо исследовательскому, любопытства ради затеянному, некоммерческому проекту феноменальную популярность по всему свету… Хм… тут, чувствую, необходимо сделать некое предуведомление. До сих пор я рассказывал о делах давно минувших, о компьютерах, сохранившихся разве что в музеях, о программах и языках, если и доживших до наших дней, то доживающих где-то в укромных уголках, вдали от столбовых дорог. Unix же сегодня — это даже не одна конкретная система, а целый континент, целая техническая цивилизация со своей сорокалетней историей, что и по меркам человеческой жизни много, а в масштабе спрессованного времени IT-мира соответствует столетиям, эпохам. Это определенная философия, стиль, комплеск идей, определивших облик современной IT-индустрии. Наконец, это весомый сегмент рынка, многомиллиардные активы. Что же до языка C, то он и его потомки (C++, Objective-C, Java, C#) составляют мэйнстрим, доминанту современного программирования… и трудно сыскать язык, созданный в последнюю четверть века и не испытавший его влияния. А для большинства активно работающих программистов (тридцати- и сорокалетних) нынешний мир — единственный, другой они не застали. Я же пытаюсь рассказать о том другом, исчезнувшем мире. О далеких предках могущественных фамилий Unix и C, передавших потомкам свои имена и родовые черты, но отличавшихся от них, нынешних, поведением и мотивацией, привычками и идеалами — очень, очень многим… Тогда в начале восьмидесятых в Союзе мы имели технику семидесятых годов (неизбывное технологическое отставание) и версии Unix нам были доступны из предыдущего десятилетия (не потому даже, что более современные не удалось спереть на Западе, а попросту не было машин, где б они могли работать). Итак, если вдруг кто-то из молодых коллег будет читать этот текст, пусть примет во внимание временнóй фактор: речь идет о первом десятилетии сорокалетней истории. Это все равно как первое столетие четырехвековой истории Нью-Йорка — безлюдные лесные чащобы Манхэттэна, крошечное поселение на побережье и… все еще впереди…

Показать весь текст

197 6 дек, 14:29 197 1306927

Так чем очаровывал Unix? Прежде всего, языком C, на котором был написан. Долгожданным языком программирования для программистов. Стоп! А другие языки, тот же ФОРТРАН или КОБОЛ, они для кого? Да, для нас, конечно, для кого ж еще. Но только эти языки были заточены под решение тех или иных прикладных задач — инженерно-расчетных или бухгалтерско-учетных, а вот как быть с задачами неприкладными? Они как невидимая часть айсберга — неприметная громадина, с которой пользователь напрямую не соприкасается: операционные системы и базы данных, компиляторы тех же языков программирование, утилиты, драйверы устройств и и еще тысячи всяких разных программ, сервисов, библиотек функций и т.д. и т.п. И все это нам надо программировать. На чем? Нынче и вопроса такого не возникает, но ведь было время, когда в ответ звучало: «на ассемблере» — на низкоуревневом машинном языке. Или же на языках вроде ФОРТРАНа или ПЛ/1 — чересчур высокоуревневых. Гений дизайнера (Денниса Ритчи) как раз и проявился в безошибочном выборе уровня языка, уровня абстракции — достаточно близкого к «железу», чтоб обеспечить эффективность и достаточно далекого от него, чтоб не утратить мобильность… А еще язык был как-то очень ладно скроен, явственно ощущалось, что запроектировал его человек, знаюший ремесло программера не понаслышке. Короче говоря, прочитав с восторгом описание языка (тут еще сыграла свою роль изумительная книга Кернигана и Ритчи, недаром называемая «the White Bible» и по праву считающаяся шедевром технической прозы) и написав пару-тройку программок я уже ни на каких других языках работать не хотел. (Но всему свое время: уже лет пятнадцать, как я на нем не работаю и… не хочу — на C++ или C# куда как удобней)…

Сама же система Unix привлекала своей компактностью, обозримостью, концептуальной стройностью, легкостью. Она изначально задумывалась и создавалась как антитеза тяжеловесным, многофункциональным, переусложненным, труднопостижимым, внушающим почтительный ужас разработкам огромных коллективов, что было характерно для эпохи мэйнфреймов. Квинтэссенция, яркий зримый образ этих чудищ нарисован в замечательной книге руководителя разработки системы OS/360 Фредерика Брукса «Мифический человеко-месяц» (“The Mythical Man-Month” by Frederick Brooks) — асфальтовая топь, зыбучая смоляная трясина, неумолимо затягивающая попавших в нее динозавров. В книге убедительно показано, каких чудовищных усилий и денег стоит разработка больших систем, достижение должного уровня качества и надежности. Создатели Unix участвовали в разработке операционной системы Multics, само название которой (Multiplexed Information and Computing Service) недвусмысленно указывало на сложность, множественность исполняемых функций. Устав барахтаться в смоляной яме «отцы-основатели» Кен Томпсон и Деннис Ритчи принялись делать простую и понятную систему, которую они с явным вызовом поначалу назвали Unics, т.е. “uniplexed” по контрасту с “multiplexed”. (Забавно, что пресловутый монстр Multics выглядит предельно компактным и простым до примитивности на фоне современных операционных систем, потомков Unix).

В своей книге Брукс вспоминает излюбленные журналистами сказания о том, как дескать пара энтузиастов склепала на коленке в гараже замечательную программу, оказавшуюся лучше корпоративных разработок с многомиллионными бюджетами. Многоопытный менеджер проекта с понятным сарказмом вопрошает, почему же дуэты одержимых парней из гаражей не заменили собой софтверные компании? А ведь правда — не заменили. Но и пресловутые гаражные дуэты — не выдумка: Билл Хьюлетт и Дэйв Паккард, Билл Гейтс и Пол Аллен, Стив Джобс и Стив Возняк, из совсем недавних — Ларри Пейдж и Сергей Брин. Они — больше, чем правда: «двое в гараже» — архетип современного мифа. А разгадка кажущегося противоречия в том, что в гаражах начинают, но успешное начинание успешно продолжаться может только в офисе… Unix, созданный хоть и не в гараже, но небольшой группой исследователей, тоже стал мифом, а точнее — жертвой на алтаре собственного культа.

К концу семидесятых Unix являл собой идеальную систему для университетов и исследовательских лабораторий, т.е. для групп энтузиастов. Он был ясен и прозрачен, поскольку реализовывал только «самые вкусные», концептуально важные идеи. По сути, это был замечательный набор инструментов и заготовок для творческого применения при самостоятельном построении операционной среды. Дополнительным плюсом было то, что помимо великолепно написанных программ имелась не менее великолепно написанная документация. Впрочем, тексты эти грех называть казенным словом «документация». Чего стоила только «Книга Джона Лайонса» (“Lions’ Commentary on Unix” by John Lions), которая объясняла функционирование ядра системы «в лицах», комментируя работу его модулей и служб — совершенно уникальное, бесценное пособие… Так, а чего же в системе не было? Не было ничего даже отдаленно напоминающего интуитивно-понятный «дружественный» интерфейс. Система предназначалась искушенным профи, а никак не лопуховатым ламерам, и принципиально не «обихаживала» пользователя. Что еще? Вот я упомянул раньше, что не было поддержки русского языка. Так никакого языка, ничегошеньки, кроме базовой (английской) латиницы и неявной локализации для Соединенных Штатов. Предполагалось, что если понадобится французу, японцу или русскому поддержать родной язык, то он изучит исходный код, да и наточит систему соответствующим образом. А если у кого-то на машине стоит устройство, которого не стояло у разработчиков в Bell Labs (и посему нет в поставке), то пускай возьмет и сам напишет драйвер устройства. Ну, а если захочется перенести систему на другую машинную архитектуру, то… все открыто, изучай, пиши C-компилятор (даже не весь, а только кодогенератор — модуль, где сконцентрирована машинная специфика), потом меняй машинно-зависимые модули ядра системы и… вперед. Непростая, но страшно интересная задача.

Итак, Unix был по сути типичным удачным исследовательским проектом. Только — очень удачным. Настолько удачным, что распространение его напоминало пандемию (чему изрядно поспоспешествовали дешевизна и либерализм лицензий). Естественно, не могло не возникнуть желание подзаработать на столь популярной штуковине и… дальше, в восьмидесятые годы, начинается уже другая история: выпуск множества коммерческих версий, череда покупок и перекупок лицензионных прав, бесконечные судебные тяжбы, появление альтернативных ядер (Minix, Linux), в девяностые — дурацкая быдловатая «юниксомания», круто замешанная на завистливой «гейтсофобии»… Все это общеизвестно и совсем неинтересно. На авансцену вышли торговцы, юристы и пиарщики, а симпатичные бородачи — создатели системы — тихонько отошли в тень и, поскольку слово “Unix” стало товаром, продолжили свои исследования под другой вывеской — Plan 9…

Ход событий в Союзе соответствует общему тренду: сначала хаотичное увлеченное «освоение» новой игрушки; потом постепенно выкристализовываются центры, где адаптацией и локализацией начинают заниматься всерьез — ИНЭУМ, Курчатовский институт, ИПК Минавтопрома — и выпускают, наконец, три конкурирующие локализованные версии для советских клонов PDP-11 — ИНМОС, ДЕМОС, МНОС, соответственно (расшифровка аббревиатур: «инструментальная мобильная», «диалоговая единая мобильная», «машинно-независимая» операционная система). Особняком, слегка на отшибе держались те, кто реализовывал Unix на машинах не самых массовых и популярных. Я упоминал уже команду из МГУ, сделавшую реализацию на ЕС-1010 и 1012, причем, написавшую с чистого листа C-компилятор и ядро ОС (насколько я знаю, на французские прототипы этих машин, Mitra-15 и 225, Unix так и не был портирован). В другой команде, ухитрившейся засунуть Unix в «советский Wang», легендарную «ядерно-бухгалтерскую» машину Искра-226 (о, это было не просто!), довелось участвовать автору этих строк. Но это отдельная история…

197 6 дек, 14:29 197 1306927

Так чем очаровывал Unix? Прежде всего, языком C, на котором был написан. Долгожданным языком программирования для программистов. Стоп! А другие языки, тот же ФОРТРАН или КОБОЛ, они для кого? Да, для нас, конечно, для кого ж еще. Но только эти языки были заточены под решение тех или иных прикладных задач — инженерно-расчетных или бухгалтерско-учетных, а вот как быть с задачами неприкладными? Они как невидимая часть айсберга — неприметная громадина, с которой пользователь напрямую не соприкасается: операционные системы и базы данных, компиляторы тех же языков программирование, утилиты, драйверы устройств и и еще тысячи всяких разных программ, сервисов, библиотек функций и т.д. и т.п. И все это нам надо программировать. На чем? Нынче и вопроса такого не возникает, но ведь было время, когда в ответ звучало: «на ассемблере» — на низкоуревневом машинном языке. Или же на языках вроде ФОРТРАНа или ПЛ/1 — чересчур высокоуревневых. Гений дизайнера (Денниса Ритчи) как раз и проявился в безошибочном выборе уровня языка, уровня абстракции — достаточно близкого к «железу», чтоб обеспечить эффективность и достаточно далекого от него, чтоб не утратить мобильность… А еще язык был как-то очень ладно скроен, явственно ощущалось, что запроектировал его человек, знаюший ремесло программера не понаслышке. Короче говоря, прочитав с восторгом описание языка (тут еще сыграла свою роль изумительная книга Кернигана и Ритчи, недаром называемая «the White Bible» и по праву считающаяся шедевром технической прозы) и написав пару-тройку программок я уже ни на каких других языках работать не хотел. (Но всему свое время: уже лет пятнадцать, как я на нем не работаю и… не хочу — на C++ или C# куда как удобней)…

Сама же система Unix привлекала своей компактностью, обозримостью, концептуальной стройностью, легкостью. Она изначально задумывалась и создавалась как антитеза тяжеловесным, многофункциональным, переусложненным, труднопостижимым, внушающим почтительный ужас разработкам огромных коллективов, что было характерно для эпохи мэйнфреймов. Квинтэссенция, яркий зримый образ этих чудищ нарисован в замечательной книге руководителя разработки системы OS/360 Фредерика Брукса «Мифический человеко-месяц» (“The Mythical Man-Month” by Frederick Brooks) — асфальтовая топь, зыбучая смоляная трясина, неумолимо затягивающая попавших в нее динозавров. В книге убедительно показано, каких чудовищных усилий и денег стоит разработка больших систем, достижение должного уровня качества и надежности. Создатели Unix участвовали в разработке операционной системы Multics, само название которой (Multiplexed Information and Computing Service) недвусмысленно указывало на сложность, множественность исполняемых функций. Устав барахтаться в смоляной яме «отцы-основатели» Кен Томпсон и Деннис Ритчи принялись делать простую и понятную систему, которую они с явным вызовом поначалу назвали Unics, т.е. “uniplexed” по контрасту с “multiplexed”. (Забавно, что пресловутый монстр Multics выглядит предельно компактным и простым до примитивности на фоне современных операционных систем, потомков Unix).

В своей книге Брукс вспоминает излюбленные журналистами сказания о том, как дескать пара энтузиастов склепала на коленке в гараже замечательную программу, оказавшуюся лучше корпоративных разработок с многомиллионными бюджетами. Многоопытный менеджер проекта с понятным сарказмом вопрошает, почему же дуэты одержимых парней из гаражей не заменили собой софтверные компании? А ведь правда — не заменили. Но и пресловутые гаражные дуэты — не выдумка: Билл Хьюлетт и Дэйв Паккард, Билл Гейтс и Пол Аллен, Стив Джобс и Стив Возняк, из совсем недавних — Ларри Пейдж и Сергей Брин. Они — больше, чем правда: «двое в гараже» — архетип современного мифа. А разгадка кажущегося противоречия в том, что в гаражах начинают, но успешное начинание успешно продолжаться может только в офисе… Unix, созданный хоть и не в гараже, но небольшой группой исследователей, тоже стал мифом, а точнее — жертвой на алтаре собственного культа.

К концу семидесятых Unix являл собой идеальную систему для университетов и исследовательских лабораторий, т.е. для групп энтузиастов. Он был ясен и прозрачен, поскольку реализовывал только «самые вкусные», концептуально важные идеи. По сути, это был замечательный набор инструментов и заготовок для творческого применения при самостоятельном построении операционной среды. Дополнительным плюсом было то, что помимо великолепно написанных программ имелась не менее великолепно написанная документация. Впрочем, тексты эти грех называть казенным словом «документация». Чего стоила только «Книга Джона Лайонса» (“Lions’ Commentary on Unix” by John Lions), которая объясняла функционирование ядра системы «в лицах», комментируя работу его модулей и служб — совершенно уникальное, бесценное пособие… Так, а чего же в системе не было? Не было ничего даже отдаленно напоминающего интуитивно-понятный «дружественный» интерфейс. Система предназначалась искушенным профи, а никак не лопуховатым ламерам, и принципиально не «обихаживала» пользователя. Что еще? Вот я упомянул раньше, что не было поддержки русского языка. Так никакого языка, ничегошеньки, кроме базовой (английской) латиницы и неявной локализации для Соединенных Штатов. Предполагалось, что если понадобится французу, японцу или русскому поддержать родной язык, то он изучит исходный код, да и наточит систему соответствующим образом. А если у кого-то на машине стоит устройство, которого не стояло у разработчиков в Bell Labs (и посему нет в поставке), то пускай возьмет и сам напишет драйвер устройства. Ну, а если захочется перенести систему на другую машинную архитектуру, то… все открыто, изучай, пиши C-компилятор (даже не весь, а только кодогенератор — модуль, где сконцентрирована машинная специфика), потом меняй машинно-зависимые модули ядра системы и… вперед. Непростая, но страшно интересная задача.

Итак, Unix был по сути типичным удачным исследовательским проектом. Только — очень удачным. Настолько удачным, что распространение его напоминало пандемию (чему изрядно поспоспешествовали дешевизна и либерализм лицензий). Естественно, не могло не возникнуть желание подзаработать на столь популярной штуковине и… дальше, в восьмидесятые годы, начинается уже другая история: выпуск множества коммерческих версий, череда покупок и перекупок лицензионных прав, бесконечные судебные тяжбы, появление альтернативных ядер (Minix, Linux), в девяностые — дурацкая быдловатая «юниксомания», круто замешанная на завистливой «гейтсофобии»… Все это общеизвестно и совсем неинтересно. На авансцену вышли торговцы, юристы и пиарщики, а симпатичные бородачи — создатели системы — тихонько отошли в тень и, поскольку слово “Unix” стало товаром, продолжили свои исследования под другой вывеской — Plan 9…

Ход событий в Союзе соответствует общему тренду: сначала хаотичное увлеченное «освоение» новой игрушки; потом постепенно выкристализовываются центры, где адаптацией и локализацией начинают заниматься всерьез — ИНЭУМ, Курчатовский институт, ИПК Минавтопрома — и выпускают, наконец, три конкурирующие локализованные версии для советских клонов PDP-11 — ИНМОС, ДЕМОС, МНОС, соответственно (расшифровка аббревиатур: «инструментальная мобильная», «диалоговая единая мобильная», «машинно-независимая» операционная система). Особняком, слегка на отшибе держались те, кто реализовывал Unix на машинах не самых массовых и популярных. Я упоминал уже команду из МГУ, сделавшую реализацию на ЕС-1010 и 1012, причем, написавшую с чистого листа C-компилятор и ядро ОС (насколько я знаю, на французские прототипы этих машин, Mitra-15 и 225, Unix так и не был портирован). В другой команде, ухитрившейся засунуть Unix в «советский Wang», легендарную «ядерно-бухгалтерскую» машину Искра-226 (о, это было не просто!), довелось участвовать автору этих строк. Но это отдельная история…

Показать весь текст
Ответы0694607273

198 6 дек, 14:30 198 1306928

Тут дохуя на самом деле именно про си и юникс

https://medium.com/@kpem/воспоминания-советского-еврея-программиста-e57bd8666ae4

Ответы0694607021

199 6 дек, 14:44 199 1306938

>>1306923
>Вывод состояния после отладки ты удаляешь, но вот сами эти функции остаются в коде.
угу, мусорный, пустой код
>В сишке это в особенности важно, потому что даже массивы не умеют себя выводить по умолчанию, не говоря уже о сложных рекурсивных структурах.
про pretty print в отладчиках слышал что нибудь?

еще раз: нахуя замусоривать код служебными вещами, когда можно обойтись готовым инструментарием?

Ответы06941

200 6 дек, 14:47 200 1306940

>>1306917
>нахуя срать макросами трассировки по коду, компилить все это, потом оставлять всю эту отладочную срань в релизе или вычищать ручками, добавляя себе работенку
>Открой для себя git stash, ребенок.
при чем здесь git stash вообще бля?

Ответы06971

201 6 дек, 14:49 201 1306941

>>1306938
Ебал я пытаться разобраться в многопоточном игровом движке отладчиком. Пускай он и на крестах
Мимо

Ответы06944

202 6 дек, 14:50 202 1306943

>>1306917
>А еще с кодом с большим количеством рекурсивных вложений, с кодом, использующим плохо выводимые в отладчике структуры данных (типа математики видеокодеков). Ну то есть с любым современным кодом.
современные отладчики все это отлично переваривают, там даже скрипты подрубить можно, в gdb питон
повторюсь, мне похуй как ты там отлаживаешься
но бесит, когда вы срете в код своими макросами отладочными, оставляя всю эту мусорную срань в релизе

203 6 дек, 14:55 203 1306944

>>1306941
дело твое, вставляй printf обернутые макросами, как седые деды на pdp11 делали
ингнорируй весь тулинг, что за 50 лет существования языка был сделан
похуй

204 6 дек, 14:56 204 1306945

>>1306923
>Вывод состояния после отладки ты удаляешь, но вот сами эти функции остаются в коде.
Да, остаются в отдельном файле и благодаря макросам в сборку под релиз программы не попадают.

205 6 дек, 14:57 205 1306946

>>1306927
>>1306928
Благодарю.
Как я понял, автор перешёл на Си из-за того, что этот язык решал более широкий спектр задач и при этом успешно работал на древнем оборудовании, плюс вменяемая документация.

Ответы06947

206 6 дек, 14:58 206 1306947

>>1306946
Си написан программистами для программистов, в отличие от корпоративных монстров с жуткими спецификациями. Та же хуйня с TCP/IP, у Танненбаума в Компьютерных сетях про это есть.

207 6 дек, 15:49 207 1306971

>>1306940
>при чем здесь git stash вообще бля?
При том, что IDE-дети не знают текстовых консольных утилит и не умеют с ними работать. Ты, например, не умеешь, и уверен, что нужно что-то там "вычищать ручками", хотя это не так. Совсем мусор stash'ится, важные вещи коммитятся и впоследствии ребейзятся.
Поэтому твои аргументы про "замусоривание" кода инвалидные. Так же как и про "тулинг за 50 лет". Это ты с git'ом работать не умеешь, а не я с отладчиком.

>современные отладчики все это отлично переваривают, там даже скрипты подрубить можно, в gdb питон
Это все пустые слова с дивана. Давай конкретику. Вот ты скачал с репы какой-то код, успешно сбилдил, дальше я проставляю трейсы в коде (это 5 букв TRACE в конце любой строчки), а ты, получается, пишешь какой-то скрипт для gdb. Какой?

Ответы07014

208 6 дек, 16:42 208 1307007

>>1306397
>Уважаемые, я не совсем понимаю, пример чего вы здесь привели? Что крутой программер, адепт си, уже 18 лет как перешел на с++? Что это доказывает?
Читай внимательнее ветку! Анон утверждал, что на чистом Си тяжелые проекты не потянуть, а вот кресты - это свет в оконце. Я ему в пример привёл Кармака, который до 2000 всю игроклассику на чистом Си лопатил; вполне себе пример тяжёлых проектов.

Ответы07009

209 6 дек, 16:45 209 1307009

>>1307007

Ну какбэ и времена были другие. Гтк на чистом си, ядро линупз, еще тысячи программ. Что это доказывает? На с++ то все равно удобнее разработка, иначе бы его просто не существовало. Причем то, что кресты удобнее стало очевидно еще страусу в 1985 году.

Ответы07020

210 6 дек, 16:56 210 1307014

>>1306971
> дальше я проставляю трейсы в коде (это 5 букв
TRACE в конце любой строчки), а ты, получается, пишешь какой-то скрипт для gdb. Какой?

ты можешь сделать трассировку в gdb, либо воспользоваться еще более специализироваными тулами для этого
бля, да отладчики именно для этого и предназначены

скрипты для gdb нужно для сложных сценариев отладки
в данном же случае я говорил что для отладки сложных структур данных можно воспользоваться pretty print заготовками для того же gdb, для многих библиотек они уже есть готовые и несложно сделать их для своих часто используемых структур

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

хотя если хочешь по старинке лепить руками трассировку - делай это, без проблем

Ответы070180704907277

143 Кб, 600x600
211 6 дек, 17:04 211 1307018

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

212 6 дек, 17:10 212 1307020

>>1307009
Си-сектанты даже и не знают, что в разработке с++ учавствовал сам Р-чи.

213 6 дек, 17:11 213 1307021

>>1306928
Это про евреев, они не показатель.

214 6 дек, 18:13 214 1307049

>>1307014
>ты можешь сделать трассировку в gdb, либо воспользоваться еще более специализироваными тулами для этого
Давай конкретику.
Вот написал макрос, написал, как им пользоваться. Ты утверждаешь, что с отладчиком это быстрее. Ну так напиши, как это быстрее. Или это с дивана быстрее, а на самом деле нет?

>в данном же случае я говорил что для отладки сложных структур данных можно воспользоваться pretty print заготовками для того же gdb, для многих библиотек они уже есть готовые и несложно сделать их для своих часто используемых структур
Ну то есть у тебя есть два стула
1. Написать pretty print библиотеку на языке приложения, которая будет работать всегда и везде и в любой ситуации (включая консоль gdb)
2. Написать скрипты для отладчика, для своей среды, которые будут работать только в конкретном отладчике
И первое - мусорный код. А второе - хороший годный код.

>нахуй нужна дополнительная работа, когда можно воспользоваться говым тулингом
Напоминаю, что дополнительная работа - это написать TRACE в нужных тебе местах. При чем TRACE это красиво выглядит. Макрос можно и QQQ обозвать. А когда ты выяснил, что тебе нужно, сделать git stash. Я даже не говорю про более продвинутую текстовую фильтрацию.

>хотя если хочешь по старинке лепить руками трассировку - делай это, без проблем
По какой старинке? Мне не 50 лет, я начинал с IDE с встроенным отладчиком, мне как раз усилия требовались, чтобы уйти от отладчика и не пользоваться им там, где он не нужен.

Ответы07378

169 Кб, 1000x808
215 6 дек, 18:57 215 1307081

Заебали жирного кормить.

216 6 дек, 23:22 216 1307203

>>1306428
>ascii графике
Можно подробнее пожалуйста? Где искать примеры такого?
мимо

Ответы07206

217 6 дек, 23:31 217 1307206

>>1307203
Серьезно? https://www.linuxlinks.com/asciigames/

Ответы07207

218 6 дек, 23:32 218 1307207

>>1307206
>https://www.linuxlinks.com/asciigames/
Спасибо!
Вообще бы не подумал там искать.

Ответы07208

219 6 дек, 23:33 219 1307208

>>1307207
Где там-то, я набрал ascii games в гугле
Ну, я знал конечно классику типа NetHack или других рогаликов, но как-то в голову не приходило, что кто-то мог не слышать об этом. Видимо я старый слишком

Ответы07231

220 7 дек, 00:22 220 1307231

>>1307208
ИСКАТЬ В ГУГЛЕ?!
ДА ТЫ ЧИТЕР!!!

221 7 дек, 02:31 221 1307273

>>1306927
>симпатичные бородачи
Тут же представил Кернигана. Пиздец. Как де я балдею от его внешности. Типикал учёный, которых я представлял в детстве.

222 7 дек, 02:44 222 1307277

>>1307014
>что меньше пишешь ручками
Вообще у чётких пацанов код сам себя пишет и сам же себя и отлаживает.
Пиздец, IDE-животные обленились. Не могут даже строчку какую-то вшивую написать. Охуеть. При этом аргументируя это тем, что сценарий для отладки выйдет намного меньше чем одна строчка в коде.

Ответы07324

223 7 дек, 07:14 223 1307324

>>1307277
>IDE-животные
ПАЦАНЫ, Я СЕГОДНЯ ШЁЛ КОРОЧЕ ПО ОФИСУ И УВИДЕЛ ПИЗДЮКА В МАЙКЕ "VS-CODE", НУ Я ПОДСКОЧИЛ И РЕЗКО РЕБУТНУЛ ЕГО ТАЧКУ С ВЕРТУШКИ И ПОЯСНИЛ ЕГО КРИКОМ "НЕ ЛЮБЛЮ ПРОПРИЕТАРНЫЕ ПРОДУКТЫ", ПОТОМУ ЧТО Я УГОРЕЛ ПО VIM, ПАЦАНЫ ДУХ СТАРОЙ ШКОЛЫ ЖИВЁТ ТОЛЬКО В UNIX, ГДЕ ЕБАШАТСЯ ПО ХАРДКОРУ, ГДЕ ПРОГЕРЫ ЖИВУТ ТЕРМИНАЛОМ, МОЛОДОСТЬЮ И ЕБУТ СИСТЕМУ В РОТ! ТОЛЬКО GNU, ТОЛЬКО ХАРДКОР!!! ОПЕНСОРС УЛЬТРАХАРДКОР БАШ!!! пацаны ебашьте на си, собирайте проекты в make, угорайте на конференциях, любите своих Линуса, пацанов и Демо-Сцену! ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО! VIM!

Ответы0732707357

224 7 дек, 07:18 224 1307327

>>1307324
зелено

225 7 дек, 09:07 225 1307357

>>1307324
РЕБУТНУЛ КОНСОЛЬ С ВЕРТУШКИ VIM-ВЫБЛЯДКА.
emacs-goddess

Ответы0759107593

226 7 дек, 09:51 226 1307378

>>1307049
>что дополнительная работа - это написать TRACE в нужных тебе местах
блядь, зачем это делать, когда можно просто собрать проект с отладочными символами и подхватить отладчик? блядь, да предназначение отладчика как раз в том и заключается чтобы делать трассировку, это его основная функция
пиздец
>git stash
бля, вот это костыль ты придумал, лол
только сейчас дошло зачем ты его используешь в этом случае
те ты у себя в рабочей директории срешь по коду макросами TRACE, а чтобы не срать ими в репу, прячешь этот код в stash
бля, пиздец, вот ты ебнутый

Ответы0738707637

227 7 дек, 09:56 227 1307387

>>1307378
>костыль
facepalm

228 7 дек, 16:25 228 1307591

>>1307357
>emacs-goddess
Чем Емакс лучше Вима?

Ответы07605

18 Кб, 499x374
229 7 дек, 16:30 229 1307593

>>1307357
>goddess
WTF?!

Ответы07599

230 7 дек, 16:37 230 1307599

>>1307593
Трап

Ответы07600

231 7 дек, 16:41 231 1307600

>>1307599

УРЕТЕ! Это тянощка-писейчка выпускница программы Outreachy, благодаря которой она стала програмистской, вопреки хейту хуеблядей.

Ответы07623

232 7 дек, 16:51 232 1307605

>>1307591
Тоже самое только больше копатни.

233 7 дек, 17:31 233 1307623

>>1307600
Тогда почему "ребутнул"?

Ответы07625

234 7 дек, 17:35 234 1307625

>>1307623

Тянощка вынуждена называть себя в сети мужским родом, чтобы избежать дискриминации. Неужели не очевидно?

235 7 дек, 18:03 235 1307637

>>1307378
>блядь, зачем это делать, когда можно просто собрать проект с отладочными символами и подхватить отладчик
Ты так и не сказал, что конкретно ты будешь делать.

172 Кб, 1136x293
236 8 дек, 18:44 236 1308129

Привет, поподробнее можно про этот код запуска. Если что книга стивена праты.

Ответы08274

237 8 дек, 22:02 237 1308248

>>1305267
>Уже нашел? Сколько получаешь? Или только мечтаешь?
реверсом можно зарабатывать норм. Сам я макака которая только может в основы С и реверса, но коллеги которые асем в ИдеПРО читают как боги и пишут шеллы на С получают по 4-5к фунтов/евро в месяц. ХЗ есть ли подобная работа в рашке, но в бриташке, гермашке и швятой сша ее валом, гуглить Security consulting + native code + job

Ответы0824908388

238 8 дек, 22:06 238 1308249

>>1308248
Ну для бриташки это так себе зарплата, особенно если до налогов

Ответы08267

37 Кб, 1207x826
239 8 дек, 22:52 239 1308265

Как будете оправдываться, бородачи?

Ответы083030832109507

240 8 дек, 22:59 240 1308267

>>1308249
там я писал про зп после налогов в месяц, но 70-80к в год - это хорошая, годная зарплата для Юкей в случае понаеха

241 8 дек, 23:04 241 1308274

>>1308129
Это чё, надо загрузчик PE и ELF файлов писать?

242 8 дек, 23:57 242 1308303

>>1308265
Хто я?

6 Кб, 317x262
243 9 дек, 00:08 243 1308308

Пишу программу. Вводятся два числа - n и k. n это степень, а k само число. Программа должна выводить YES, если k имеет целую степень, которая даёт n, иначе NO.

#include <stdio.h>
int main()
{
int n, k, a=0, b=0, x=0;
scanf_s("%i %i", &n, &k);
while (x<1 || b<n)
{
a++;
b = k * a;
if (b == n) x = 1;
}
if (x == 1) printf("YES");
else printf("NO");
return 0;
}

Проблема в том, что цикл не останавливается при отрицательном ответе, что бы я ни делал.

Ответы0831208320

244 9 дек, 00:13 244 1308312

>>1308308
Так добавь условие в цикл.
У тебя x меняется только при условии, что б равно н.
попробуй в условии поставить и, вместо или

Ответы08315

245 9 дек, 00:16 245 1308315

>>1308312
При "и" разве цикл не продолжит делать итерации, пока оба условия не станут истинны? Почему это работает здесь как "или"? Почему "или" не работает?

Ответы08316

246 9 дек, 00:23 246 1308316

>>1308315
Или работает пока одно из условий истинно, и работает, только когда оба условия истинно, в твоём случае если поставишь и, то цикл вылетит когда b >= n.

Ответы08318

247 9 дек, 00:35 247 1308318

>>1308316
Кажется, я понял. Например; (x<1?=0) и (b<n?=1)На одной из итераций уже нет. 0^1=0, цикл прерывается. А если 0v1, то это равно 1 и цикл продолжается. Я правильно понял?

Ответы08319

248 9 дек, 00:36 248 1308319

>>1308318
На одной из итераций уже не =0
Самофикс

249 9 дек, 00:38 249 1308320

>>1308308
>Программа должна выводить YES, если k имеет целую степень, которая даёт n
Но у тебя же там не степень, а произведение. Ответ да, если существует целое a, такое что k*a=n. Иными словами n % k == 0.
Собственно поэтому тебе в твоей лабе дали степень, чтобы ты модуль не использовал, а логарифмы вы не проходили.
>Проблема в том, что цикл не останавливается при отрицательном ответе, что бы я ни делал.
А зачем ты допускаешь отрицательный ответ? В твоей задаче можно написать k=abs(k), n=abs(n) и больше об этом не париться.
В случае степеней все еще проще

Ответы08324

250 9 дек, 00:39 250 1308321

>>1308265
Думаю, на плюсах все же проще выстрелить себе в ногу.

251 9 дек, 00:51 251 1308324

>>1308320
Нельзя использовать ничего кроме stdio.h, это препод такой, который как раз намеренно заставляет париться.

Ответы08326

252 9 дек, 00:53 252 1308326

>>1308324
Я это пониманию. Но, тем не менее, код у тебя неправильный, он отвечает вопрос не про степень, а про делимость

253 9 дек, 06:53 253 1308388

>>1308248
> Сам я макака которая только может в основы С
> ХЗ есть ли подобная работа в рашке
> но в бриташке, гермашке и швятой сша

Классика. Какая разница что там НА ЗАПАДЕ, если чтобы туда свалить тебе нужен охуеннейший опыт, который трудно получить в рашке?

254 9 дек, 13:15 254 1308480

Где/как научиться основам байтоебства? Какая-нибудь фундаментальная литература, курс есть?

Ответы0848608487

255 9 дек, 13:32 255 1308486

>>1308480
пишешь библиотеку, разбирающую любой бинарный формат

256 9 дек, 13:34 256 1308487

>>1308480
Пиши полиморфный криптор с LoadPE.

257 9 дек, 13:39 257 1308489

Какая-то пpоблема с gcc. Ещё недавно у меня на windows 7 компилиpовалось, а сейчас нет, может дело в том, что сейчас у меня windows 10, я не знаю. Путь написан, вpоде пишу то, что нужно с cmd
>gcc new.c -o new.exe
Что тут не так, что пpовеpить?

Ответы0849708596

258 9 дек, 14:06 258 1308497

>>1308489
А что собственно выводит данная команда? Может у тебя прав на запись нет в этой директории.

Ответы08503

259 9 дек, 14:23 259 1308503

>>1308497
эта запись ничего не выводит. Пpоходит некотоpое вpемя и потом следующей стpокой идёт та же папка, словно ничего не пpоизошло. Ну и файла нет.

Ответы08504

260 9 дек, 14:25 260 1308504

>>1308503

Может ты конпелируешь в одной директории, а смотришь в другой? Не может быть, чтобы она ничего не выводила.

Ответы08512

28 Кб, 1366x768
261 9 дек, 14:37 261 1308512

>>1308504
ну вот напpимеp

Ответы08517

262 9 дек, 14:45 262 1308517

>>1308512

Ну и дальше, что dir выводит?

Ответы08518

263 9 дек, 14:48 263 1308518

>>1308517
ну файл как был, так и остался...

Ответы08519

264 9 дек, 14:53 264 1308519

>>1308518

Попробуй вместо new.exe написать new1.exe.

Ответы08529

265 9 дек, 14:58 265 1308529

>>1308519
пеpеименовывание ничего не pешает, к сожалению

Ответы08558

266 9 дек, 15:44 266 1308558

>>1308529
gcc --version
WinDbg Logger

267 9 дек, 16:46 267 1308596

>>1308489
Вместо gcc new.c -o new.exe сделай gcc -Wall new.c -o new. Во-первых, посмотри, что за ворнинги вываливать будут (-Wall), во-вторых, расширение не указывай.

Ответы08683

268 9 дек, 19:17 268 1308683

>>1308596
всё так же ...

Ответы08686

269 9 дек, 19:41 269 1308686

>>1308683
Что "так же"? В переменных среды путь правильно прописал? Если правильно, то в cmd независимо от текущего местоположения по команде gcc --help помощь для gcc должна на экран выкидываться.

Фаервол/антивирус ничего не рубит?

Параметр -Wall выдачу предупреждений/уведомлений врубает, по-прежнему ничего не пишет во время компиляции?

Попробуй ещё gcc -std=c11 -Wall -Wextra new.c -o new

Ответы08696

270 9 дек, 20:16 270 1308696

>>1308686
ну в паpаметpах всё обычно: C:\MinGW\bin;C:\MinGW\MSYS\1.0\bin;C:\MinGW\MSYS\1.0\local\bin
>помощь для gcc должна на экран выкидываться
так и пpоисходит. Всякие команды. Веpсию тоже показывает.

Антивиpуса у меня... Нет.

Да, -Wall ничего не пишет.

>Попробуй ещё gcc -std=c11 -Wall -Wextra new.c -o new
так же ничего не пишет, словно всё ноpмально.

Кстати, если пpопустить точку с запятой или пpочее, gcc находит ошибки. Но до файла .exe дело не доходит

Ответы08719

271 9 дек, 20:19 271 1308697

Если гцц не выводит ничего, значит ошибок нет. Если файла при этом нет, значит ты ебешься в глаза. Например он скрытый

272 9 дек, 20:20 272 1308699

Если гцц не выводит ничего, значит ошибок нет. Если файла при этом нет, значит ты ебешься в глаза. Например он скрытый

Ответы08701

273 9 дек, 20:26 273 1308701

>>1308699
в итоге содеpжимое папки: 1 файл

Ответы08711

sage 274 9 дек, 20:40 274 1308711

>>1308701
А права-то на запись у тебя есть? А gcc -v foo.c -o foo.exe что пишет?

Ответы08715

275 9 дек, 21:10 275 1308715

>>1308711
>что пишет?
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls
Thread model: win32
gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
COLLECT_GCC_OPTIONS='-v' '-o' 'new.exe' '-mtune=generic' '-march=i586'
c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/cc1.exe -quiet -v -iprefix c:\mingw\bin\../lib/gcc/mingw32/6.3.0/ new.c -quiet -dumpbase new.c -mtune=generic -march=i586 -auxbase new -version -o C:\Users\273C~1\AppData\Local\Temp\ccdYSzDE.s
GNU C11 (MinGW.org GCC-6.3.0-1) version 6.3.0 (mingw32)
compiled by GNU C version 6.3.0, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "c:\mingw\bin\../lib/gcc/mingw32/6.3.0/../../../../mingw32/include"
ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/6.3.0/include"
ignoring duplicate directory "/mingw/lib/gcc/mingw32/6.3.0/../../../../include"
ignoring duplicate directory "c:/mingw/lib/gcc/../../include"
ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/6.3.0/include-fixed"
ignoring nonexistent directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/6.3.0/../../../../mingw32/include"
ignoring duplicate directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
c:\mingw\bin\../lib/gcc/mingw32/6.3.0/include
c:\mingw\bin\../lib/gcc/mingw32/6.3.0/../../../../include
c:\mingw\bin\../lib/gcc/mingw32/6.3.0/include-fixed
End of search list.
GNU C11 (MinGW.org GCC-6.3.0-1) version 6.3.0 (mingw32)
compiled by GNU C version 6.3.0, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 384cad586f05ed581a9c068b2f18b408

275 9 дек, 21:10 275 1308715

>>1308711
>что пишет?
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls
Thread model: win32
gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
COLLECT_GCC_OPTIONS='-v' '-o' 'new.exe' '-mtune=generic' '-march=i586'
c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/cc1.exe -quiet -v -iprefix c:\mingw\bin\../lib/gcc/mingw32/6.3.0/ new.c -quiet -dumpbase new.c -mtune=generic -march=i586 -auxbase new -version -o C:\Users\273C~1\AppData\Local\Temp\ccdYSzDE.s
GNU C11 (MinGW.org GCC-6.3.0-1) version 6.3.0 (mingw32)
compiled by GNU C version 6.3.0, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "c:\mingw\bin\../lib/gcc/mingw32/6.3.0/../../../../mingw32/include"
ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/6.3.0/include"
ignoring duplicate directory "/mingw/lib/gcc/mingw32/6.3.0/../../../../include"
ignoring duplicate directory "c:/mingw/lib/gcc/../../include"
ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/6.3.0/include-fixed"
ignoring nonexistent directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/6.3.0/../../../../mingw32/include"
ignoring duplicate directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
c:\mingw\bin\../lib/gcc/mingw32/6.3.0/include
c:\mingw\bin\../lib/gcc/mingw32/6.3.0/../../../../include
c:\mingw\bin\../lib/gcc/mingw32/6.3.0/include-fixed
End of search list.
GNU C11 (MinGW.org GCC-6.3.0-1) version 6.3.0 (mingw32)
compiled by GNU C version 6.3.0, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 384cad586f05ed581a9c068b2f18b408

Показать весь текст
Ответы08721087270875111772

276 9 дек, 21:12 276 1308716

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

277 9 дек, 21:15 277 1308719

>>1308696
Да хз, по мне, так антивирус/фаервол/встроенная защита что-то рубит. Опять же, права/учётная запись какие? Админские?

Попробуй:

а). Создать какой-нибудь простейший хелло-ворлд и его компильнуть. Может, у тебя в твоей программуле какой-нибудь аномальный крокодил неперевариваемый?

б). Попробуй хелло-ворлд из предыдущего пункта make-ом компильнуть. Создаёшь Makefile, вот прям с таким ровно названием и без расширения. Пусть, к примеру, файл с текстом программы будет называться hello.c Тогда содержимое Makefile:

hello: hello.c
gcc -std=c11 -Wall -Wextra hello.c -o hello

Дальше, находясь в директории с hello.c и Makefile делаешь из командной строки mingw32-make и смотришь, что там дальше. Хотя, ещё раз, у тебя кажись на уровне правильной установки mingw и админства лажа какая-то.

Ответы0872008893

278 9 дек, 21:17 278 1308720

>>1308719
hello: hello.c
[здесь Tab нажмёшь или 4 отступа сделаешь]gcc -std=c11 -Wall -Wextra hello.c -o hello

279 9 дек, 21:18 279 1308721

>>1308715
Бле, чем с глюченой вендой пердолится, лучше бы развернул линух на виртуалке давно.

280 9 дек, 21:34 280 1308727

>>1308715
Кароч, вычисти всё, а потом Code::Blocks со встроенным MinGW поставь и не еби мозга! Чёт у тебя там какие-то дупликейт директори... Ты несколько раз там случаем MinGW на машину не воткнул?

Ответы08893

sage 281 9 дек, 22:21 281 1308751

>>1308715
> C:\Users\273C~1\AppData\Local\Temp\ccdYSzDE.s
SET TEMP=C:\test
SET TMP=C:\test
Создай C:\test и права дай. И gcc -save-temps foo.c -o foo.exe, и сходи в эту директорию посмотреть на наличие файлов .s. Подозреваю, что оно давится либо именем new, либо (гораздо вероятнее) давится твоим русским путем.

Ответы11739

282 10 дек, 07:48 282 1308893

>>1308719
да, от администpатоpа.
>а
Этот вайл, что я пытаюсь скомпилиpовать, и есть пpосто хелловоpлд.
>б
Makefile:2: * missing separator. Stop.
mingw32-make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x77682108)

>>1308727
он тоже не компилиpует. Хотя pаньше компилиpовал.

Я где-то пpочитал, что это может быть связано с тем, что вин 64-pазpядная. Ну у всех же pаботает обычно. Мне это всё уже поднадоело. Может пеpеустановка вин помочь? ...

Ответы0891809024

283 10 дек, 09:06 283 1308918

>>1308893
Уже сказали - вычисти к хуям все компиляторы из системы (у меня fpc помню перехватывал вызов make, лол). Потом установи тот же C:B или там Студию2010 и попробуй.

284 10 дек, 14:57 284 1309024

>>1308893
>Я где-то пpочитал, что это может быть связано с тем, что вин 64-pазpядная
У меня 7-ка 64-разрядная. Нормально, тьфу-тьфу-тьфу, компиляет. Но я тупо Code::Blocks со включённым MinGW установил если его будешь ставить, смотри, правильную версию - с MinGW в комплекте, - качай, а не голый C::B, и оно прямо из коробки заработало. Такое ощущение, что у тебя или куча всего и конфликт версий, или хз. Не похоже это на проблемы с gcc... Админство какое-то.

285 10 дек, 22:02 285 1309261

Привет, байт код и код на языке ассемблера это одно и то же? Если не так то для чего этот самый байт код нужен в конпелере clang. А также в чем разница между компилируемым и интерпретируемым яп. Си ясень дуб конпелируемый, а интерпретируемый это как? С такими дела не имел. Прошу максимально просто, я нуфаг, вкатываюсь

Ответы099330994209946

286 10 дек, 22:54 286 1309279

>>1305157 (OP)
Пацаны, реально реализовать классы и какой-никакой каличный но ООП на стандартном Си?..

Ответы0929213711

287 10 дек, 23:21 287 1309292

>>1309279
Да

288 10 дек, 23:45 288 1309306

Мб не в тот тред пишу, но оббясните плес, что такое LLVM. Все, что понял, что это виртуальная машина? Но какое отношения она имеет к c/c++? Это типа как jvm, только для си? Или что это?

Ответы094290985209972

289 11 дек, 08:41 289 1309429

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

Ответы09664

290 11 дек, 10:39 290 1309507

>>1308265
Оправдываться за что? За то что я могу ломануть с помощью Сишки все и вся?

291 11 дек, 11:18 291 1309540

Есть что-то по дизайну программ, но без скобочек, с си-ситнаксисом?

292 11 дек, 15:10 292 1309637

Несколько часов ебался с заданием, где нужно было вставить между цифрами от 1 до 9 знаки, чтобы получилось сто, основной проблемой было сначало выполнить операции умножения и сложения, а оказалось что операции должны делаться по порядку.

293 11 дек, 16:15 293 1309664

>>1309429
Почему когда я задаю тупые вопросы в других тредах, мне отвечают, а тут все злые какие-то :(

Ответы09794

294 11 дек, 19:47 294 1309794

>>1309664
Потому что все погромизды по своей сути и характеру говно, хуй че выпытаешь у этих зануд

295 11 дек, 21:35 295 1309852

>>1309306
> Все, что понял, что это виртуальная машина?
Нет. Хотя выполнять IR-инструкции в теории можно, но задача LLVM - дать компиляторам какое-то стандартизированное и удобное для дальнейших оптимизаций промежуточное представление, которое LLVM уже будет оптимизировать и транслировать в машинный код для целевой машины. Таким образом, если ты захочешь запилить свой компилятор, тебе не придется писать по кодогенератору под каждую поддерживаемую машину.

Ответы09932

170 Кб, 1080x579
296 11 дек, 23:38 296 1309932

>>1309852
А чем оно отличается от CLR в .net? ну и аналогичной хуйне в яве И там и там, ты должен написать компилятор в код виртуальной машины, а она уже все переведет в машинный.
И что означает, что llvm поддерживает тот же сисярп? Или это значит, что сначала шарп транслируется в clr код, он в свою очередь, в llvm, и только потом оно транслируется в машинный? Ебать тут уровней абстракций конечно. Почему бы тогда сразу не транслировать код в llvm, который и так все за тебя переводит в машинный?
мда, что-то я вообще не про си говорю

Ответы0993409949

297 11 дек, 23:48 297 1309933

>>1309261
>Привет, байт код и код на языке ассемблера это одно и то же
Нет. Байткод это любой язык, представленный не в виде текста, а в более сжатом и удобном для разбора машиной потока байт. Поэтому байткодом может быть что угодно, от байткода питона, который однозначно переводится в исходники на питоне один в один, до байткода llvm, который, в свою очередь, является бинарным представлением языка llvm ir, который является ассемблером для llvm.
А ты путаешь байткод и машинный код. Вот машинный код в текстовом виде это язык ассемблера (не совсем, так как при ассемблировании теряется информация о вещах типа имен меток, но тем не менее).

>А также в чем разница между компилируемым и интерпретируемым яп.
Ни в чем. Любой язык можно компилировать или интерпретировать. Тупые люди (включая преподов по информатике) путают это со статической и динамической типизацией. Статические языки обычно компилируют, динамические обычно интерпретируют. Но это не обязательно.

298 11 дек, 23:59 298 1309934

>>1309932
>А чем оно отличается от CLR в .net?
Толщиной и навязыванием своих услуг. CLR делает за тебя все, и любой CLR-язык это почти C#. Аналогично любой JVM-язык это почти Java. Ты должен использовать не то, что сборщик мусора, но с системой типов будут определенного рода проблемы, если ты сильно отступишь от парадигрмы основного языка. Особенно это актуально для JVM.
А llvm штука легкая и очень модульная. Система типов там есть, но она очень базовая - числа, указатели, как в сишке короче.

>Почему бы тогда сразу не транслировать код в llvm, который и так все за тебя переводит в машинный?
llvm стал более-менее юзабельным к 2010 году. Сейчас большого смысла пилить язык под jvm или clr нет.

Разница в толщине. Llvm штука тонкая, хотя при желании расширяется. А в CLR у тебя есть, допустим, сборщик мусора CLR, и все.

Ответы09941

299 12 дек, 00:19 299 1309941

>>1309934
>llvm стал более-менее юзабельным к 2010 году. Сейчас большого смысла пилить язык под jvm или clr нет.
Но появились котлин и нет кор. Наверное, майкам было просто лень переводить CIL под регистровую WM, да и писать сборщик мусора под него.
А насчет
>Или это значит, что сначала шарп транслируется в cil код, он в свою очередь, в llvm, и только потом оно транслируется в машинный?
Я прав?
Спасибо за обьяснения, анон!

300 12 дек, 00:22 300 1309942

>>1309261
>Если не так то для чего этот самый байт код нужен в конпелере clang
Анон выше обьяснил:
>задача LLVM - дать компиляторам какое-то стандартизированное и удобное для дальнейших оптимизаций промежуточное представление, которое LLVM уже будет оптимизировать и транслировать в машинный код для целевой машины. Таким образом, если ты захочешь запилить свой компилятор, тебе не придется писать по кодогенератору под каждую поддерживаемую машину.

301 12 дек, 00:34 301 1309946

>>1309261
>а интерпретируемый это как
>пишет в треде питона
genius

Ответы09957

302 12 дек, 00:44 302 1309949

>>1309932
> А чем оно отличается от CLR в .net?
CLR заточена под ООП, LLVM IR ни к чему не привязан. В CLR основной способ выполнения JIT (т.е., трансляция в машинный код во время выполнения, но не обязательно), LLVM чаще (но не обязательно) транслирует заранее. В общем, это специально отвязанная от конкретной технологии машина.

303 12 дек, 01:14 303 1309957

>>1309946
НЕ

304 12 дек, 03:31 304 1309972

>>1309306
>что такое LLVM

Это компилятор, который охватывает сразу несколько языков программирования. Как GCC. Он предоставляет программный интерфейс для создания надстроек, которые компилируют код конкретных языков программирования. Сейчас LLVM поддерживает гораздо меньше архитектур, чем GCC, но корпорации в него вкладываются, так как лицензия позволяет легко закрывать код производных программных продуктов.

Ответы10003

305 12 дек, 08:21 305 1310003

>>1309972
как будто бы в 2к19 есть что то другое кроме x64 и arm

Ответы10004

306 12 дек, 08:36 306 1310004

>>1310003
В твоем мире может быть и нет. В моем - есть и MIPS в каждом доме, и 32-битные x86 с ARM, и овердохуя микроконтроллеров со своими наборами инструкций с древним форком GCC вместо компилятора.

Ответы100051004910064

307 12 дек, 08:37 307 1310005

>>1310004
Двачую этого.

308 12 дек, 12:08 308 1310049

>>1310004
> и овердохуя микроконтроллеров со своими наборами инструкций с древним форком GCC вместо компилятора.
Хуево работать в российской военке.

309 12 дек, 12:25 309 1310064

>>1310004
>>1310004
будущее iot - на arm
а мамонты типа тебя со своими старперскими поделками вымрут не выдержав конкуренции

Ответы10275

310 12 дек, 14:06 310 1310124

Глупый вопрос наверное, но программа сделанная в code:blocks будет работать в vc?

Ответы1013010147

311 12 дек, 14:39 311 1310130

>>1310124
Что за vc?
ну неважно, да будет. Это же просто иде, а не разные кудахтеры с разной архитектурой и ос

Ответы10133

312 12 дек, 14:46 312 1310133

>>1310130
Visual studio
Просто там к примеру заставляет писать не scanf а scanf_s и думаю не мало других отличий

Ответы10275

313 12 дек, 15:28 313 1310147

>>1310124
Ты разницу между ide и компилятором понимаешь? Ты можешь писать в кодблоках и компилировать в vc.

314 12 дек, 16:03 314 1310154

Почему у меня количество знаком после запятой при изменении float на double не меняется?

Ответы10275

308 Кб, 1280x1024
315 12 дек, 20:04 315 1310259

хули gcc Не принимает флаг -help. памагити

Ответы10260

316 12 дек, 20:07 316 1310260

>>1310259
Ты ебанутый?! gcc --help

Ответы1026210263

317 12 дек, 20:08 317 1310262

>>1310260
храни тебя есус

Ответы10268

318 12 дек, 20:09 318 1310263

>>1310260
блять в книжках везде одна черточка, сорян я ебло

Ответы1026410268

319 12 дек, 20:15 319 1310264

>>1310263
Так тебе же компилятор написал "мб ты, долбоящер, имел ввиду -h?".
С одной чертой полноценный команды пишутся только у рашидов из мс. Остальной мир использует конвенцию гну (или шо там).

Ответы10271

320 12 дек, 20:23 320 1310268

>>1310262
>>1310263
У линопс-опен-сорос-аутистов эти двойные чёрточки чуть ли не в ранг священной коровы возведены, если я ничего не путаю. Там верный знак: если с одной чёрточкой что-то не срабатывает, хуярь вторую.

Мимо-уверенный-пользователь-виндовз

Ответы1027510658

321 12 дек, 20:30 321 1310271

>>1310264
>С одной чертой полноценный команды пишутся только у рашидов из мс. Остальной мир использует конвенцию
Сук, сколько с вами линуксёрами общаюсь, каждый раз убеждаюсь, что вы натурально отбитые ))) На ровном месте учить все эти -h, -t, -w, -b, -z... - это реально клиническая психиатрия. А почему -h должно означать именно help, а не, скажем, high, "how are you?" или huiLao?

Ответы10274

322 12 дек, 20:34 322 1310274

>>1310271
>А почему -h должно означать именно help

Потому что это придумано задолго до того, как твой батя забыл вытянуть из твоей мамки, когда кончал.

Ответы10276

323 12 дек, 20:40 323 1310275

>>1310064
Но в днищесегменте IoT, например, ESP32, который не ARM. Как ты теперь будешь с этим жить?

>>1310133
-D_CRT_SECURE_NO_WARNINGS
В целом, если будешь писать на стандартном Си или реализовывать нестандартные функции там, где их нет, все будет ок.

>>1310154
> Почему у меня количество знаком после запятой при изменении float на double не меняется?
Потому значениям для дополнительных битов взяться неоткуда? Потому что ты форматируешь принтфом с дефолтным количеством знаков? Код тащи.

>>1310268
> У линопс-опен-сорос-аутистов эти двойные чёрточки чуть ли не в ранг священной коровы возведены
Если бы. В опенсорсе традиционно кто в лес, кто по дрова:
# nasm --help
nasm: error: unrecognised option `--help'
type `nasm -h' for help

Ответы102771057712913

324 12 дек, 20:41 324 1310276

>>1310274
Лол, отцы основатели придумали исключительно на швитом PDP-11 всё воротить. Хуле ж ты на богомерзкой пеке-то корячишься?! Работал бы на том, что было придумано задолго до того и что стало конвенцией.

325 12 дек, 20:43 325 1310277

>>1310275
>nasm: error: unrecognised option `--help'
>type `nasm -h' for help
Бгггг, что-то я в насме как-то не обратил на это внимание )))

326 13 дек, 06:25 326 1310427

https://github.com/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee?utm_campaign=explore-email&utm_medium=email&utm_source=newsletter&utm_term=weekly

Все видели эту хуйню?

Ответы1047710556

327 13 дек, 09:04 327 1310477

>>1310427
не смешно, даже противно стало

Ответы10498

328 13 дек, 09:35 328 1310498

>>1310477
где ты юмор увидел в моем посте?

329 13 дек, 11:37 329 1310556

>>1310427
В чом прекол?

Ответы10559

330 13 дек, 11:43 330 1310559

>>1310556
Всем кто на рассылку гита подписался эта хуйня пришла вместо предложенных проектов.

331 13 дек, 12:20 331 1310577

>>1310275
> Потому значениям для дополнительных битов взяться неоткуда? Потому что ты форматируешь принтфом с дефолтным количеством знаков? Код тащи.
https://ideone.com/PfhH09
Только тут все работает, а у меня больше 17 знаков не выдает, только нули

Ответы10619

332 13 дек, 13:44 332 1310605

Предложите, пожалуйста, какую бы программу написать, чтобы лучше освоить язык. Руки тянутся кодить, а идей нет. Самое сложное, что писал - очень корявый Тетрис.

Ответы106121062810655

333 13 дек, 13:58 333 1310612

>>1310605
Чем по жизни увлекаешься?

Ответы10617

334 13 дек, 14:12 334 1310617

>>1310612
Я люблю отсасывать у мужчин.

Ответы1062110646

335 13 дек, 14:17 335 1310619

>>1310577
У флоата точность 7 - 8 десятичных знаков после запятой, у дабла 15, все что после идет - мусор.

Ответы10785

336 13 дек, 14:19 336 1310621

>>1310617
Что-нибудь еще?

Ответы10627

337 13 дек, 14:28 337 1310627

>>1310621
Давать в жопу.

Ответы10646

338 13 дек, 14:29 338 1310628

>>1310605
Напиши не корявый тетрис

339 13 дек, 15:53 339 1310646

>>1310627
>>1310617
Ну это и так понятно. Каждый линуксоид этим занимается.

Ответы10660

340 13 дек, 16:18 340 1310655

>>1310605
Напиши опенсурсный Tetris Grand Master

341 13 дек, 16:20 341 1310658

>>1310268
А вот хуй. Обычно, с одной черточкой идут однобуквенные параметры, с двумя их полнословные синонимы.

Ответы10785

342 13 дек, 16:26 342 1310660

>>1310646
Моча не бань, я думал это GNU/Linux тред.

Ответы10662

1,5 Мб, 320x240
343 13 дек, 16:32 343 1310662

>>1310660

26 Кб, 655x386
344 13 дек, 21:21 344 1310785

>>1310619
> после запятой
Запятая тут не при чем. https://ideone.com/ZeHtT5

>>1310658
> одной черточкой идут однобуквенные параметры
Разработчикам GCC рассказать забыли.

Ответы10801

345 13 дек, 21:57 345 1310801

>>1310785
>Разработчикам GCC рассказать забыли.
>Обычно

346 15 дек, 10:54 346 1311408

Пытаюсь собрать https://github.com/riscv/riscv-gnu-toolchain посредством MSYS2. Проблема в том, что binutils не линкуется статически с libiconv и libintl.
Собирал так:
export LDFLAGS="-static -static-libgcc -static-libstdc++ -lintl -liconv"
../configure --with-arch=rv32imc --with-abi=ilp32 --prefix=/opt/riscv
make
Конечно можно прописать путь к нужным dll-кам в PATH или просто скопировать их, но ведь как-то собирают тулчейны со статически прилинкованными библиотеками.
Си тут при том, что буду писать для risc-v на нем.

Ответы1141811449

347 15 дек, 11:27 347 1311418

>>1311408
А че не на расте?

Ответы11428

348 15 дек, 11:50 348 1311428

>>1311418
Потому что в данном случае не нужно и просто не умею. К тому же LLVM для RISC-V вроде как еще толком не работает.

349 15 дек, 12:43 349 1311449

>>1311408
>Конечно можно прописать путь к нужным dll-кам в PATH или просто скопировать их
А у тебя статически версии библиотек есть или ты надеешься что dll-ка каким-то магическим образом вкомпилируется?

Ответы11474

350 15 дек, 13:40 350 1311474

>>1311449
Само собой есть. Если подменить их переименованием файлов, то все статично собирается.

Ответы11477

351 15 дек, 13:44 351 1311477

>>1311474
You need link flags -Wl,-Bstatic and -Wl,-Bdynamic because sometimes you want to force static linking, for example, when the dynamic library with the same name is also present in a search path:

gcc object1.o object2.o -lMyLib2 -Wl,-Bstatic -lMyLib1 -Wl,-Bdynamic -o output

352 15 дек, 23:35 352 1311739

>>1308751
давно не виделись.
не. Кириллицы не было и нет. За это время откатил ноутбук до заводских настроек. MinDW так и не компилит также
попробовал как ты сказал :
создались файлы test.i и test.s

ещё заметил надпись в C:B:
Process terminated with status 1 (0 minutes, 3 seconds) 0 errors, 0 warnings
ничего не помогает

Ответы1177211796

353 15 дек, 23:52 353 1311745

Аноны, можете написать пример как работать с System V shared memory в линухе? Вот получил я адрес сегмента с помощью shmat, как мне дальше читать/писать информацию? Оно у меня падает при попытке обращения к указателю.

Ответы11771

354 16 дек, 01:15 354 1311771

>>1311745
Тебе адрес в виртуальной памяти дают, пиши и читай как обычно. Падает -> смотри под strace и valgrind.

355 16 дек, 01:27 355 1311772

>>1311739
Что-то фатально не так с твоей системой или твоим гцц. Но если файлы создаются (и не пустые), это означает, что код компилируется. Судя по тому логу >>1308715, оно не ассемблируется. Попробуй сам as тотсамый.s -o something.o, он сделает something.o?

Ответы11944

356 16 дек, 05:20 356 1311796

>>1311739
открой консоль вындовз, набери команде set и тащи сюда выхлоп

Ответы11944

357 16 дек, 12:05 357 1311944

>>1311772
Да, создал test.o

>>1311796
Ну ладно...
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Name\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-PG05ENP
ComSpec=C:\WINDOWS\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
HOMEDRIVE=C:
HOMEPATH=\Users\Name
LOCALAPPDATA=C:\Users\Name\AppData\Local
LOGONSERVER=\\DESKTOP-PG05ENP
NUMBER_OF_PROCESSORS=4
OneDrive=C:\Users\Name\OneDrive
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin;C:\Users\Name\AppData\Local\Microsoft\WindowsApps
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\Name\AppData\Local\Temp
TMP=C:\Users\Name\AppData\Local\Temp
USERDOMAIN=DESKTOP-PG05ENP
USERDOMAIN_ROAMINGPROFILE=DESKTOP-PG05ENP
USERNAME=Name
USERPROFILE=C:\Users\Name
windir=C:\WINDOWS

Кстати, я ещё VS2017 не могу установить, "неизвестная ошибка". Не удалось установить пакет "Microsoft.VisualStudio.Initializer,version=15.9.28107.0". Сведения
Команда выполнена: "C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.Initializer,version=15.9.28107.0\VSInitializer.exe" -Operation Modify -InstallationID 03572f9c -InstallationName VisualStudio/15.9.4+28307.222 -InstallationVersion 15.9.28307.222 -InstallationWorkloads Microsoft.VisualStudio.Workload.CoreEditor,Microsoft.VisualStudio.Workload.NativeDesktop -InstallationPackages Microsoft.VisualStudio.Component.CoreEditor,Microsoft.VisualStudio.Component.Roslyn.Compiler,Microsoft.Component.MSBuild,Microsoft.VisualStudio.Component.Static.Analysis.Tools,Microsoft.Net.Component.4.6.1.SDK,Microsoft.Net.Component.4.6.1.TargetingPack,Microsoft.VisualStudio.Component.TextTemplating,Microsoft.VisualStudio.Component.Debugger.JustInTime,Microsoft.VisualStudio.Component.NuGet,Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions,Microsoft.VisualStudio.Component.VC.CoreIde,Microsoft.VisualStudio.Component.VC.Redist.14.Latest,Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core,Microsoft.VisualStudio.Component.VC.Tools.x86.x64,Microsoft.VisualStudio.Component.Graphics.Win81,Microsoft.VisualStudio.Component.Graphics.Tools,Microsoft.VisualStudio.Component.VC.DiagnosticTools,Microsoft.VisualStudio.Component.Windows10SDK.17763,Microsoft.VisualStudio.Component.VC.CMake.Project,Microsoft.VisualStudio.Component.VC.ATL,Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest,Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest,Microsoft.Component.VC.Runtime.UCRTSDK,Microsoft.VisualStudio.Component.Windows81SDK,Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81,Microsoft.VisualStudio.Component.WinXP,Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP,Microsoft.VisualStudio.Component.VC.ATLMFC,Microsoft.VisualStudio.Component.VC.CLI.Support,Microsoft.VisualStudio.Component.VC.Modules.x86.x64,Component.IncredibuildMenu,Component.Incredibuild,Microsoft.VisualStudio.Component.Windows10SDK.17134,Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP,Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native,Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop,Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop.arm,Microsoft.VisualStudio.ComponentGroup.Windows10SDK.16299,Microsoft.VisualStudio.Component.Windows10SDK.15063.UWP,Microsoft.VisualStudio.Component.Windows10SDK.15063.UWP.Native,Microsoft.VisualStudio.Component.Windows10SDK.15063.Desktop,Microsoft.VisualStudio.ComponentGroup.Windows10SDK.15063,Microsoft.VisualStudio.Component.Windows10SDK.14393,Microsoft.VisualStudio.Component.Windows10SDK.10586,Microsoft.VisualStudio.Component.Windows10SDK.10240,Microsoft.VisualStudio.Component.VC.140 -InstallationPath """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community""" -ComponentId Microsoft.VisualStudio.Product.Community -ChannelsPath """""" -SetupEngineFilePath """C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installershell.exe""" -Log """C:\Users\Name\AppData\Local\Temp\dd_setup_20181216090741_001_Microsoft.VisualStudio.Initializer.log"""
Код возврата: -1073741819
Сведения о коде возврата: Неизвестная ошибка (0xc0000005)

Наверное правда проблема в компуктере

357 16 дек, 12:05 357 1311944

>>1311772
Да, создал test.o

>>1311796
Ну ладно...
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Name\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-PG05ENP
ComSpec=C:\WINDOWS\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
HOMEDRIVE=C:
HOMEPATH=\Users\Name
LOCALAPPDATA=C:\Users\Name\AppData\Local
LOGONSERVER=\\DESKTOP-PG05ENP
NUMBER_OF_PROCESSORS=4
OneDrive=C:\Users\Name\OneDrive
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin;C:\Users\Name\AppData\Local\Microsoft\WindowsApps
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\Name\AppData\Local\Temp
TMP=C:\Users\Name\AppData\Local\Temp
USERDOMAIN=DESKTOP-PG05ENP
USERDOMAIN_ROAMINGPROFILE=DESKTOP-PG05ENP
USERNAME=Name
USERPROFILE=C:\Users\Name
windir=C:\WINDOWS

Кстати, я ещё VS2017 не могу установить, "неизвестная ошибка". Не удалось установить пакет "Microsoft.VisualStudio.Initializer,version=15.9.28107.0". Сведения
Команда выполнена: "C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.Initializer,version=15.9.28107.0\VSInitializer.exe" -Operation Modify -InstallationID 03572f9c -InstallationName VisualStudio/15.9.4+28307.222 -InstallationVersion 15.9.28307.222 -InstallationWorkloads Microsoft.VisualStudio.Workload.CoreEditor,Microsoft.VisualStudio.Workload.NativeDesktop -InstallationPackages Microsoft.VisualStudio.Component.CoreEditor,Microsoft.VisualStudio.Component.Roslyn.Compiler,Microsoft.Component.MSBuild,Microsoft.VisualStudio.Component.Static.Analysis.Tools,Microsoft.Net.Component.4.6.1.SDK,Microsoft.Net.Component.4.6.1.TargetingPack,Microsoft.VisualStudio.Component.TextTemplating,Microsoft.VisualStudio.Component.Debugger.JustInTime,Microsoft.VisualStudio.Component.NuGet,Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions,Microsoft.VisualStudio.Component.VC.CoreIde,Microsoft.VisualStudio.Component.VC.Redist.14.Latest,Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core,Microsoft.VisualStudio.Component.VC.Tools.x86.x64,Microsoft.VisualStudio.Component.Graphics.Win81,Microsoft.VisualStudio.Component.Graphics.Tools,Microsoft.VisualStudio.Component.VC.DiagnosticTools,Microsoft.VisualStudio.Component.Windows10SDK.17763,Microsoft.VisualStudio.Component.VC.CMake.Project,Microsoft.VisualStudio.Component.VC.ATL,Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest,Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest,Microsoft.Component.VC.Runtime.UCRTSDK,Microsoft.VisualStudio.Component.Windows81SDK,Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81,Microsoft.VisualStudio.Component.WinXP,Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP,Microsoft.VisualStudio.Component.VC.ATLMFC,Microsoft.VisualStudio.Component.VC.CLI.Support,Microsoft.VisualStudio.Component.VC.Modules.x86.x64,Component.IncredibuildMenu,Component.Incredibuild,Microsoft.VisualStudio.Component.Windows10SDK.17134,Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP,Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native,Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop,Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop.arm,Microsoft.VisualStudio.ComponentGroup.Windows10SDK.16299,Microsoft.VisualStudio.Component.Windows10SDK.15063.UWP,Microsoft.VisualStudio.Component.Windows10SDK.15063.UWP.Native,Microsoft.VisualStudio.Component.Windows10SDK.15063.Desktop,Microsoft.VisualStudio.ComponentGroup.Windows10SDK.15063,Microsoft.VisualStudio.Component.Windows10SDK.14393,Microsoft.VisualStudio.Component.Windows10SDK.10586,Microsoft.VisualStudio.Component.Windows10SDK.10240,Microsoft.VisualStudio.Component.VC.140 -InstallationPath """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community""" -ComponentId Microsoft.VisualStudio.Product.Community -ChannelsPath """""" -SetupEngineFilePath """C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installershell.exe""" -Log """C:\Users\Name\AppData\Local\Temp\dd_setup_20181216090741_001_Microsoft.VisualStudio.Initializer.log"""
Код возврата: -1073741819
Сведения о коде возврата: Неизвестная ошибка (0xc0000005)

Наверное правда проблема в компуктере

Показать весь текст
Ответы1232812383

25 Кб, 733x487
358 16 дек, 12:56 358 1312003

Я имею пикрелейтед 1. При попытке получить единократный результат через файловый ввод я получаю многократный результат с ошибкой на пикрелейтед 2. Как мне это исправить?

Ответы12004

21 Кб, 980x516
359 16 дек, 12:57 359 1312004

>>1312003
Пикрелейтед 2

60 Кб, 1166x834
360 16 дек, 13:18 360 1312033

Короче, у меня вот такая хуита. В файл Output.txt ничего не записывается, при том, что в консоли выхлоп был. Внятного решения проблемы так и не нашёл. Я так понял, это проблема VS, но на практиках я могу использовать только предустановленный VS, использовать интернет или установить свой компилятор я не имею права.

Ответы12044

361 16 дек, 13:23 361 1312037

>text input framework.dll
>невозможно найти файл.
Возможно, дело в этом. И в куче других dll, которые он не находит.

15 Кб, 447x52
362 16 дек, 13:27 362 1312044

>>1312033
а это так и должно работать?

Ответы12049

15 Кб, 466x498
363 16 дек, 13:33 363 1312049

>>1312044
Я уже понял свою ошибку и всё исправил.

364 16 дек, 13:50 364 1312056

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

Ответы12058

365 16 дек, 13:52 365 1312058

>>1312056
После объявления функции идут все операторы. int main тоже функция.

366 16 дек, 14:26 366 1312072

>>1312067
>>1312068
>>1312069
>>1312070
>>1312071
PRINT SCR

367 16 дек, 14:28 367 1312075

var_dump($abuhui = array( "key" = " "));

anonymous 368 16 дек, 16:17 368 1312120

Сап,в очередной раз прошу двачик помочь ебучему ламеру

итак, для лабы я должен сделать прогу вывода на экран дисплея схематичного изображения велосипедиста. При запуске программы велосипедист начинает движение, вращая ногами педали велосипеда.

для выполнения этой красоты я должен подрубить библиотеку <graphics.h> однако моя 17-я вижла не дружит с этой библиотекой и подчеркивает её как ошибку ,хэлпаните плес ,отправлю цистерну чая по почте))

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

Ответы12328

369 16 дек, 17:30 369 1312153

почему в конце b=5?

int b = 89;
int a = 7;
if (b > 75)
printf("b > 75.\n");
if (a>0) {
a += b;
printf("a = %d, b = %d\n", a, b);
}
b = (a >= 90)? printf ("da\n") : 0;
printf("b is %d\n", b);

Ответы12192

370 16 дек, 18:34 370 1312192

>>1312153
Очевидно потому что ты присваиваешь b то, что возвращает printf("da\n"), а оно возвращает 5. Почему 5 не знаю, должно быть 3, так как в этой строке 3 байта, d, a и новая строка \n
При чем я проверил - действительно должно

Ответы12239

371 16 дек, 19:47 371 1312239

>>1312192
ну да, 3, я ошибся. не знал, что printf возвращает что-то

Ответы12246

372 16 дек, 19:58 372 1312246

>>1312239
Если бы не возвращало, ты бы получил ошибку времени компиляции, ведь ты бы присваивал b пустоту. Оператор ? :: это не замена if'у, не путай их.

373 16 дек, 21:48 373 1312328

>>1311944
> Да, создал test.o
Тогда идей нет.

>>1312120
> для выполнения этой красоты я должен подрубить библиотеку <graphics.h>
Тебе в борланд для DOS. Но ты можешь рисовать на Windows API, создав окно, и все, что полагается.

> хотя бы тезисно распишите как этот велик ебучий анимировать
Ну короч у тебя есть таймер, он тикает. Когда он тикает, ты рисуешь очередной кадр. Для этого ты инкрементируешь x_всего_велосипедиста, чтобы он двигался. Относительно этой x ты рисуешь велосипед. Для педалей у тебя будет угол вращения, который ты тоже инкрементируешь (или вычисляешь как x_всего_велосипедиста умноженный на какой-нибудь фактор). Если не знаешь, как преобразовать позицию педали из полярных координат (текущий угол и длина педали), ты легко это нагуглишь. Основная сложность задачи - написать это не в досовом стиле с рисованием в while (1), а создать окно и рисовать по таймеру.

374 16 дек, 23:38 374 1312383

>>1311944
>Наверное правда проблема в компуктере
Или битый архив скачал или проверь память. Протестируй оперативку и жесткий диск.

Ответы12743

375 17 дек, 07:24 375 1312456

Сап, двощ. Разработчики ядра в этом итт птренде сидят, или в соседнем?

Ответы1245812505

376 17 дек, 07:49 376 1312458

>>1312456
бля уже испугался думал в пхп треде про ядра спрашивают xD

Ответы12462

377 17 дек, 08:19 377 1312462

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

Ответы12501

378 17 дек, 11:55 378 1312496

Сап!

Написал вот:
https://gist.github.com/spudro228/e72836de66f24b6943dea8076e957f9d

получаю коре дамп
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00005555555553c3 in main () at main.c:72
72 ((uint32_t)(fbp + location)) = pix;

Немогу получить доступ к fbp

>>> p location
$1 = 0
>>> p ((uint32_t)(fbp + location))
Cannot access memory at address 0x7ffff7fcc000
>>> p screensize
$2 = 7200

Вроде все флаги нормально поставил, че делать не монима, помогите пожалуйста

Ответы12924

379 17 дек, 12:17 379 1312501

>>1312462
Что плохого в хаскелле?

380 17 дек, 12:25 380 1312505

>>1312456
Ядро очень обширное понятие, что именно тебя интересует, я периодически в net/net-next, патчи закидываю.

Ответы1250612509

381 17 дек, 12:28 381 1312506

>>1312505
Платят хоть?

Ответы12508

382 17 дек, 12:41 382 1312508

>>1312506
Это опенсорс, понятное дело, что за это не платят, на работе платят, и мы параллельно с разработкой закидываем код в ядро.

Ответы12510

383 17 дек, 12:43 383 1312509

>>1312505
Мне нужна книжка про организацию памяти в ядре, отличная от гита торвальдса. Про struct page, vma, .fault и всю эту хуету. Причем про 4е ядро, а не про древнее дерьмо мамонта. Есть что-то такое?

Ответы12511

384 17 дек, 12:43 384 1312510

>>1312508
Бесплатно закидывать зачем тогда?

Ответы12511

385 17 дек, 12:48 385 1312511

>>1312510
Чтобы человек, поставивший себе линукс и имеющий в своем сетапе нашу железяку, не занимался установкой драйверов и поиском их на сайте.
>>1312509
Почитай Linux kernel development для начала, там даже есть сносный перевод на русский.
Linux device drivers тоже хорошая книжка.

Ответы125121251312515

386 17 дек, 12:49 386 1312512

>>1312511
Но если тебе интересует именно устройство памяти, то тебе нужно книжка по операционным системам.
Например тот же Таненбаум.

Ответы1251312568

387 17 дек, 12:51 387 1312513

>>1312511
>>1312512
Хорошо, если прочитаешь всё, сразу поймёшь картину более широко, в общем лишним не будет.

388 17 дек, 12:55 388 1312515

>>1312511
Видимо я не знаком с корпоративной разработкой до сих пор, ух бля.

389 17 дек, 14:07 389 1312534

int main()
{
int c;
char line[1000];
getline(line);
printf("%s",line);
return 0;
}
void getline(char line[]){
char c;
for(int i=0;(c=getchar())!=EOF && i<1000 && c!='\n';i++)
line = c;

}
Почему при выводе введенной строки программа выдает в конце какие то левые символы?

Ответы12559

390 17 дек, 14:46 390 1312559

>>1312534
А, уже разобрался.

391 17 дек, 14:57 391 1312568

>>1312512
Меня интересует именно память в 4 ядре. В общих чертах как страницы в ядре туда-сюда через MMU гоняли 10 лет назад я примерно представляю.

392 17 дек, 19:11 392 1312723

20 Кб, 720x128092 Кб, 720x1280

Объясните мне, тупому ламеру: почему при нажатии клавиши 't' не происходит уменьшение значения переменной? Так и не понял в чем мой прокол. В буфере я плохо шарю

Ответы1272412726

393 17 дек, 19:15 393 1312724

>>1312723
b r e a k
r
e
a
k

Ответы12730

394 17 дек, 19:15 394 1312726

>>1312723
break;

Ответы12730

395 17 дек, 19:19 395 1312730

>>1312724
>>1312726
А, черт, спасибо

396 17 дек, 19:42 396 1312743

>>1312383
Пpоблема pешилась с установкой дpевнего Windows 7 32-bit.
Стpанно

Ответы12744

397 17 дек, 19:46 397 1312744

>>1312743
>установкой
>Windows
Спермоклоун.жпг

398 18 дек, 06:31 398 1312913

>>1310275
>ESP32
>корявое поделие китайцев с закрытми исходниками и кучей багов

Ответы12924

399 18 дек, 07:42 399 1312924

>>1312496
А где проверка fpb после mmap()? errno там всякое.

>>1312913
Может и Xtensa тоже китайцы? Алсо, от того, что оно китайское и кривое, оно внезапно исчезло из этого мира, или что?

Ответы12951

400 18 дек, 09:29 400 1312951

>>1312924
>А где проверка fpb после mmap()? errno там всякое.
Слелал, а оказалось ошибка в ОДНОЙ БУКВЕ.
ioctl(fb_fd, FBIOGET_VSCREENINFO, &finfo);
Надо F, т.к. структура fb_fix_screeninfo.
Из-за этого структура заполнялась нулями.

Я в ахуе.

401 18 дек, 12:12 401 1312988

Как правильнее писать?

int i; // в начале функции
...
for (i = 0; ...)

или

int i;
for (i = 0; ...)

или

for (int i = 0; ...)

и почему именно так надо.

Ответы1299013007

402 18 дек, 12:19 402 1312990

>>1312988
> Как правильнее писать?

правильнее писать data.map(lambda(element){....}), но у тебя ПЕРЕНОСИМЫЙ АССЕМБЛЕР -поэтому смотри поддерживаемый стандарт. Всё тобой перечисленное было актуально практически в порядке развития стандарта этого ногострела.

403 18 дек, 12:57 403 1313007

>>1312988
Разбирайся, что не понянто, спрашивай.
https://ideone.com/LyBuaP

Ответы13012

404 18 дек, 13:12 404 1313012

>>1313007
То есть i в первом цикле и i за первым циклом это разные переменные. Круто, значит можно и то и то использовать, но если переменная нигде кроме цикла использоваться не будет, то наверное правильнее for (int i = 0; ...). А как получить данные из первого i в первом цикле и записать в него другие данные?

Ответы13122

405 18 дек, 16:12 405 1313105

>>1305297
>>1305328
>>1305236
>>1305235
А как же gtk? Да и довольно много опенсурса на си написано

Ответы13108

406 18 дек, 16:15 406 1313108

>>1313105

Gtk -- это боль. То, что в нормальном языке дается по умолчанию, в сишной гткшечки ты будешь делать вручную.

Ответы1341117309

407 18 дек, 16:31 407 1313122

>>1313012
ты объявляешь i из внешнего цикла, как static int i, хотя в таком случае он у тебя и во внутреннем цикле будет меняться. Так что зачем тебе это, пацан? Лучше, назови их нормально, чтобы ты мог разобраться потом, как из внутреннего а какой из внешнего цикла, например: extern_i, internal_i. Хотя тут i уже лишним будет.

408 18 дек, 19:24 408 1313216

нужно ли ставить точку с запятой после if(...){...}, for и т.д.?

Ответы13315

409 18 дек, 22:48 409 1313315

>>1313216
точка с запятой ставится за всеми statement в теле блока if/do/while/for (внутри {}), в т.ч. и за последним, так что нет, дополнительных не надо, ;}; не бывает

Ответы13473

410 19 дек, 07:28 410 1313411

>>1313108
Ну если приловчиться, то можно и на сишечке писать. Но плюс гтк в том что биндиги есть к любому языку, пиши хоть на пистоне если не нравится низкоуровщина. В этом и плюс библиотек на Си. На тех же крестах гораздо сложнее разработать такую же библиотеку. Та же поддержка пистона на культях, просто неимоверно костыльна

Ответы13477

411 19 дек, 12:14 411 1313473

>>1313315
Ты всегда пишешь typedef struct ???

Ответы13700

412 19 дек, 12:20 412 1313477

>>1313411
Поясните ньюфажику, что такое биндинги?

Ответы13479

413 19 дек, 12:24 413 1313479

>>1313477

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

414 19 дек, 19:45 414 1313700

>>1313473
думал упомянуть объявление структур, и если б не передумал, то заметил бы, что погорячился с ";}; не бывает". И, кстати, таки да, вы угадали) Предпочитаю писать typedef struct {...;} name_t; а не struct name {...;};

Ответы13717

415 19 дек, 20:10 415 1313711

>>1309279
слегка несвоевременный, но более развернутый ответ. Да, struct - это и есть класс (разница struct и class в C++ заключается в единственной мелочи), а методы - суть обыкновенные функции, которые первым параметром принимают указатель на объект класса (структуры). В C++ это так и реализовано, и я сейчас даже не про историю о том, как первый компилятор Страуструпа сначала переводил код в Си, после чего компилил CC, а про вполне себе C++11. Чтоб "запустить" метод конкретного объекта в отдельным потоке, конструктору thread, который принимает указатель на функцию и аргументы, первым аргументом после classname::methodname следует передать, как раз таки, указатель на объект (ссылки, если что, кастуются ref(var)). В Си я предпочитаю именовать этот костыль this, ведь используется он совершенно аналогично этому keyword на C++. А полиморфизм -= это лишь пара фокусов с таблицами указателей на функции.

416 19 дек, 20:14 416 1313717

>>1313700
Не надо писать тайпдефы.

Ответы137241373313747

417 19 дек, 20:27 417 1313724

>>1313717
Любопытно, почему? Могу предположить, что это нарушает техническую прозрачность, согласно которой каждый вызов функции должен выглядеть как вызов функции (а не как встроенная операция, привет из C++), и если некоторая единица данных не является byte/word/dword/qword (не помещается в регистр), следовательно получается более сложный машинный код для копирования и других действий (одним mov не обойдешься), то об этом явно должно говорить составное typename типа struct name? Ну, я заметил, что ни сишная, ни юниксовая, ни посиксная библиотеки никогда не содержат typedef для структур, даже если имя явно говорит name_st, но разве это настолько нежелательно, чтоб даже в .c файле себе не позволить? (оставим .h)

418 19 дек, 20:41 418 1313733

>>1313717
ан нет, pthread_mutex_t таки структура, стало быть, это не преступление, и ничто не мешает избежать конфликта имен, используя префикс zalupa_mutex_t для своих мьютексов)

Ответы13747

419 19 дек, 20:52 419 1313747

>>1313717
> следовательно получается более сложный машинный код
У нас опять набег людей со странностями? Тайпдеф - синоним типа на уровне компилятора. Кроме удобства и более читаемого кода разницы между кодом с тайпдефами и без него нет.

> что ни сишная, ни юниксовая, ни посиксная библиотеки никогда не содержат typedef для структур
А FILE - что по-твоему?

>>1313733
> используя префикс zalupa_mutex_t для своих мьютексов
Суффикс _t зарезервирован посиксом.

Ответы13770

420 19 дек, 21:28 420 1313770

>>1313747

более сложный машинный код нужен для действий над структурами, в сравнении с аналогичным действиями над встроенными типами, а typedef позволяет объявить переменную типа структуры без keyword struct, что делает более трудоемкой оценку сложности кода для того, кто читает исходник, я об этом.

Да, FILE туда же, что и pthread_mutex_t, я тупо не вспомнил, в голову пришли контрпримеры типа struct stat. Понимаю, что надо не примерами мыслить, а более дедуктивно, но я в конвенциях не шарю, признаюсь, дилетант. Кстати, и FILE, и pthread_mutex_t не предполагают, чтоб юзер рассчитывал на конкретное определение, используются только посредством предоставляемых функций (или макросов). Видится закономерность, что typedef в библиотеках используются только для структур, к полям которых пользователь напрямую не обращается. Есть такой принцип? Ну, мне для себя интересно.

А как же суффикс _t в size_t?

Ответы13800

421 19 дек, 22:01 421 1313800

>>1313770
> что делает более трудоемкой оценку сложности кода для того, кто читает исходник
20189 год на пороге, и уже десять лет IDE умеют показывать хинты с определениями структур. Чтобы что-то оценить, все равно нужно видеть тип. Может, там юнион, который никаких дополнительных сложностей (кроме разрешения алиасинга) не создает, или структура, которая отлично упаковывается в 1-2 инта и копируется точно так же как uint64/128_t.

> Есть такой принцип? Ну, мне для себя интересно.
Нет. Есть div_t в stdlib.h. А struct tm и прочее осталось в наследство еще из pre-ANSI С.

> А как же суффикс _t в size_t?
Это стандарт Си, он первичен, ему можно. А вот тебе, пользователю, нельзя.

Ответы1381013822

422 19 дек, 22:17 422 1313810

>>1313800
> IDE умеют показывать хинты с определениями структур
Я, все же, убежден, что код должен быть читаем, даже если его распечатать на черно-белом принтере. IDE в первую очередь упрощает жизнь, а не компенсирует усложнение от гавнокода.

> копируется точно так же как uint64/128_t
Всякие struct {GLfloat r, g, b, a;} - частный случай, все таки довольно часто структуры выходят за uint128_t, что более общий случай.

> А вот тебе, пользователю, нельзя
Ок, не буду)

423 19 дек, 22:31 423 1313822

>>1313800
а вообще, изначально в этом обсуждении я был ЗА typedef, лишь потом как предположение высказал эту байду с читаемостью сложности типа, в вопросительном контексте, мне ведь один товарищ настоятельно отсоветовал юзать тайпдефы. Я же, по скромному опыту, могу знать, что typedef обычно используются, как синоним для существующего встроенного типа, например GLboolean, чтоб точнее отражать смысл в контексте.

Ответы13846

424 19 дек, 23:17 424 1313846

>>1313822
> один товарищ настоятельно отсоветовал юзать тайпдефы
sqlite, zlib, libpng, libjpeg, sdl, pcre всякие - везде тайпдефы. Есть и контрпримеры - тот же libcurl, ну и линукс, куда же без него.

> GLboolean
Однозначно зло, когда есть встроенный в язык тип. В каждой второй библиотеке свой Bool/BOOL/BOOLEAN/u32/word32/uint32 или еще какая-нибудь хрень. Но это тоже легаси с тех времен, когда в Си stdbool/stdint не было - менять уже поздно, а вот новый код так писать не стоит.

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

425 20 дек, 08:51 425 1313945

пацаны, если я создаю массив указателей, мне что придется каждый приравнивать к НУЛЛ? делаю спеллер в цс50 исползуя трие

Ответы13946

426 20 дек, 09:12 426 1313946

>>1313945
Да, если ты будешь пытаться их использовать без инициализации. Если на стеке: void *array[...] = {0};, если на куче, есть calloc. Еще есть memset, и хотя это не совсем по стандарту, на распространенных архитектурах никаких проблем нет.

427 20 дек, 17:33 427 1314123

30 Кб, 1132x238
428 20 дек, 19:11 428 1314193

Как это работает?

Ответы141991429514703

429 20 дек, 19:26 429 1314199

>>1314193
допустим, у тебя один байт(восемь бит) на сферическое число
1000 01012это -5.
ты сдвигаешь содержимое и самый старший бит(самый левый бит в BigEndian), отвечающий за знак, исчезает. И выходит после первого сдвига 0000 1010=10=А
потом ты сдвигаешь вправо на бит, но единица, отвечающая за знак не возвращается и выходит 000 0101=5.
Хотя лично для меня немного стало открытием, что можно такое присваивание делать сразу с битовым оператором.

Ответы14201142051426414506

430 20 дек, 19:29 430 1314201

>>1314199
>выходит 000 01012=5.
конечно же, там подразумевается число 0000 0101=5
фикс

431 20 дек, 19:31 431 1314202

Gff

432 20 дек, 19:36 432 1314205

>>1314199
Спасибо

433 20 дек, 21:27 433 1314264

>>1314199
> 1000 0101 это -5
-123 никак не -5

Ответы14270

434 20 дек, 21:42 434 1314270

>>1314264
а, блин, в натуре. В другую же сторону. К -128 же нужно прибавлять 5. Серьёзный косяк, блин. Извиняюсь.

Ответы14272

435 20 дек, 21:45 435 1314272

>>1314270
Вообще-то к 256 нужно прибавлять -5

Ответы14274

436 20 дек, 21:50 436 1314274

>>1314272
не понял.

Ответы14277

437 20 дек, 21:52 437 1314277

>>1314274
1000 0101 - восемь цифр видишь? Не семь

Ответы14278

438 20 дек, 21:54 438 1314278

>>1314277
Ну, дак это unsigned.
А я ж про signed. В знаковом же типе семь цифр значащих. Или ты про что?

Ответы14292

439 20 дек, 22:21 439 1314292

>>1314278
при операциях сложения и вычитания с битами signed и unsigned происходит абсолютно одно и то же. Вот с умножением и делением уже сложнее. Существуют инструкции imul и idiv, но не существует инструкций iadd и isub. 11111110 + 11111101 = 11111100 тут имеет место технический overflow, но не математичский, -1 + -2 = -3 все работает как надо, единицы безболезненно для процессора выталкиваются из пазов регистров, выдуваются кулером и скапливаются на дне системника в виде пыли.

Ответы14294

440 20 дек, 22:23 440 1314294

>>1314292
>выталкиваются из пазов регистров, выдуваются кулером и скапливаются на дне системника в виде пыли
самое главное, что я подчерпнул на сегодня.

441 20 дек, 22:25 441 1314295

>>1314193
Добавлю, что для чисел со знаком сдвиги старшего бита или в старший бит - это UB.

Ответы14361

442 21 дек, 04:05 442 1314361

>>1314295
Почему, вроде только сдвиг влево UB, т.к. может получиться число любого знака, сдвиг вправо всегда даёт тебе положительное число.

Ответы14703

9 Кб, 314x196
443 21 дек, 14:26 443 1314506

>>1314199
И все же не понимаю.
#include <stdio.h>
main(){
int n;
scanf("%d",&n);
n<<=1;
n>>=1;
printf("%d",n);
return 0;
}
При вводе отрицательного числа на выходе получаю тоже отрицательное. При том если в числе 10 и более знаков выводится пикрил.
Где вообще про все это подробно почитать на русском? Мне просто надо написать программу, которая бы выводила как число хранится в памяти компьютера.

Ответы145161451814685

444 21 дек, 14:43 444 1314516

>>1314506
При сдвиге влево старший бит (знаковый в случае с signed) "срезается". Для сдвига же вправо есть две инструкции - unsigned версия тупо ставит нуль, а signed - дублирует прежний знаковый бит, т.е. 010 >> 1 == 001, но 110 >> 1 == 111. Компилятор выбирает одну из этих инструкций в зависимости от типа, над которым производится операция. Что-то такое помню с времен, когда учил ассемблер, но это не точно)

445 21 дек, 14:50 445 1314518

>>1314506
вообще, сишка - low-level тема, и чтоб полноценно понимать, желательно таки испачкать руки в асме. Любая нормальная книжка по ASM начинается с теории, которая раздувает все эти странности. Не обязательно много кодить, просто пару вечеров покурить литературу, поиграться с gdb (в т.ч. disassemble), писать дальше на Си и быть счастливым. Про float тоже интересно, да и про организацию стека вызова функций. Соотношение затрат времени и просветительской пользы однозначно говорит в пользу must глянуть.

Ответы1471814719

446 21 дек, 19:04 446 1314685

>>1314506
>При том если в числе 10 и более знаков выводится пикрил.

Сдвигом влево ты устанавливаешь старший бит. Как только это происходит, система/компилятор начинает рассматривать всё эту хуергу как отрицательное число. Дальше ты делаешь сдвиг справо и всё сдвигается... всё, кроме старшего бита; по по-прежнему остаётся установленным (т.е. вся хуерга по-прежнему рассматривается как отрицательное число).

Вот, смотри-ка, следи старшим битом (выделен жирным):

0100 1001 1001 0110 0000 0010 1101 0011 ( десятичное '1234567891' в памяти, размер слова - 32 бита)
1001 0011 0010 1100 0000 0101 1010 0110 (после сдвижки влево на один бит. Старший/верхний бит установлен, теперь это '-1825831514')
1100 1001 1001 0110 0000 0010 1101 0011 (сдвигаем обратно вправо. Сравни эту херь с тем, что было в самом начале; особое внимание на старший/верхний бит. И таки да, это десятичное '-912915757')

447 21 дек, 19:43 447 1314703

>>1314361
> Почему, вроде только сдвиг влево UB
Ну я о нем и говорю. >>1314193 вот тут в первой строчке k может быть отрицательным, и тогда сдвиг влево - это UB. Если в числе k стоит бит, который после сдвига станет старшим - это опять UB. Ну если, конечно, там signed int, а не unsigned.

> сдвиг вправо всегда даёт тебе положительное число
Сдвиг вправо отрицательного числа - implementation defined, потому что sign extension не гарантируется (хотя и выполняется абсолютно всеми популярными процессорами).

И вообще, смотри:
int foo = 0xc0000000;
foo <<= 1; // Допустим, что у нас нет UB, после сдвига: foo = 0x80000000.
foo >>= 1; // После сдвига и sign extension: foo = 0xc0000000.
В чем тогда суть этого куска кода?

448 21 дек, 19:51 448 1314710

>>1305157 (OP)
просто две восьмилитровые бадьи чая, не понимаю "учите си и вы поймете глубины" и в итоге пишут и в целом подходят к си как к ещё одному высокоуровневому, но неудобному языку - надо обязательно накатывать асм + архитектура устройства + ОС, иначе смысла нету от слова совсем

Ответы14718147401515015765

449 21 дек, 20:01 449 1314718

>>1314710
->>>1314518

Ответы14719

450 21 дек, 20:02 450 1314719

>>1314718
пздц я убогий
>>1314518

451 21 дек, 21:01 451 1314735

Хочу выучить Си и написать свою борду. Какие подводные?
Этот двач, кстати, на ANSI C написан

Ответы147361474314860

452 21 дек, 21:10 452 1314736

>>1314735
>Хочу выучить Си
cю

453 21 дек, 21:29 453 1314740

>>1314710
>надо обязательно накатывать асм + архитектура устройства + ОС
Ни! Точнее, зависит от задач. Если у человека задача - работать с железом, то да, ему обязательно надо вкурить всё, что ты перечислил. Если же человек пишет софт для обработки данных, к примеру, то ему просто надо как следует = указатели, динамическое распределение памяти, структуры, пользовательские типы данных Си освоить. Архитектура и асм во втором случае будут тупо избыточны.

Ответы14828

454 21 дек, 21:33 454 1314743

>>1314735
>Троллейбус из буханки хлеба.jpg

455 22 дек, 01:32 455 1314828

>>1314740
ещё раз: вопрос об обучении, о том, когда человек решает разбираться с си для того чтобы как-то понять уровень ниже - но си сама по себе без асма и архитектуры этого знания дать не может, максимум что непосредственно даёт именно язык, это какая-нибудь концепция указателей, которая говорить что есть такая вещь как память, есть адреса и т.д. и то на довольно высоко абстрактном уровне.

Ответы14845

456 22 дек, 04:06 456 1314845

>>1314828
Да-да, и потом цифровую электронику впридачу, и аналоговую еще. И математикой с физикой приправить. Ну а чего, если уж копать, то копать до конца! Невозможно эффективно писать на Си, не зная физики.

Ответы148611490814916

457 22 дек, 07:19 457 1314860

>>1314735
Борда гораздо приятнее пишется на дишке.

Ответы1488514905

458 22 дек, 07:19 458 1314861

>>1314845
Я другой анон, но отвечу. На си пишу год, до этого писал лоу левел дичь на асме(fasm) под винду. Так вот, чтобы вкатиться в си мне понадобилась неделя. Ассемблер считаю избыточным, да. Но как теорию, его знать надо. Помогает во многом понимать как будет работать код

459 22 дек, 11:50 459 1314885

>>1314860
D сложный, нет?

Ответы15006

460 22 дек, 12:53 460 1314905

>>1314860
>дишке
нинужен

461 22 дек, 12:58 461 1314908

>>1314845
Ну, это уже крайность, товарищ. Есть четкий раздел между {C, ASM, x86} и устройством транзисторов. Пока архитектура фон Неймана акутальна, этот уровень абстракции остается незыблемым, и копать под него - уже принципиально другая предметная область. А вот на уровне инструкций еще могут возникать нюансы. Та же оптимизация не может быть проделана так точно на уровне Си. И не надо возражать про -O3. Как бы вам ни не хотелось, примеры, когда программист может сделать лучше, есть. Компилятор - набор шаблонов, не умеющий в анализ задачи.

Ответы15226

462 22 дек, 13:17 462 1314916

>>1314845
вообще, вы тезис подменяете. Речь шла об изучении Си для постижения глубин, в чем мало смысла без ASM, архитектуры и интерфейса ОС (syscall). А вы передергиваете со стебом "невозможно эффективно писать на Си без знаний физики..." Не надо демагогии в технарьском треде, вам в политику. Да, иногда Си играет роль high-level языка, в котором нет ничего лишнего, на котором удобно реализовать грамотно спроектированную эффективную реализацию, но речь не об этом шла...

Ответы1492115048

463 22 дек, 13:30 463 1314921

>>1314916
>реализовать грамотно спроектированную эффективную реализацию
Ой бля...

200 Кб, 640x701
464 22 дек, 14:50 464 1314951

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

Ответы1498715050

465 22 дек, 16:42 465 1314987

>>1314951
что в этом хорошего? куча нубасов вкатываются и начинают гуглить нипанятное

466 22 дек, 16:56 466 1315006

>>1314885
По сложности сравним с питоном, по скорости с крестами, по безопасности с ржавчиной. Но лучше знать сишку перед вкатом в него, а то будешь писать бездумно в стиле макаки. Считай что это си++ здорового человека.

Ответы15018

467 22 дек, 17:07 467 1315018

>>1315006
>Считай что это си++ здорового человека.
Так проблема не в крестах, а в ООП

468 22 дек, 17:43 468 1315048

>>1314916
Мань, я тот анон, который тебе изначально по поводу asm-а возражал.
>вообще, вы тезис подменяете
Ты тоже, только в обратную сторону.
>Речь шла об изучении Си для постижения глубин
Ога, только глубины у каждого свои: у анона, пищущего софт под обработку данных одни, а у анона, работающего с железом, другие. И, соответственно, объём необходимых для успешной работы знаний разный.
>на котором удобно реализовать грамотно спроектированную эффективную реализацию
И эффективная реализация тоже у каждого своя. Условному обработчику данных достаточно уметь грамотно пользоваться памятью (= указатели, динамическое распределение и кастомные структуры данных). Он может полезть и ниже, и начать высчитывать количество тактов, затрачиваемое на каждый чих, но только нахуя?! Такой уровень оптимизации задачи будет тупо избыточен. Соответственно, уровень архитектуры и ассемблера тащемта нахуй здесь не нужен. Достаточно уметь грамотно укладывать данные в памяти.
Другое дело, железячник. У того в микроконтроллере несколько десятков килобайт памяти, плюс, ему надо окучивать некую real-time парашу. В этом случае просто необходимо грузиться глубокой оптимизацией по объёму и скорости выполнения. И пердолиться в архитектуру а асм здесь просто необходимо.

Ответы1512315130

469 22 дек, 17:46 469 1315050

>>1314951
>Дрочит на языковые чарты и топ-листы
Ой, дураааак!

470 22 дек, 19:16 470 1315123

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

Ответы1513015150

471 22 дек, 19:20 471 1315130

>>1315048
т.е. твоя простыня похожа на возражение на, например, утверждение по типу "всем кто пишет на си нужно пердолит асм" - хотя никто нигде такого не сказал.
>>1315123-кун

472 22 дек, 20:06 472 1315150

>>1315123
А это >>1314710 не ты был с "надо обязательно накатывать асм + архитектура устройства + ОС, иначе смысла нету от слова совсем"? Если нет, то мои пардоны!

473 22 дек, 21:59 473 1315226

>>1314908
> фон Неймана
Везде давно гарвард с плюшками.

> этот уровень абстракции остается незыблемым
Грани между хардпроцессорами и софтпроцессорами все больше стираются. Если ты копаешься в асме, то рано или поздно коснешься FPGA. Играть с FPGA без понимания цифровой логики - ну это как на Си писать, не зная ассемблера, лол.

> Компилятор - набор шаблонов
Вся низкоуровневая оптимизация - набор шаблонов. Причем памяти человека (и оперативной, и долговременной) может не хватить, чтобы учесть все нюансы архитектуры. У компилятора такой проблемы нет. Да и хорошо вылизанный код, написанный человеком вручную, модифицировать или адаптировать под другое семейство архитектуры тем сложнее, чем лучше он вылизан.

Ответы15283

474 23 дек, 00:24 474 1315283

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

475 23 дек, 10:41 475 1315352

Почему функция main всегда в пpимеpах int? почему инт, не double, т.д.? Она же должна возвpащать ноль? И может ли быть она void? В общем я не понимаю эту область

Ответы1537715401

476 23 дек, 11:45 476 1315377

>>1315352
> почему инт, не double, т.д.
Потому что в стандарте так прописано, что среда (ОС или что там у тебя вместо нее) должна ожидать int. И с тех пор, как среда ожидает int, все должны возвращать int. Если бы стандартизировали complex float, ты бы возвращал complex float.

> Она же должна возвpащать ноль
EXIT_SUCCESS (обычно 0), EXIT_FAILURE (обычно 1) или любое другое implementation-defined значение. Алсо, начиная с C99, можно не писать return 0 в main (и только в ней) - если его нет, он подразумевается.

> И может ли быть она void?
В теории да, какой-нибудь конкретный компилятор может разрешить тебе объявлять main еще как-то, в том числе и с void (тогда он будет сам как-нибудь придумывать тебе код возврата). Но как и любая привязка к нестандартным особенностям компилятора - это плохо, так делать не нужно.

Ответы15398

477 23 дек, 12:37 477 1315398

>>1315377
> среда должна ожидать int.
значит все дополнительные функции, котоpые используются в main тоже должны быть int по канону или как?

Ответы15450

478 23 дек, 12:47 478 1315401

>>1315352
Можно в любом другом месте в программе сделать системный вызов exit с каким-то значением, для чего есть функция-обертка exit(int). Иначе выполнение, рано или поздно, "спустится" до возврата из main, который в свою очередь был вызван куском кода под меткой _start, и тогда _start сделает exit с кодом, который main оставил своим return. Технически можно вообще забить по-черному, хоть string возвращай (если C++), ничто не мешает "выплюнуть" любой мусор, находящийся в rax. Вопрос лишь в строгости компилятора на предмет подобных неграмотных моментов, он может просто ругнуться (warning), а может настойчиво ругнуться (error).

479 23 дек, 14:15 479 1315450

>>1315398
> значит все дополнительные функции, котоpые используются в main тоже должны быть int
Если ты возвращаешь их значение из main - да (т.е., например, ты делаешь какой-нибудь if (argc < 2) return usage();. А если сам возвращаемое значение обрабатываешь - можешь хоть Go косплеить и возвращать struct { sometype result; bool error; }, дело твое.

480 23 дек, 20:56 480 1315688

Объясните запись и чтение в/из файла. Я тупой и проебал эти лекции

Ответы15722

481 23 дек, 22:14 481 1315722

>>1315688
то же самое, что и чтение из и запись в консоль (терминал, командная строка). Простой случай: в in файл заранее впечатано то, что ты печатал бы в ходе запуска проги, а out файл в итоге содержит все, что выводилось бы на экран. Разница в том, что можно открыть много разных файлов, и что можно возвращаться назад или забегать вперед, например, при чтении.
Чтоб открыть, создаешь структуру типа FILE *file; и открываешь fopen (file, "r"); "r" для read - чтения, "w" для write - записи, после чего, почти как обычно, но вместо printf (...); пишешь fprintf (file, ...); а вместо scanf (...); пишешь fscanf (file, ...); Вообще, и в консоль / из консоли тоже можно так делать fprintf (stdout, ...); fscanf (stdin, ...);

482 24 дек, 00:25 482 1315765

>>1314710
Я, конечно понимаю, что сейчас напишу фрическифееричную хуйню полную шизофазического бреда, но я со своей колокольни постараюсь объяснить, почему для сей нужен фундамент из асма. И почему существуют кресты. Смотри, ёпты. Раз ты знаешь про "уровень абстракции языка", то значит и уловишь такую концепцию:

Гиперуровень: Любой естственный язык, т.е. типикал лингвистика без особого упора на грамматику и синтаксис. МБ обыденное общение и счётный анализ общения.
Сверхвысокоуровневый язык - потолок: голосовые помощники, которые позволяли бы программировать машины. МБ сильный ИИ. Но тут можно порассуждать на тему того, каким должен быть сверхвысокоуровневый язык программирования. Быть может макропроцессоры откуда-нибудь отсюда.
Где-то между сверхвысокоуровневым ЯП и высокоуровневым я бы разместил Bash(и все остальные шеллы для управления средой, как и повершел), заодно и мерзкий CMD сюда припихнём, но он теряет свою концепцию, при которой ты будто бы общаешься со средой компьютера. А вот пинусовские оболочки свой шарм сохраняют. Если бы ангельцкий был моим родным языком, то я бы искренне офигевал, что я машине отдаю приказы по-человечески, а она берёт и выполняет их, за исключением каких-то узкоспециализированных утилит.
Высокоуровенвый язык: Python, хотя питон где-то между сверхвысокоуровневыми языками и высокоуровневыми языками, но чуть пониже оболочек. Здесь же все мейнстримные и не очень языки: C++, сисярп, Java, JS, Obj-C, функциональщина, может быть Go и пр. Но высокоуровневые языки имеют свои градации само собой и отнесение их к категории высокоуровневых тоже условно, как и вообще всё деление на какие-то уровни.
Средний уровень: Непосредственно сам Си и какие-то подобные языки, но я их не могу вспомнить. Хотя был ещё когда-то BCPL. Ещё быть может Фортран такой же, хотя не совсем уверен на его счёт. Ещё, может быть Форт.
Низкоуровенвый язык: ассемблеры: gas, MASM, FASM, TASM и пр.
Нулевой уровень-пол: Архитектуры: ARM, X86, MIPS и пр. Здесь ты тупо хуяришь машинные коды и раскидываешь их по областям памяти, чтобы процессоры их правильно исполняли и не путали с данными. Вот здесь кончается сфера айти и начинается уже более анальный пердоленг на уровне радиотехники. И дальше уже идут подпольные уровни типо фундамента или свай для дома, думаю аналогию с домами без фундамента проводить уже не нужно. Где-то здесь же на нулевом написание прошивок для микроконтроллеров и умение проектировать операционки.
минус-первый уровень: цифровая схемотехника. И где-то тут, под архитектурами и машинными кодами процессоров ПЛИСостроение распологается.
Минус-второй уровень: аналаговая электротехника. Хотя два верхних уровня абстракции радиоэлектронщики объединяют и разбивают на свои условные уровни: энергетика, бытовая электроника, непосредственно радач и др.
Минус-третий уровень: Здесь можно, конечно, это опустить, но я обязан вставить этот интеруровень, как переходный. Анальная физика в вакууме, которая на своём переднем крае стирает грань с...
Минус-четвёртый уровень: сферическая математика в вакууме. Стоит ли что-либо объяснять на этот счёт? Хотя, конечно, для программиста и не обязательно знать пространственную математику и какие-то узкоспециализированные темы, но я думаю, что из математики любые знания приветствуются.
Гиперуровень: И тут мы снова возвращаемся к лингвистике и естественным языкам с этимологией любой математической категории, ведь без знания истории создания термина и цели его создания трудно будет понимать термин. И на этом гиперуровне начинается цикл и снова начинаешь отсюда спускаться в потолок уровней абстракции. Хотя гиперуровень пронизывает все остальные на всём цикле этой концепции.

И, как мне кажется, чем больше ты пытаешься перепрыгнуть уровней абстракций, то тем больше ты тратишь усилий на это. Мне кажется, трудовремязатраты либо экспонецниально, либо факториально зависят от количества перепрыгиваемых уровней. Как если у тебя есть языки, которые находятся на своём уровне абстракции и они хорошо подходят для решения задач из этого же уровня. И при попытке применить язык к другим уровням опять же увеличивается количество времени для этого. Как например писать компиляторы для кастомных архитектур на JS, или на уровне маш.кодов собирать свой инетпретатор Джавы, хотя второе кажется более обыденным, но бывалые повертят пальцем у виска и скажут, что лучше оттачивать уже годами оттачиваемый JVM.

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

А по итогу тебе будет очень эффективно развиваться в двух соседних уровнях, относительно основного, ведь трудозатраты на это хоть и увеличиваются, но не смертельны и можно ими обмазываться. А так как Си предполагается средним, то тебе нужен первый(низкий уровень) ассемблеров и архитектур, но до МК дойти уже, если по вкусу придётся, и всё, что ниже в этой концепции уже будет требовать от тебя больше затрат, но даст тебе более глубокое понимание работы, если изучать будешь нисходяще, либо умение пилить уберкрутые фичи и продавать свою высерыписанину, если будешь учиться восходящим способом.

Пруф ми вронг, если прочитал мой уебанский высер.

482 24 дек, 00:25 482 1315765

>>1314710
Я, конечно понимаю, что сейчас напишу фрическифееричную хуйню полную шизофазического бреда, но я со своей колокольни постараюсь объяснить, почему для сей нужен фундамент из асма. И почему существуют кресты. Смотри, ёпты. Раз ты знаешь про "уровень абстракции языка", то значит и уловишь такую концепцию:

Гиперуровень: Любой естственный язык, т.е. типикал лингвистика без особого упора на грамматику и синтаксис. МБ обыденное общение и счётный анализ общения.
Сверхвысокоуровневый язык - потолок: голосовые помощники, которые позволяли бы программировать машины. МБ сильный ИИ. Но тут можно порассуждать на тему того, каким должен быть сверхвысокоуровневый язык программирования. Быть может макропроцессоры откуда-нибудь отсюда.
Где-то между сверхвысокоуровневым ЯП и высокоуровневым я бы разместил Bash(и все остальные шеллы для управления средой, как и повершел), заодно и мерзкий CMD сюда припихнём, но он теряет свою концепцию, при которой ты будто бы общаешься со средой компьютера. А вот пинусовские оболочки свой шарм сохраняют. Если бы ангельцкий был моим родным языком, то я бы искренне офигевал, что я машине отдаю приказы по-человечески, а она берёт и выполняет их, за исключением каких-то узкоспециализированных утилит.
Высокоуровенвый язык: Python, хотя питон где-то между сверхвысокоуровневыми языками и высокоуровневыми языками, но чуть пониже оболочек. Здесь же все мейнстримные и не очень языки: C++, сисярп, Java, JS, Obj-C, функциональщина, может быть Go и пр. Но высокоуровневые языки имеют свои градации само собой и отнесение их к категории высокоуровневых тоже условно, как и вообще всё деление на какие-то уровни.
Средний уровень: Непосредственно сам Си и какие-то подобные языки, но я их не могу вспомнить. Хотя был ещё когда-то BCPL. Ещё быть может Фортран такой же, хотя не совсем уверен на его счёт. Ещё, может быть Форт.
Низкоуровенвый язык: ассемблеры: gas, MASM, FASM, TASM и пр.
Нулевой уровень-пол: Архитектуры: ARM, X86, MIPS и пр. Здесь ты тупо хуяришь машинные коды и раскидываешь их по областям памяти, чтобы процессоры их правильно исполняли и не путали с данными. Вот здесь кончается сфера айти и начинается уже более анальный пердоленг на уровне радиотехники. И дальше уже идут подпольные уровни типо фундамента или свай для дома, думаю аналогию с домами без фундамента проводить уже не нужно. Где-то здесь же на нулевом написание прошивок для микроконтроллеров и умение проектировать операционки.
минус-первый уровень: цифровая схемотехника. И где-то тут, под архитектурами и машинными кодами процессоров ПЛИСостроение распологается.
Минус-второй уровень: аналаговая электротехника. Хотя два верхних уровня абстракции радиоэлектронщики объединяют и разбивают на свои условные уровни: энергетика, бытовая электроника, непосредственно радач и др.
Минус-третий уровень: Здесь можно, конечно, это опустить, но я обязан вставить этот интеруровень, как переходный. Анальная физика в вакууме, которая на своём переднем крае стирает грань с...
Минус-четвёртый уровень: сферическая математика в вакууме. Стоит ли что-либо объяснять на этот счёт? Хотя, конечно, для программиста и не обязательно знать пространственную математику и какие-то узкоспециализированные темы, но я думаю, что из математики любые знания приветствуются.
Гиперуровень: И тут мы снова возвращаемся к лингвистике и естественным языкам с этимологией любой математической категории, ведь без знания истории создания термина и цели его создания трудно будет понимать термин. И на этом гиперуровне начинается цикл и снова начинаешь отсюда спускаться в потолок уровней абстракции. Хотя гиперуровень пронизывает все остальные на всём цикле этой концепции.

И, как мне кажется, чем больше ты пытаешься перепрыгнуть уровней абстракций, то тем больше ты тратишь усилий на это. Мне кажется, трудовремязатраты либо экспонецниально, либо факториально зависят от количества перепрыгиваемых уровней. Как если у тебя есть языки, которые находятся на своём уровне абстракции и они хорошо подходят для решения задач из этого же уровня. И при попытке применить язык к другим уровням опять же увеличивается количество времени для этого. Как например писать компиляторы для кастомных архитектур на JS, или на уровне маш.кодов собирать свой инетпретатор Джавы, хотя второе кажется более обыденным, но бывалые повертят пальцем у виска и скажут, что лучше оттачивать уже годами оттачиваемый JVM.

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

А по итогу тебе будет очень эффективно развиваться в двух соседних уровнях, относительно основного, ведь трудозатраты на это хоть и увеличиваются, но не смертельны и можно ими обмазываться. А так как Си предполагается средним, то тебе нужен первый(низкий уровень) ассемблеров и архитектур, но до МК дойти уже, если по вкусу придётся, и всё, что ниже в этой концепции уже будет требовать от тебя больше затрат, но даст тебе более глубокое понимание работы, если изучать будешь нисходяще, либо умение пилить уберкрутые фичи и продавать свою высерыписанину, если будешь учиться восходящим способом.

Пруф ми вронг, если прочитал мой уебанский высер.

Показать весь текст
Ответы1581517183

483 24 дек, 08:49 483 1315815

>>1315765
>Гиперуровень
Ебануться. Это скорее всего будут самопрограммирующиеся нейронные сети и ты пойдешь нахуй со своими умениями программирования и будешь никому не нужен от слова совсем.

>Сверхвысокоуровневый язык
Это касается только божественный Пролог, и поэтому ты сразу идёшь нахуй со своим невъебически градусным высером.

Машинные коды являются также низкоуровневым программированием.

Всё начиная описанного тобой с "минус первого уровня" и до "минус второго уровня" - то это вообще не относится к программированию, так как этот предмет называется схемотехника и электротехника, то есть данная абстракция вытекает за края области программирования, что противоречит области сечения рассматриваемого вопроса.

>Минус-третий уровень
>Минус-четвёртый уровень
У пациента развивается острое шизофреническое расстройство реальности через призму слабоумия и самопомрачения.

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

>Я, конечно понимаю, что сейчас напишу фрическифееричную хуйню полную шизофазического бреда.
>бреда
Тебе с такой хуйнёй быстро, решительно и нахуй в раздел /b.

484 27 дек, 01:15 484 1317063

Как сделать пробел между символами в строке? Например, если у меня несколько раз выводится printf("%i", x), что нужно добавиться к строке?

Ответы17085

485 27 дек, 03:20 485 1317085

>>1317063
#define PRINTF_WITH_PROBEL putchar (' '); printf
и можно писать
PRINTF_WITH_PROBEL ("%i", x);

Ответы17099

486 27 дек, 05:34 486 1317099

>>1317085
не усну, пока не исправлю
#define PRINTF_WITH_PROBEL putchar (' '), printf
теперь можно даже return нормально получать
count_zaebisfuly_printed_chars = (PRINTF_WITH_PROBEL ("%i", x));

487 27 дек, 07:17 487 1317108

Поясните нубу такой вопрос. Какого хуя си не может делить 2 переменные, которые имеют тип с дробью? Надо делать как A=B*1.0/C. Что за хуйня, зачем надо умножать число на дробную единицу чтобы все нормально работало?

Ответы171371717817221

488 27 дек, 09:28 488 1317137

>>1317108
Может.
А если аргументы целые, а результат нужен дробный, кастуешь один из аргументов в дробный, умножать ничего не надо.

Ответы17427

489 27 дек, 12:22 489 1317178

>>1317108
Ты бы хоть код показал бы, а то выглядит как голословное утверждение.

Ответы17427

490 27 дек, 12:29 490 1317183

>>1315765
>Высокоуровенвый язык:
>C++
>Средний уровень:
>Ещё, может быть Форт.

Иксперд в треде, все на галеру!

Ответы17187

491 27 дек, 12:43 491 1317187

>>1317183
YAAAAAAAAAAAAAAAAAAAAAARRRRRRRRR

492 27 дек, 14:05 492 1317221

>>1317108
A = (int)B/(int)C

Ответы17427

493 27 дек, 16:45 493 1317309

>>1313108
>Gtk -- это боль
Ну не сказал бы, там столько макросов и функций, что gtk превращается в своеобразный скриптовый язык уровня objective-c

494 27 дек, 18:54 494 1317360

Для 8-битных систем, типа NES и ZX Spectrum есть ли смысл использовать Си? Насколько хороший код выдают компиляторы? Или там нет выбора кроме ассемблера?
Хочу портировать Fallout на Донди и Спектрум. Вот X-COM и WarCraft ("Черный Ворон") перенесли же, а фолыч устроен куда проще.

Ответы1742517685

495 27 дек, 21:46 495 1317425

>>1317360
>Насколько хороший код выдают компиляторы?
Напиши какую-нибудь простенькую фигнюшку типа бегающего по экрану квадратика на Си и на ассемблере, и сравни размер и скорость исполнения.
>Для 8-битных систем, типа NES и ZX Spectrum есть ли смысл использовать Си?
В зависимости от первого пункта. На Си поудобнее канеш писать было бы, чем на ассемблере.

496 27 дек, 21:49 496 1317427

>>1317137
> Может.
Это если числа дробные изначально
>кастуешь один из аргументов в дробный
Это как? Если у тебя всегда целые числа, которые надо поделить с остатком - хули делать?
>>1317178
Код чего? Тут про простое деление двух целых чисел.
>>1317221
Инт это же целое число без дроби.

Ответы18231

497 28 дек, 01:28 497 1317592

Сап. Следует ли делать явное приведение типа при аллоцировании?
int p = malloc(sizeof(int));
или
int p = (int*)malloc(sizeof(int));
???
На том же цппреференс в примерах как в первом коде, без приведения. В пользу же приведения слышал мнение, что если маллок возвращает указатель типа войд, то нужно явно его привоить к нужному типу. Это вполне логично.
У себя пишу с приведением, но ведь это удлиняет код, и такая запись смотрится чуточку хуже чем без приведения. Так что хотелось бы услышать мнение на счет этого.

Ответы17602176091761017664

498 28 дек, 03:02 498 1317602

>>1317592
Нет никакого смысла это делать.

Ответы17777

499 28 дек, 03:43 499 1317609

>>1317592
для начала неплохо бы объявить p как указатель
int p;
а не просто
int p;
что не только warning вызовет, но и не заработает нормально на машине с 64-битными адресами.
А кастовать ничего не надо, void для того и есть, чтоб без ругани присваивать другим указателям, объявленным как угодно.

Ответы1761017777

500 28 дек, 03:44 500 1317610

>>1317592
>>1317609
пардон, это двач звездочки кушает

501 28 дек, 10:09 501 1317664

>>1317592
В данном случае каст нужен только для лучшей читаемости.
int #p = тут без каста, т.к. у нас слева и так написано, что p это указатель на инт.
Если ты заранее обяъвил p, а уже дальше далешь малоок, типа p = malloc..., вот тут можно сделать каст, чтобы читающий сразу видел, что p это указатель на инт, а не возвращался к тому месту, где ты его объявил и сам смотрел.

Ответы17777

502 28 дек, 11:14 502 1317685

>>1317360
Тоже недавно захотелось написать что-нибудь для спектрума. Вроде нагуглил какой-то msx c, который тоже под zilog. Но понял, что если захочу запилить что-то крупное, то это надолго, даже если использовать си.

503 28 дек, 11:45 503 1317698

>>1305157 (OP)
Анончи, подкинте идею как можно эффективно применить к тексту охуллиард регулярок? Можно их как то транслировать?

Ответы17816

504 28 дек, 14:27 504 1317777

>>1317664
>>1317609
>>1317602
Всем спасибо. В общем, делаю без каста, к тому же, в некоторых местах были ворнинги из за этого.

Ответы17816

505 28 дек, 15:49 505 1317816

>>1317698
> как можно эффективно применить к тексту охуллиард регулярок
Поиск или замена? Для поиска можно через | объединить. А в целом, движок и так таблицу состояний генерирует, а в PCRE есть JIT, быстрее уже некуда.

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

Ответы1786917889

506 28 дек, 17:19 506 1317869

>>1317816
>Для поиска можно через | объединить. А в целом, движок и так таблицу состояний генерирует
Хуйня, самих регулярок которых нужно применить ахулиард, похоже без тупого прохода в цикле не обойтись

507 28 дек, 17:50 507 1317889

>>1317816
>Но делать так не стоит.
Просто я еще дополнительно изучил этот вопрос, абсолютное большинство говорит что каст в си избыточен и часто не нужен и порой не безопасен.
В некоторых местах каст вызывал у меня ворнинги при компиляции с флагом -Wall, что намекает на ненужность. И во многих примерах, в том числе на cppreference каст не используется.

ПЕРЕКАТ # OP 508 28 дек, 18:20 508 1317915

>>1317913 (OP)
>>1317913 (OP)
>>1317913 (OP)
>>1317913 (OP)
>>1317913 (OP)

509 29 дек, 08:45 509 1318231

>>1317427
A = (double)B/(double)C

Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 21 января 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion