В России сейчас в принципе мало ресурсов крутится в компаниях, занимающихся любой инновационной деятельностью. Разумеется, в сравнении с другими игроками общемирового рынка разработчиков.
Будут деньги, будет осознанная на всех уровнях необходимость — и людей начнут переманивать.
Ждём когда можно будет вбивать программы на С++, Ява, Си Шарп и D. Соответственно с выпадающим на страничке визуальным дебаггером и пошаговым исполнением программы на сервере.
Это отдельная студия, которую основал Дима Демьяновский вместе с Анри.
С обоими людьми знаком и работал лично (под началом Дмитрия), и могу сказать что они настоящие профессионалы.
Зная их, могу предположить что проблемы со стабильностью игры вызваны, вероятнее всего, дёрганием со стороны издателя — точно также как это было во времена Корсаров-2, которых пришлось срочно «превращать» в «Пиратов карибского моря», что привело к повальной перекройке сюжета, в результате которого вышла симпатичная, но откровенно неинтересная игра не тему диснеевского фильма.
Впрочем, нужно знать кухню данного конкретного проекта, чтобы сказать точно. Очень хочу думать что это косяк именно издательский, а не разрабов. От себя желаю.дат исправить все баги в Дисайплс 3, а также процветания. Можете теперь минусовать )
А на что изобретатель и его семья будет жить, пока полтора-два года реализовать своё изобретение? Инвестиции не на пустом месте придуманы. Без них, заработать на своё дело, если вообще удастся, можно не раньше чем через год/два/три — особенно если речь идёт не об интернет-стартапах, а о технологиях в промышленности.
Главная цель инвестирования с глобальной точки зрения — УСКОРИТЬ технологический прогресс. Потому что идёт гонка между государствами, и выигрывают те из них, кто наиболее быстрыми темпами движет свою экономику, а значит и промышленность (плюс всё остальное). Потому что такие государства перераспределяют в свою экономику (людям) больше денег, чем другие, за счёт них же.
Правильно настроенная система инвестирования = быстрое, скачкообразное движение экономики = резкое повышение благосостояния граждан. Причём не единиц, обслуживающих нефтеперегонную трубу, а именно граждан страны.
Если свет направлен так как показано на фото, т.е. сверху вниз, то руки будут его закрывать, и будет всё равно не видно. Постоянно тянешься убрать руки, чтобы взглянуть на клавиатуру прежде чем начать печатать. Чтобы было удобнее, можно подсвечивать слева и справа + чуть сверху от клавиатуры. Тогда ладони и пальцы почти не будут тенью загораживать подсветку кнопок.
Интересно, участвовал ли Гугл в спонсировании фирмы Каноникал? Пусть даже и негласно.
В этом свете флагман Убунту уже давно задумывался Гуглом как предтеча новой, своей ОС.
Вот что интересно. Введение национальных символов в URL делит сам интернет на национальные сегменты. Фактически, я теперь не смогу попасть ни на один национальный (исключая американские и английские) сайт, не имеющий «экспортного» URL, потому что просто не смогу набрать его адрес в адресной строке.
Для Интернета в целом это может иметь далеко идущие последствия.
Скажем так. Фреймворк вырабатывает определённый рефлекс пользования своими типами и контейнерами. Вероятность утечек памяти при этом на порядке ниже чем в классическом С++ через STL.
Что касается сложности: действительно, U++ агрессивно использует некоторые подвинутые вещи в С++ и требует достаточно высокой квалификации программиста. Т.е. фреймворк обладает выоским цензом на вхождение и достаточно крутой кривой обучения. Но взамен же вы получаете возможность писать крайне эффективные кросс-платформенные приложения без утечек памяти и некоторых прочих недостатков.
В том фреймворке, что я использую, от смарт поинтеров ушли на самом раннем этапе развития. Оказывается, можно делать проще и эффективнее.
Дело в том, что фреймворк использует свои контейнеры, которые позволяют очень быстро и эффективно работать с объектами. Если не вдаваться в подробности, в коде почти полностью отсутствуют new и полностью — delete. Делается это за счёт «стекового» объявления членов. При этом сами контейнеры уничтожают объекты в своём деструкторе.
Я позволю себе процитировать часть описания, в котором кратко описана идеология тех вещей, о которых я говорил выше:
"Everything belongs somewhere
In Ultimate++, most objects are bound to some logical scope. As a result, you will not see many new operators in code using Ultimate++ and almost no delete operators outside the implementation of containers.
That of course does not mean you are not allowed to use pointers, but it is good practice to use pointers just to point to things, never to manage heap resources. This also avoids all confusion regarding ownership of the underlying object, time of its deletion etc. If you need to manage data sets of variable size or polymorphic type, you should prefer using one of Ultimate++ containers.
Speaking about it, there are no shared smart pointers (like boost::shared_ptr) in Ultimate++ used to manage heap resources at interface level. They are not needed and considered bad practice.
In C++, this approach proves to be equally good or better than garbage collected languages like Java or C#. While those languages are able to provide automatic management of heap resources, U++ approach provides very deterministic automatic management of all resources.
Ultimate++ containers
One aspect of Ultimate++ is bringing a lot of criticism: Ultimate++ is not using much of standard C++ library. There are, however, serious reasons for this. STL, with its devastating requirement that each element stored in container has to have copy-constructor, makes standard containers somewhat hard to use in GUI development.
There is no such general requirement for Ultimate++ containers. Instead, Ultimate++ containers come in two flavors.
Vector flavor has Moveable requirement that allows very fast implementation for certain types (e.g., element insertion at arbitrary position of Ultimate++ Vector is more than 10 times faster than the same operation with typical implementation of std::vector<std::string>).
Array flavor has no requirements for element types at all, at the price of somewhat lower performance.
As a result, in Ultimate++ you are for example allowed to create container of .GUI widgets that edits integer numbers ( Array integer_editors) and even sort it using standard Ultimate++ Sort algorithm. Doing something like this would require using pointers as elements in STL (std::vector<EditInt *>) or alternatively some sort of smart pointers (soon to be std:: boost::shared_ptr), but both increase code complexity and break the Ultimate++ rule according to which everything belongs somewhere."
Боюсь что ответ на этот комментарий вызовет наброс на вентилятор.
Мне лично мусоросборщик не нужен. В С++ у меня нет проблем с потерянными new/delete. Особенности используемого фреймворка. Поэтому ещё один поток для сборки мусора — лишняя сущность, особенно в силу особенностей задач (промышленная автоматика) заведомо неизвестным образом увеличивающая время реакции системы.
Будут деньги, будет осознанная на всех уровнях необходимость — и людей начнут переманивать.
:)
Это отдельная студия, которую основал Дима Демьяновский вместе с Анри.
С обоими людьми знаком и работал лично (под началом Дмитрия), и могу сказать что они настоящие профессионалы.
Зная их, могу предположить что проблемы со стабильностью игры вызваны, вероятнее всего, дёрганием со стороны издателя — точно также как это было во времена Корсаров-2, которых пришлось срочно «превращать» в «Пиратов карибского моря», что привело к повальной перекройке сюжета, в результате которого вышла симпатичная, но откровенно неинтересная игра не тему диснеевского фильма.
Впрочем, нужно знать кухню данного конкретного проекта, чтобы сказать точно. Очень хочу думать что это косяк именно издательский, а не разрабов. От себя желаю.дат исправить все баги в Дисайплс 3, а также процветания. Можете теперь минусовать )
Главная цель инвестирования с глобальной точки зрения — УСКОРИТЬ технологический прогресс. Потому что идёт гонка между государствами, и выигрывают те из них, кто наиболее быстрыми темпами движет свою экономику, а значит и промышленность (плюс всё остальное). Потому что такие государства перераспределяют в свою экономику (людям) больше денег, чем другие, за счёт них же.
Правильно настроенная система инвестирования = быстрое, скачкообразное движение экономики = резкое повышение благосостояния граждан. Причём не единиц, обслуживающих нефтеперегонную трубу, а именно граждан страны.
В этом свете флагман Убунту уже давно задумывался Гуглом как предтеча новой, своей ОС.
Для Интернета в целом это может иметь далеко идущие последствия.
Так задумано? )
Что касается сложности: действительно, U++ агрессивно использует некоторые подвинутые вещи в С++ и требует достаточно высокой квалификации программиста. Т.е. фреймворк обладает выоским цензом на вхождение и достаточно крутой кривой обучения. Но взамен же вы получаете возможность писать крайне эффективные кросс-платформенные приложения без утечек памяти и некоторых прочих недостатков.
www.ultimatepp.org/srcdoc$Core$Moveable$en-us.html
www.ultimatepp.org/srcdoc$Core$PickTypes$en-us.html
www.ultimatepp.org/srcdoc$Core$pick_$en-us.html
(ссылки придётся открывать вручную, они неверно парсятся)
habrahabr.ru/blogs/programming/74913/#comment_2168911
если интересно.
Если интересно, знакомство можно начать вот с этой ссылки:
ultimatepp.org/www$uppweb$overview$en-us.html
Дело в том, что фреймворк использует свои контейнеры, которые позволяют очень быстро и эффективно работать с объектами. Если не вдаваться в подробности, в коде почти полностью отсутствуют new и полностью — delete. Делается это за счёт «стекового» объявления членов. При этом сами контейнеры уничтожают объекты в своём деструкторе.
Я позволю себе процитировать часть описания, в котором кратко описана идеология тех вещей, о которых я говорил выше:
"Everything belongs somewhere
In Ultimate++, most objects are bound to some logical scope. As a result, you will not see many new operators in code using Ultimate++ and almost no delete operators outside the implementation of containers.
That of course does not mean you are not allowed to use pointers, but it is good practice to use pointers just to point to things, never to manage heap resources. This also avoids all confusion regarding ownership of the underlying object, time of its deletion etc. If you need to manage data sets of variable size or polymorphic type, you should prefer using one of Ultimate++ containers.
Speaking about it, there are no shared smart pointers (like boost::shared_ptr) in Ultimate++ used to manage heap resources at interface level. They are not needed and considered bad practice.
In C++, this approach proves to be equally good or better than garbage collected languages like Java or C#. While those languages are able to provide automatic management of heap resources, U++ approach provides very deterministic automatic management of all resources.
Ultimate++ containers
One aspect of Ultimate++ is bringing a lot of criticism: Ultimate++ is not using much of standard C++ library. There are, however, serious reasons for this. STL, with its devastating requirement that each element stored in container has to have copy-constructor, makes standard containers somewhat hard to use in GUI development.
There is no such general requirement for Ultimate++ containers. Instead, Ultimate++ containers come in two flavors.
Vector flavor has Moveable requirement that allows very fast implementation for certain types (e.g., element insertion at arbitrary position of Ultimate++ Vector is more than 10 times faster than the same operation with typical implementation of std::vector<std::string>).
Array flavor has no requirements for element types at all, at the price of somewhat lower performance.
As a result, in Ultimate++ you are for example allowed to create container of .GUI widgets that edits integer numbers ( Array integer_editors) and even sort it using standard Ultimate++ Sort algorithm. Doing something like this would require using pointers as elements in STL (std::vector<EditInt *>) or alternatively some sort of smart pointers (soon to be std:: boost::shared_ptr), but both increase code complexity and break the Ultimate++ rule according to which everything belongs somewhere."
Мне лично мусоросборщик не нужен. В С++ у меня нет проблем с потерянными new/delete. Особенности используемого фреймворка. Поэтому ещё один поток для сборки мусора — лишняя сущность, особенно в силу особенностей задач (промышленная автоматика) заведомо неизвестным образом увеличивающая время реакции системы.