LINUX.ORG.RU

чистый Си

 


2

3

Всем добра. Учусь программированию под линукс, знаю что нет ничего лучше чем практика. Пересел из микроконтроллеров, поэтому практически все нужно осваивать заново. Много гуглил но так и не смог найти примеры работы как загрузить веб контент, json или код html, и cookie на чистом си под линукс. а также как отправлять cookie. Киньте пример или ссылку на него, только рабочий пример пожалуйста, так как для меня это новые ворота.

Ответ на: Не надейтесь. от Moisha_Liberman

а вторые просто пишут

Судя по количеству постов тут, это относится не к вам=)

А вообще вы забыли про категорию людей, которые пишут и на Си, и C++ знают и спокойно берут(чтоб просто писать) какие-нибудь perl'ы или python. Потому как разные задачи удобнее решать с помощью различных инструментов.

anonymous
()
Ответ на: комментарий от anonymous

Да мои-то комменты тут редки...

И, по-моему, я один из немногих, кто отвечал на вопросы ТС. В отличие от остальной флоры.

Впрочем, Вам виднее. Не буду спорить. По барабану.

Moisha_Liberman ★★
()
Ответ на: комментарий от anonymous

И это правильно!

Всегда использовал C/C++ только для написания нового API /библиотек/.

PS: Разумно написать а-ля 1С на C/C++, а подсчет реализованных мышеловок на 1С.

anonymous
()
Ответ на: комментарий от anonymous

PS: Разумно написать а-ля 1С на C/C++, а подсчет реализованных мышеловок на 1С.

Лучше так.
PS: Разумно написать а-ля 1С на C/C++, а учет реализованных мышеловок на 1С.

anonymous
()
Ответ на: комментарий от anonymous

для реализации которого придется использовать внешние инструменты

Unix-way и С не даром ведь придумали одни и те же люди. Ну вот, как я понимаю, не ломает правильного сишника выход за границы самого языка. Нужно что-то такое сгенерировать в программе? Пиши генератор исходного кода и генерируй. Точно из тех же соображений Вирт и прямые его ученики не включали в свои языки макросы и дженерики. К такому подходу можно относится по разному, но, как минимум, это позволяет программисту поддерживать контролируемое время компиляции.

Языки, вроде D и Nim, кажется, позволяют всё делать «быстро и красиво». Это правда языки с garbage collection, но он там всё же не прибит гвоздями и, и там и там, в принципе отключаем (ценой отказа от части standart library). Одна проблема. Пока не один из таких языков не стал мейнстримом, и, похоже, ни одному из них это и не грозит.

be_nt_all ★★
()
Последнее исправление: be_nt_all (всего исправлений: 2)
Ответ на: комментарий от be_nt_all

не ломает правильного сишника выход за границы

Выход за границы — это просто UB. Ломает-не ломает — это уж как повезёт.

anonymous
()
Ответ на: комментарий от be_nt_all

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

Так и хорошо. Тем более непонятно, откуда береться «на си можно все»=)

anonymous
()
Ответ на: комментарий от anonymous

Выход за границы — это просто UB. Ломает-не ломает — это уж как повезёт.

Книги ANSI stadard of C programmer в природе не существует, но отцы-основатели подали пример, написав некоторый инструментарий для генерации кода (к примеру: lex/yacc и m4), да и Керниган, емнип, в Практическом программировании об этом писал.

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

А вот интересно, программеры (во главе с Ричардом нашим Столлманом), которые пишут на С только самое ядро, а всю бизнес-логику на встраиваемой скриптоте (лисп, луа, тикль или ещё что) — они всё ещё C-программисты?

be_nt_all ★★
()
Ответ на: комментарий от anonymous

Второе повторение шутки уже не смешно. Нет никаких доказательств, что для си-программиста границы объекта — это именно язык C. Есть доказательства обратного — хотя бы популярность таких инструментов, как make (autotools, cmake et cetera), без первого даже старый-недобрый Visual C не обходился.

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

они всё ещё C-программисты?

Не вижу смысла вообще делить программистов по языкам. Нормальный программист выбирает(и/или создает) инструмент под задачу.

anonymous
()
Ответ на: комментарий от anonymous

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

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

Более того попытка стать гуру в разных языках - просто обречет на невозможность достичь верха в каждом из них. Будет что-то наподобии уровня Брюса Эккеля, который вроде бы написал перед книжкой Философия Джавы книжку Философия Си++, но я как-то почитал первые главы Философии Джавы, и там были для сравнения листинги из ++. Ну видно что человек не плюсовик. Хотя и книжку написал :)

bonta ★★★★★
()
Последнее исправление: bonta (всего исправлений: 1)
Ответ на: комментарий от bonta

хотя конечно про Экклея это очень субъективно, таки он сооснаватель коммитета по стандартизации Плюсов.

bonta ★★★★★
()
Ответ на: комментарий от bonta

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

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

anonymous
()
Ответ на: комментарий от anonymous

Что переводится не иначе как «питон заставляет людей действовать согласно своей неправильной логике». Тут наверняка большинство - адепты программирования на английском, ведь трудно понтануться, сказав разностные уравнения вместо дифференциальные уравнения. А так перед самочками можно сойти за типа продвинутого удалого мальца, который в инглиш может. Или самки, насосавшиеся иностранной терминологии ненужной в русском так себя ведут. Чистый Си располагает к русскому.

anonymous
()
Ответ на: комментарий от anonymous

Что переводится не иначе как «питон заставляет людей действовать согласно своей неправильной логике».

Нет, это переводится как «питон проще и работает на другом уровне». А структура программы в питоне и в плюсах похожа. Это ж не хаскель или эрланг.

