LINUX.ORG.RU

чистый Си

 


2

3

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

Ответ на: Хммм... от Moisha_Liberman

Скажите, аноним, а как на Ваш взгляд должно было бы выглядеть ФП на С?

Ну не знаю, ленивые вычисления на структурах, может какие-то хитрые create_lambda(), bind() и apply()... Потому мне и было интересно посмотреть.

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

КАрочеее!

Давай пример реально нужной вещи (а не высосанного из пальца), которую в С нельзя сделать, а где-то еще можно!

И я тебе объясню, как это делается в С. Потому что в конечном итоге все сходится к ассемблеру. А С - это такой «почти» кроссплатформенный ассемблер.

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

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

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

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

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

На питоне тоже можно отнаследовать класс от ctypes.Structure, и использовать его при передаче параметров в сишные функции. Но это ж не значит, что питоновые классы — это то же самое, что struct в Си.

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

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

Внутри-то она совсем другая!

Если бы она была другая, то на си нужно было бы вызывать какие-то функции для работы с ней.

Иначе «обход» бы не работал!!!

Так он в момент компиляции работает по сути. В рантайме уже просто смещение по от адреса структуры=)

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

Так он в момент компиляции работает по сути

Вот я и говорю, что несколько иной подход.

Только еще раз: зачем может понадобиться такой «обход»?

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

Нет.

Как аноним ниже Вашего коммента абсолютно правильно заметил, в конечном итоге всё сведётся к ассемблеру. Я только добавлю что ещё к оптимизатору gcc всё ещё сведётся. Т.е., если мы в отношении ф-ии вида:

int my_summ(int a, int b) {
    return a+b;
}

применим attribute ((__pure__)), то это будет поводом для оптимизатора посмотреть её внимательнее. Она может быть даже вообще исключена из кода (dead code elim.) если она не будет вызываться, она может быть заменена в compile time на простое значение, если компилятор заметит что a = 3, b = 2 и больше ни чего не происходит и в рантайме будет сразу, без вычислений подставляться вычисленное на этапе компиляции значение. И т.д. и т.п.

Простите, но это всё-таки, С. Чего Вы ожидали-то? Книга показывает как можно применить парадигму ФП к С, а не учебник по ФП.

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

Вот и я не понимаю...

Только еще раз: зачем может понадобиться такой «обход»?

Тоже задаюсь этим вопросом, а в ответ... тишина. Наверное, чтоб было. Стильно, модно, молодёжно, бородато, педовато, простите, просто уже в голосину ржу... =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: Нет. от Moisha_Liberman

Простите, но это всё-таки, С. Чего Вы ожидали-то?

Ну, например...

Во-первых, на struct-ах в C можно построить классы с методами.

struct MyClass {
  int a, b, c;
};
void MyClass_create(struct MyClass **) { ... }
void MyClass_eval(struct MyClass *this) { ... }
...

Во-вторых, на классах можно построить ленивые вычисления:

auto lazyExpr = Add(Number(2),Mul(Number(3), Number(4))); // -- тут никаких вычислений не выполняется, мы просто сохраняем дерево классов
std::cout << lazyExpr << std::endl; // -- а тут operator<< вызывает .eval() и вычисляет значение

Объединив эти два подхода можно реализовать ленивые вычисления на Си.

Это простой пример. На самом деле мне хотелось увидеть что-то более интересное.

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

Можно.

Даже спорить не буду что можно. Но... зачем? С-программист исходит из реальной необходимости, а не борьбы за гипотетическую «чистоту рядов». Он может записать код в ООП-стиле, в ФП-стиле, если это продиктовано решаемой им задачей. Если ему так будет удобнее, то почему нет. Но зачем вменять такой подход в обязаловку-то? Язык не налагает на него таких ограничений. Вот в чём вся штука.

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

