Форум сайта python.su
py.user.nextЯ знаю что
Это такая загадка для doza_and.
int f() { return 1; } int main() { f(2); return 0; }
Отредактировано doza_and (Сен. 6, 2015 11:10:28)
Офлайн
FishHookКод, не код - один хрен. Код там точно такой же неэкономный.
Ну не код же эти гигабайты занимает, в самом то деле.
FishHookТогда, как и сейчас, тоже были такие неэкономные, это свойственно для всех времён. Я помню игры на сотни мегабайт, которые были по функционалу не более, чем лайнс или тетрис. Известно, чем они закончили - о них даже никто не помнит, что они вообще были когда-то. А есть игры типа танчиков с восьмибитки, про которые до сих пор статьи появляются с восхищением как это всё засунули в 256 байт.
на этом сейчас никто не экономит, вот и гагабайты выходят
doza_andДа, и как же так получилось, что C - подмножество, но код не компилируется в C++?
Не кое чего нет, а более жесткие проверки типов.
doza_andНе, это стандарт, в любом компиляторе C он скомпилируется. Почему? Потому что в стандарте C разрешено присваивать void'овые указатели в обе стороны без всяких приведений.
Если вы возьмете другой компилятор С то тоже будут аналогичные выкрутасы и потребуется корректировать код.
doza_andЭто другой язык с другими правилами. Он один и тот же код компилирует в разные программы. Это как буква “с” в русском языке и буква “c” в английском языке, выглядят они идентично, а произносятся по-разному.
При этом вы можете использовать плюсовой компилятор, Я не знаю полезных свойств сишного компилятора которые отсутствуют в плюсовом компиляторе.
doza_andПонимаешь, там просто взяли и нивелировали то, что было в C, - лаконичность языковых конструкций. В C специально сделали фигурные скобки вместо паскалевских begin и end, чтобы кода было меньше. А Страуструп на это положил и снова стал вводить и лишние конструкции, и длинные конструкции, убирать ограничения, которые нужны. Почему Go (свежий язык) такой минималистичный? Да потому что это правильно.
может на ваш вкус ее перегнули в C++.
doza_andКлассы, шаблоны, пространства имён, снятые ограничения на длину имён - это всё, что надо в C. Ну, итераторы, может быть. Но никак не десяток умных и полуумных указателей, десяток разновидностей приведений типов, когда это вообще мало где нужно, новые ненужные ключевые слова, медленные потоки вывода.
На мой вкус в C++ принципиально наличие template которые позволяют снизить ограничения накладываемые типизацией.
#include <iostream>
using namespace std;
int main()
{
int n = 1;
if (int n = 2) cout << n << endl;
return 0;
}
doza_andЭто не из-за проверки типов, а из-за того, что раньше в C они вообще не проверялись у аргументов, поэтому для обратной совместимости со старым кодом в C ввели void. И это называется определением функции в старом стиле, тогда как в C++ никакого старого стиля нет.
Валидный сишный код и невалидный код для C++ (опять более жесткие проверки типов).
doza_andТут речь вообще про любые функции, что они могут быть записаны в коде вот так, но в разных компиляторах (для разных языков) будут восприняты по-разному. А main() - это распространённая ошибка цппшников, когда они код на C пишут. Подловил одну бабу на зарубежном форуме на этой теме ;) Она там выпендривалась, а я ей говорю “что ж у тебя, у такой умной, код на C неправильно записан?”, так и срубил ферзюшку.
Но для вызова с точки зрения ОС разницы помоему нет. В C++ логично было конечно генерировать ошибку при передаче аргументов программе которая декларируется как int main(void); Но увы, исторические корни ….
Офлайн
py.user.next
Я вот читаю твои ностальгические опусы и не понимаю выводов. Чего ты сказать то хочешь? Что игры плохие, потому что большие, а были бы маленькие были бы хорошие? Или если писать игрушки экономя каждый байт они становятся интереснее? Или надо делать игры с вырвиглазной графикой, 16-ю цветами и
восьмибитным звуком, тогда они приобретают нужную атмосферу и геймплей?
Офлайн
py.user.nextНовый виток спирали: сейчас GTA5 для PS3, к примеру, занимает 18ГБ на диске, но работает в 256Мб оперативки с очень приличной картинкой. C++. Кризисы - то же самое. Скажи ещё что это школьники сделали, как и UE, на котором вертится упомянутая Mass Effect. Mass Effect шикарна, она бесспорный шедевр геймдева, и её шедевральность связана с контентом и трудом художников-музыкантов-актёров-режиссёров в первую очередь, а мастерство создателей движка тут оказалось на вторых ролях.
Тогда, как и сейчас, тоже были такие неэкономные, это свойственно для всех времён. Я помню игры на сотни мегабайт, которые были по функционалу не более, чем лайнс или тетрис. Известно, чем они закончили - о них даже никто не помнит, что они вообще были когда-то. А есть игры типа танчиков с восьмибитки, про которые до сих пор статьи появляются с восхищением как это всё засунули в 256 байт.
py.user.nextСинтаксически - подмножество, а кроме синтаксиса есть ещё много умных вещей.
Да, и как же так получилось, что C - подмножество, но код не компилируется в C++?
py.user.nextКак ты их представляешь без классов? Некий синтаксический сахар вокруг указателей, который можно хоть сейчас соорудить для препроцессора?
Ну, итераторы, может быть.
Отредактировано Shaman (Сен. 6, 2015 19:53:04)
Офлайн
FishHookНет, если игры пишут на C++, то это ещё ни о чём не говорит, потому что пишут их кодеры. Идей - ноль, берут платформу, на неё что-то лепят, а потом продают. А качество - а всем по барабану на качество.
Чего ты сказать то хочешь? Что игры плохие, потому что большие, а были бы маленькие были бы хорошие?
ShamanА кто это сделал? Ты просто Warcraft вспомни, как это всё на дискетках таскали из офиса в офис, когда не было систем контроля версий, электронной почты и прочих вещей. Но получилась игра - классика стратегий. А сейчас вот так делают какой-то квейк два притопа три прихлопа и просто монетизируют через какой-то внутренний магазин, никаких других задач там не стоит.
Скажи ещё что это школьники сделали
ShamanТак они не делают движок, они его уже готовый берут. У них мозгов не хватит на движок.
а мастерство создателей движка тут оказалось на вторых ролях
ShamanИтератор без классов? Легко.
Как ты их представляешь без классов?
ShamanМожно, конечно, но не нужно. Препроцессор - для создания макросов. Нельзя на нём писать, он для этого не предназначен.
соорудить для препроцессора
Офлайн
py.user.nextПосмотрел бы я на игроделов ваяющих проект масштаба Skyrim или Mass Effect на чистом Си.
Нет, если игры пишут на C++, то это ещё ни о чём не говорит, потому что пишут их кодеры. Идей - ноль, берут платформу, на неё что-то лепят, а потом продают. А качество - а всем по барабану на качество.
Они на C++ пишут, потому что он быстрый, а быстрый он, потому что на C основан.
Он просто взял, к C добавил классы (поначалу он так и назывался), поснимал ограничения и выдал это за новый язык, а потом стал книжки писать (чтобы продавать их ).
Офлайн
FishHook
Посмотрел бы я на игроделов ваяющих проект масштаба Skyrim или Mass Effect на чистом Си.
Офлайн
Because люди деньги зарабатывают, а не херней страдают.
Офлайн
i.slepovНу да. И игровой скриптинг на вот этом вот.
Why not?
Отредактировано Shaman (Сен. 7, 2015 12:15:13)
Офлайн
FishHookТорвальдс (линукс, гит), Столлман (емакс)?
Because люди деньги зарабатывают
Отредактировано py.user.next (Сен. 7, 2015 12:41:31)
Офлайн