Поэтому питон так популярен для прототипов, чтобы проверить идею алгоритма. А когда всё работает, тот же код с минимальными изменениями переписывается в c/c++, чтобы выжать больше скорости или уложиться в меньшую память.

anonymous
()
Ответ на: комментарий от bonta

Во втором случае будет просто слив. Увы, но это так.

anonymous
()

Rust.

(Я не предлагаю вам его использовать, просто это ненормально, когда в треде с названием «чистый Си» нет упоминания, так сказать, «кристально чистого Си» - Rust’а. Вот теперь упоминание есть.)

anonymous
()
Ответ на: комментарий от anonymous

Разницу между что делать и как делать полагаю может осилить даже ребенок. Так вот Python как и С++ и Haskell это что делать, в то время как Си это как делать. Как самое важное. Прототип дает возможность понять будет ли вообще работать задуманная схема. Чтобы она работала быстро схема должна быть прямой. Отсюда сразу понятно, что скорость исполнения и занимаемая память взаимно зависимы. Повышенное потребление памяти - кривая программа. Точно так же в Go лишние проверки тормозят работу программы. Единственное зачем делают разные C++ или C# это чтобы сразу забыть про аналогичный код и избавиться от претензий со стороны тех, кто писал прямой код на Cи как на высокоуровневом ассемблере. Какие бы идеи ни были заложены в язык вроде Haskell все равно его библиотеки написаны на C. А значит при желании их можно использовать в C. Но тогда создается угроза нападения троллей, владеющих правами на уже написанный код. То есть вот мы создали молоток, а другие не могут создавать молоток, они должны выдумать фотоаппарат, который подходит для забивания гвоздей. Прототипы не решают проблему кривого кода, потому что надо точно знать язык программирования, чтобы написать на нем прямую программу. «Высокоуровневые» возможности С++ нужны лишь в ряде мест, потому что по аналогии с объектами есть изоляция в функциях С того же самого - меняется лишь толщина бреда, которым договариваются люди, а не машины. Для компьютера по факту все так же будут существовать 1 и 0 за редким исключением.

anonymous
()

Супер друпер поверфул Аш-Ти-Ти-Пи сервер точка Си.

Ну как, открываешь сокет, биндишь, лиснишь, акцептишь, а потом такой раз

#define SDP_HTTP_SRV_REPLY "HTTP/1.1 501 Not Implemented\r\n\r\n"
write (connfd, SDP_HTTP_SRV_REPLY, sizeof (SDP_HTTP_SRV_REPLY));
close (connfd);
Примерно точно. Даже мульти-тридить не нужно, и так будет работать быстро и безотказно. Никто не уйдёт обиженным.

kostyarin_ ★★
()
Ответ на: комментарий от anonymous

Лох, завершающий \0 зачем-то записал в ответ.

Осыпаюсь пеплом.

kostyarin_ ★★
()
Ответ на: комментарий от bonta

ну посмотрю я на людей которые несколько лет кодили скажем на Питоне и им потребовалось для задачи на Си++ пописать

Не может потребоваться для задачи на С++ пописать. Ну кроме случаев внезапной поддержки. А так питонист возьмет сишечку и сделает на ней для себя модуль питоновский. И пойдет дальше херачит на питоне. Таких людей знаю много.

anonymous
()
Ответ на: комментарий от bonta

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

Наблюдаю такое в течении последних лет 7. На разных работах и в разных сферах. Скрипты, имитаторы, самописные тесты, системы сборки/пакетные менеджеры и т.п. - берут питон и пишут. В чем проблема-то?

anonymous
()
Ответ на: комментарий от bonta

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

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

anonymous
()
Ответ на: комментарий от bonta

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

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

anonymous
()

зачем тебе этот глючный, тормозной, забагованный и полностью уйоби#ный си. Пиши на форте. Ну или уж тогда лиспе. А все эти си и его потомки это полное де$ьмо которое уничтожило IT, сведя всю отрасль до мимасиков в интернете. Весь хаос в IT порождён си и его последователями индусомакаками.

anonymous
()
Ответ на: комментарий от anonymous

Весь хаос в IT порождён си

Хаос в IT порожден говнокодерами, а их хватает в любых ЯП.

anonymous
()
Ответ на: комментарий от casusnur

Спроси в сообществе suckless software. Думаю, вы найдёте общий язык.

anonymous
()
Ответ на: комментарий от be_nt_all

а где нибудь в Boost или около и сейчас наверняка

Чтоб не быть голословным — в Boost.Hana

be_nt_all ★★
()
Ответ на: комментарий от SakuraKun

Будет. Однозначно будет. Но для этого миру придётся постоять и подождать лет 10-15, пока софт перепишут, весь use-after-free выловят, с выходами за границы массивов разберутся и прочие проблемы с текущей памятью решат. А после — точно заживём, да ещё и как! Но развиваться будем не быстро. Сам понимаешь, каждую новую идею придётся на C писать, use-after-free ловить, выходы за границы массивов, память течёт… Ну в общем ты в курсе.

anonymous
()
Ответ на: комментарий от SakuraKun

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

anonymous
()

Владимир

Вопрос к all.
Зачем разработчик синтаксиса C для доступа к адресам использовал "->"?
К примеру:

struct Point { int x; int y; };

INT x, y;

... ...

Point *Point01 = (Point *) malloc( sizeof( Point ) );

Point01->x = 100; Point01->y = 2;

Разве компилятор не понимает, что Point01 - адрес?
Понимает.
Так почему бы не: Point01.x = 100; Point01.y = 2;

anonymous
()
Ответ на: комментарий от anonymous

Владимир

«Почему земля имеет форму треугольника, а в C к адресным полям доступ производится с использованием ->?»
«Молчит наука».

anonymous
()
Ответ на: комментарий от anonymous

Владимир

888 - люблю это число.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.