Си не в чем не ограничен. Потому как практически все ЯП написаны на сях. Си сделали для замены ассемблеру, так как постоянно меняющаяся архитектура процессоров (добавляют регистры, виртуализацию, защищенный режим) не позволяет всегда держать в голове всю структуру железа на которое пишут программы. В итоге чтобы програмер был програмером, а не эбеддером и придумали си. Тоесть оптимизированный(память, такты) хеловорд на сях выглядет на любой платформе одинаково, а на асме практически везде разный. Дочерние ЯП заделали чтобы решать узконаправленные задачи (так проще кадры готовить, например web програмера найти проще чем C), а на питоне проще скрипты писать, но например если в задаче потребуется обработать прерывания питон со всем зоопарком сольется, а си останется. Еще раз почему нужен веб на си - решить задачу эффективно (память, такты), не тянуть зависимости (чужой неоптимизированный, дырявый, в костылях, код который судя по поедаемым ресурсам майнит в перерывах), да и просто сделать код красивым.

casusnur
() автор топика
Ответ на: Нет. от Moisha_Liberman

attribute ((__pure__)), то это будет поводом для оптимизатора посмотреть её внимательнее

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

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

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

оптимизированный(память, такты)

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

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

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

Ты, вот лично ты, видел этот веб на си? Это примитивные cgi скрипты как максимум, и выглядят они как непойми что.

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

Я лично его писал!

И это не только CGI, но и fast-CGI и вебсокеты! Все работает. Удобно и шустро. Ну и чем это не «веб на С»?

Если что, nginx тоже на С написан — вот тебе еще один пример «веба на С»!!!

А ты сиди со своим пхытоном. Мастурбируй.

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

Ну скажи честно - в какие мега-человеко-годы ты оценишь написание пусть даже значимого, а не всего, существующего веба на «CGI на C»? Самому не смешно?

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

Десятка человеколет достаточно, чтобы написать кучу годных фрейморков для всех этих CMS и прочего.

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

Ну и классические CGI у меня есть, понятное дело.

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

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

Си не в чем не ограничен.

Си - нет, человеки - да.

Потому как практически все ЯП написаны на сях.

Ложь, пи...жь и провокация. С++ - зависит от компилятора. Но даже GCC - уже на С++. Java - писана на С++ и самой себе. Go - на Go Rust - на Rust

И что же остается ? Скриптота - питон, ПХП, яваскрипт :)

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

Еще раз, никому, кроме упоротых сишников не нужен веб на си. И подтверждение этому ПХП. то как он появился и распространился в вебе.

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

Десятка человеколет достаточно, чтобы написать кучу годных фрейморков для всех этих CMS и прочего.

И потом нынешние пыхеры с питонерами и гошниками смогут на этих фреймворках лабать «тонны говен веба»?

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

Лично мне это не нужно... всякую ненужную херь типа фконтактига или форумов я писать не собираюсь.

Ну т.е. ты признаёшь, что без пыха и питона вебу кирдык - ты же всё не потянешь...

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

И сишники уже написали эти самые пыхи, питоны и голанги - и самим же результат и не нравится…

Два чая этому анонимусу !

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

И сишники уже написали эти самые пыхи, питоны и голанги - и самим же результат и не нравится…

Скорее наоборот. бекендеры написали кое как себе инструмент, вот он кое как и работает

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

а где передовые наработки из лагеря сишников? Или они так бояться конкуренции, что «ни в жисть» не поделятся со смердами? ))

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

а где передовые наработки из лагеря сишников? Или они так бояться конкуренции, что «ни в жисть» не поделятся со смердами? ))

Так либы и это есть наработки. берешь libcurl например и теперь си может curl

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

Ну т.е. ты признаёшь, что без пыха и питона вебу кирдык - ты же всё не потянешь...

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

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

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

Так либы и это есть наработки. берешь libcurl например и теперь си может curl

Не годится: нужен инструмент, которым пыхер/жабоскриптер сможет с привычной скоростью ваять сайты. Иначе все вопли сишников «ниачём», а си в вебе ещё меньше, чем онтопика на десктопах...

