Войти
ПрограммированиеФорумОбщее

Что разработчик должен знать в С++? (8 стр)

Страницы: 17 8 9 10 11 Следующая »
#105
21:47, 15 сен. 2020

rcsim
> Ну в общем да, на С++ нельзя написать браузерный скрипт.
Можно. Только его придется скомпилировать предварительно в какой-нибудь asm.js и совсем без JS обертки обойтись не выйдет. Собственно, сейчас у кучи 3D движков уже есть вебморда.

> И так же на плюсах нельзя написать например шелл-скрипт для bash/cmd.exe.
Под bash можно.


#106
23:50, 15 сен. 2020

}:+()___ [Smile]
> Можно. Только его придется скомпилировать предварительно в какой-нибудь asm.js
emscripten и asm.js это не то-же, что бинарник от С++, это скорее типа виртуалки.
А веб-приложения - это всё таки обычно работа с DOM вебстраницы.

}:+()___ [Smile]
> Под bash можно.
Ну а это и под паскаль давно есть - instantfpc. Да под что угодно, через нужный шебанг.
По сути - запускалка компилирования и выполнения обычного бинарника. И уж никак это не приложение "под баш".


Настоящие нативные приложения "под браузер" были только в ActiveX.

#107
0:03, 16 сен. 2020

rcsim
> А веб-приложения - это всё таки обычно работа с DOM вебстраницы.
Из-под emscripten можно вызвать любой JS-код, при желании можно написать обертку для работы с DOM.

> И уж никак это не приложение "под баш".
Так исходная цель была писать shell-скрипты на C++.
Насколько они там нативные и через какие виртуальные машины исполняются — дело десятое.

В общем, при желании, на C++ можно писать почти везде, правда не всегда это имеет смысл.

#108
0:08, 16 сен. 2020

rcsim
> это скорее типа виртуалки.
а ты как хотел? Безопасность кто будет обеспечивать в противном случае? И это не проблема языка, а проблема конкретных OS в которых нет гибкой настройки безопасности для нативных приложений.

#109
6:31, 17 сен. 2020

}:+()___ [Smile]
> Так исходная цель была писать shell-скрипты на C++.
Можно поставить исходную цель научиться снимать штаны через голову. И даже преуспеть в этом. Но вряд ли у вас будет много последователей.

#110
7:38, 17 сен. 2020

}:+()___ [Smile]
> Так исходная цель была писать shell-скрипты на C++
Если перечитаешь начало темы, цель была совсем другая.

А шел-скрипты на Си писали и пишут, кому так удобнее. Когда одного из таких писателей процесс задолбал, он придумал перл на замену, но других не задолбал и они продолжают писать на Си/С++.

#111
6:53, 22 сен. 2020

rcsim
> Это вопрос, и т.к. я не надеюсь узнать, что такое "текстово интегрирован в ОС",
> то скорее всего риторический.

}:+()___ [Smile]
> Под bash можно.

Zab
> А шел-скрипты на Си писали и пишут, кому так удобнее.

М-да...

#112
(Правка: 23:11) 18:40, 22 сен. 2020

dimaSlon
Крестопроблемы и способы их обхода
На эту тему написанны целые талмуды

> подражания
Что?

Начни с Керниган и Ритчи. Программирование на C

Параллельно читать алгоритмы и структуры данных

#113
(Правка: 23:59) 23:33, 22 сен. 2020

nonamezerox
В том примере дело не в UB, а в разном кол-ве параметров, удивляюсь, как (если) заработало

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

#114
8:32, 23 сен. 2020

Aslan
> а в разном кол-ве параметров, удивляюсь, как (если) заработало
Про printf слышали?
Это коронная фишка Си - стек параметров чистит не функция (как в Паскаль или предложенных в i86 командах ENTER-LEAVE), а вызывающее выражение. А уж оно-то точно знает, что передавало.

#115
12:23, 23 сен. 2020

gudleifr
У тя ф-ция с 4 параметрами, вызываешь через указатель с двумя, еще два должна взять с вершины стэка, в лучшем случае мусор в параметрах, но и порча памяти не исключена

> стек параметров чистит не функция... а вызывающее выражение
Эээ, пролог, эпилог для чего?

#116
13:36, 23 сен. 2020

Aslan
> У тя ф-ция с 4 параметрами, вызываешь через указатель с двумя
Сколько поручений за раз может запомнить Ваша секретарша? А сколько Вы ей даете за раз?
Сколько ведер картошки влезает в Ваш багажник? А сколько кладете обычно?
Проблема перегрузки/недогрузки исполнителя - это в C проблема использования. (В FORTH, например, еще "страшнее" - каждый берет и кладет на стек ровно столько, сколько ему надо). Просто это такой язык, в отличие от C++.

Aslan
> в лучшем случае мусор в параметрах, но и порча памяти не исключена
Какой мусор? Два положили - два сняли.
Порча не исключена? В языках с отрытой программисту адресной арифметикой? Странно, да?

Aslan
> Эээ, пролог, эпилог для чего?
Для сноса оптимизатором.

#117
14:17, 23 сен. 2020

gudleifr
Нет, в стэке 2 параметра, а ф-ция берет 4, вот тут-то и засада, хорошо если не пишет в них. При вызове ф-ции надо отмотать стэк вперед на размер параметров, при возврате - вернуть назад (или взять из стэка). Еще возвращаемое значение в стэке перед параметрами, как-то так, я не особо лазил в asm
В C, кстати, переменное число параметров редко используют, кроме printf, scanf, ибо опасно, в C++ вообще сделали замену на cin, cout

#118
14:32, 23 сен. 2020

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

Aslan
> Еще возвращаемое значение в стэке перед параметрами
Нет, в Си возвращаемое значение - в аккумуляторе.

Aslan
> ибо опасно, в C++ вообще
Слово "опасно" в Си не было - это был язык системного программирования. Этот термин ввели только для крестопроблемцев.

#119
(Правка: 14:46) 14:43, 23 сен. 2020

gudleifr
va_arg(), va_copy(), va_end(), va_start() - никогда не слышал? Работают и в Си и в C++.
Вообще иногда полезно заглянуть "за кулисы" - посмотри исходный код функции printf(), он не секретный.

Страницы: 17 8 9 10 11 Следующая »
ПрограммированиеФорумОбщее