yyk ★★★★★
()

Посмотри исходники curl.
Если писал на С много будет понятно.

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

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

Свято место пусто не бывает. Бизнесу (читай - бабкодателям) нужно много сайтов и быстро. Сишники не справляются. Но почему-то воют «Мир не справедлив!» Хэх, удивили...

Поэтому как пыхо-пхытоны не крути, конфетка из говна не выйдет!

Но как ни крути, доступной альтернативы нет. Чтобы работало уже вчера, а не через 5 лет. И за миску риса в шалаше, а не за майбах внутри Бульварного кольца.

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

нужен инструмент, которым пыхер/жабоскриптер сможет с привычной скоростью ваять сайты

А ты не думал, что не инструмент нужен, а заполнение серым веществом черепных коробок вебописателей?

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

Он - не идиот. Поэтому если будет что-то «вебное» писать, естественно напишет это на С.

А идиот напишет на пыхпыхе.

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

Всегда забавляло то как выбор примитивнейшего из доступных ЯП приводит юношей к мании величия :D

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

А ты не думал, что не инструмент нужен, а заполнение серым веществом черепных коробок вебописателей?

«В голос!..» Такой большой, а в сказки веришь... НИКОГДА не будет на этой чахлой планете СТОЛЬКО людей с заполненными серым веществом черепушками, чтобы при нынешних технологиях удовлетворить спрос на сайтописательство... Или спрос сократится (явно не завтра), или сишники придумают достойные инструменты. Даже не знаю, что более вероятно... )))))

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

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

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

Поэтому если будет что-то «вебное» писать, естественно напишет это на С.

Попытается. Но не факт, что напишет. И даже если напишет, то не факт, что вовремя, не падающее и не говно.

А идиот напишет на пыхпыхе.

Да, а вот идиот на пыхпыхе напишет.

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

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

но «стопудово» не на си...

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

Код будет таким, каким ты его напишешь. От выбора ЯП это вообще никак не зависит.

Но: если ЯП простой, то ошибок в нем будет меньше, нежели в каком-нибудь брейнфаке!!!

Поэтому лучше всего писать на ассемблере. Но, к сожалению, очень уж писанины много. Поэтому чОткие пацанчики выбирают С ☺

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

Ну вы бы историей вопроса поинтересовались бы. Hack сделали уже после того, как Facebook стал мегасайтом всея Интернета. И далеко не сразу PHP-код на Hack перевели. А в HHVM только совсем недавно от поддержки PHP отказались.

ВКонтакт до сих пор на PHP, со своими заморочками по его разгону.

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

Поэтому чОткие пацанчики выбирают С

Мне всегда казалось, что весь мир на С хотят переписать те, кому на что-то более интересное мозга не хватает, но на PHP/Python писать не позволяют комплексы.

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

Поэтому чОткие пацанчики выбирают С ☺

Лучше бы «чОткие пацанчики» перестали дрочивыбирать и явили бы миру наикрутейший веб, да так, чтоб потом устали от бабок отбиваться... )

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

А что, есть что-то интересней С?

Например?

Неужто цепепе?

Нет, я согласен: иногда С++ очень даже нужен. Но у него крайне узкая ниша: гуевые приложения и то, что хорошо ложится в парадигму ООПщины. Больше ни для чего его не применить.

А на С пишется абсолютно все: от микроконтроллеров до мейнфреймов!

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

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

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

«Наикрутейший веб» не нужен.

Самый идеальный веб - это статика. Вся эта новомодная цсс/жабоскриптина — такое хипстерство...

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

А на С пишется абсолютно все: от микроконтроллеров до мейнфреймов!

Бла-бла-бла!... Где веб на си?

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

«Наикрутейший веб» не нужен.

Не нужны долбо@бы, не могущие удовлетворить спрос, объявляя его ненужным.

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