Здравствуйте, BulatZiganshin, Вы писали:
G>>Ну во время появления ada (1993 год) вполне могло и зависеть.
BZ>1979
1974 — Инициатива МО США. Формирование требований.
1975 — Начало разработки.
1977 — Предложение о создании нового языка.
1983 — Ada становится стандартом ANSI/MIL-STD-1815A-1983
Здравствуйте, BulatZiganshin, Вы писали:
BZ>т.е. на писюки стали ставить макос вместо винды? :)
Именно, стали продавать писюки с макос. Называются imac и ibook :) Их доля хотя сравнительно невелика, но постоянно растет. Маки стали продавать в обычных компьютерных магазинах типа Кея в Питере, раньше такого не было.
Здравствуйте, COFF, Вы писали:
COF>Codebase — это конечно да. Но 10 лет — это достаточный срок, чтобы переписать весь существующий codebase
какие 10 лет? 10 лет назад была тормозная зачаточная ява без IDE. реально лет 5 назад стало очевидно, что java/c# выгодны в разработке. вот и поищи программы, которые были начаты в последние 5 лет
всякие трейдинг системы — ява/с# обычно. сейчас какой-то проект ibm-sun началмся, связанный с облачными вычислениями — там тоже ява.
Здравствуйте, COFF, Вы писали:
COF>Именно, стали продавать писюки с макос. Называются imac и ibook Их доля хотя сравнительно невелика, но постоянно растет. Маки стали продавать в обычных компьютерных магазинах типа Кея в Питере, раньше такого не было.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>наукоёмкие вещи — скорее и наукоёмкие языки понадобятся :) коробки — напополам, новые продукты лучше делать на C#. в играх порядка половины кода не требует супер-быстродействия, так что опять же все шансы у более современных языков
Я смогу назвать язык более современным чем C++ только если этот язык будет позволять сделать все то же самое что и C++ (в том числе и в плане эффективности), будет позволять сделать что-то, что C++ не позволяет, возможно избавится от косяков C++. Вот это и будет более современный язык. А назвать язык более современным только потому, что там есть сборка мусора я не могу. Это просто другой язык.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>какие 10 лет? 10 лет назад была тормозная зачаточная ява без IDE. реально лет 5 назад стало очевидно, что java/c# выгодны в разработке. вот и поищи программы, которые были начаты в последние 5 лет
Я где-то в 94 году видел в книге по C++ главу — что такое ява и как скоро она заменит C++ :)
Здравствуйте, COFF, Вы писали:
BZ>>наукоёмкие вещи — скорее и наукоёмкие языки понадобятся коробки — напополам, новые продукты лучше делать на C#. в играх порядка половины кода не требует супер-быстродействия, так что опять же все шансы у более современных языков
COF>Я смогу назвать язык более современным чем C++ только если этот язык будет позволять сделать все то же самое что и C++ (в том числе и в плане эффективности),
в таком случае языка современней машинных кодов, в твоём понимании так и не появилось. но почему-то люди, включая тебя пишут на языках постарее — асме, c++ том же
COF>будет позволять сделать что-то, что C++ не позволяет, возможно избавится от косяков C++. Вот это и будет более современный язык. А назвать язык более современным только потому, что там есть сборка мусора я не могу. Это просто другой язык.
я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва"
Здравствуйте, BulatZiganshin, Вы писали:
BZ>в таком случае языка современней машинных кодов, в твоём понимании так и не появилось. но почему-то люди, включая тебя пишут на языках постарее — асме, c++ том же :))
Хорошие компиляторы генерируют достаточно неплохой код и то иногда приходится на ассемблере модули использовать
BZ>я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва" :)))
Аналогия вещь хорошая, но обоюдоострая. Представь, что все начнут мусор не в урны кидать, а на землю — все равно дворник потом подберет :) Наверное, это будет не очень хорошо. Продуманная стратегия управления ресурсами в C++ позволяет не заботиться о памяти точно в такой же высокоуровневой манере.
Здравствуйте, COFF, Вы писали:
COF>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>в таком случае языка современней машинных кодов, в твоём понимании так и не появилось. но почему-то люди, включая тебя пишут на языках постарее — асме, c++ том же
COF>Хорошие компиляторы генерируют достаточно неплохой код и то иногда приходится на ассемблере модули использовать
BZ>>я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва"
COF>Аналогия вещь хорошая, но обоюдоострая. Представь, что все начнут мусор не в урны кидать, а на землю — все равно дворник потом подберет Наверное, это будет не очень хорошо. Продуманная стратегия управления ресурсами в C++ позволяет не заботиться о памяти точно в такой же высокоуровневой манере.
В такой аналогии нужно больше деталей.
GC не собирает память пока это никому не мешает, как только заполнится первое поколение — сразу же уберет, а то что не успел удбрать — сложит в другое полколение.
Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.
Здравствуйте, Unhandled_Exception, Вы писали:
U_E>Здравствуйте, MxKazan, Вы писали:
MK>> Хотя по правде, WPF уже не надстройка над WinAPI.
U_E>компоненты WPF не используют WinAPI?...
Не-а, рни с помощью directx рисуются
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, COFF, Вы писали:
COF>>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>>в таком случае языка современней машинных кодов, в твоём понимании так и не появилось. но почему-то люди, включая тебя пишут на языках постарее — асме, c++ том же
COF>>Хорошие компиляторы генерируют достаточно неплохой код и то иногда приходится на ассемблере модули использовать
BZ>>>я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва"
COF>>Аналогия вещь хорошая, но обоюдоострая. Представь, что все начнут мусор не в урны кидать, а на землю — все равно дворник потом подберет Наверное, это будет не очень хорошо. Продуманная стратегия управления ресурсами в C++ позволяет не заботиться о памяти точно в такой же высокоуровневой манере.
G>В такой аналогии нужно больше деталей. G>GC не собирает память пока это никому не мешает, как только заполнится первое поколение — сразу же уберет, а то что не успел удбрать — сложит в другое полколение. G>Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.
Не закончил мысль.
"Продуманная стратегия управления ресурсами в C++" — в аналогии с дворником означает заставлять каждого человека выкидывать мусор в строго определенном месте, независимо от того насколько это удобно. При этом каждый должен потратить время чтобы выкинуть мусор. В случае с супер-дворником, только один он будет трутить время на выкидывание мусора, причем он суммарно затратит гораздо меньше, чем все люди вместе.
Такая ситуация существует и на практике. Множественные операции выделения-освобождения памяти происходят гораздо бытсрее в коде на .NET, чем в коде на C++.
Здравствуйте, COFF, Вы писали:
COF>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>в таком случае языка современней машинных кодов, в твоём понимании так и не появилось. но почему-то люди, включая тебя пишут на языках постарее — асме, c++ том же
COF>Хорошие компиляторы генерируют достаточно неплохой код и то иногда приходится на ассемблере модули использовать
я говорил не об асме, а машинном коде. ты ведь понимаешь, что асм не всегда генерит тот код, который нужен?
BZ>>я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва"
COF>Аналогия вещь хорошая, но обоюдоострая. Представь, что все начнут мусор не в урны кидать, а на землю — все равно дворник потом подберет Наверное, это будет не очень хорошо. Продуманная стратегия управления ресурсами в C++ позволяет не заботиться о памяти точно в такой же высокоуровневой манере.
точно. а продуманная структура управления регистрами и явное использование адресов памяти в программе ещё круче, вот только несколько дороговато в разработке. язык — это средство описания алгоритма, а не детального расписывания того, что должен процессор делать каждый из 3 миллиардов циклов в секунду если ты так нацелен контролировать свой процессор, то тебе нужны машкоды и что-нибудь неспекулятивное
Здравствуйте, hattab, Вы писали:
H>Здравствуйте, BulatZiganshin, Вы писали:
G>>>Ну во время появления ada (1993 год) вполне могло и зависеть.
BZ>>1979
H>1974 — Инициатива МО США. Формирование требований. H>1975 — Начало разработки. H>1977 — Предложение о создании нового языка. H>1983 — Ada становится стандартом ANSI/MIL-STD-1815A-1983
H>Как по мне, так 1983.
Ага, это я опечатался.
Здравствуйте, gandjustas, Вы писали:
G>В такой аналогии нужно больше деталей. G>GC не собирает память пока это никому не мешает, как только заполнится первое поколение — сразу же уберет, а то что не успел удбрать — сложит в другое полколение. G>Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.
Так вот дворник сидит и смотрит — вроде пока мусор никому не мешает ходить, можно еще покурить или даже поспать :) А то что людям может быть неприятно, когда мусор на улице валяется так это не дворника дело. С GC ситуация та же — в рамках процесса он может и понимает что мусор может кому-то помешать, а если таких процессов в системе пара десятков?
Здравствуйте, COFF, Вы писали:
COF>Так вот дворник сидит и смотрит — вроде пока мусор никому не мешает ходить, можно еще покурить или даже поспать А то что людям может быть неприятно, когда мусор на улице валяется так это не дворника дело. С GC ситуация та же — в рамках процесса он может и понимает что мусор может кому-то помешать, а если таких процессов в системе пара десятков?
а ты следишь за всеми процесами в системе и напрягаешься от мусора в памяти?
в языках без gc расход памяти меньше в краткосрочном плане. а вот когда память выделяется, возвращается, снова выделяется — ты получаешь фрагментированную память и ничего с ней не поделаешь. поэтому для таких программ GC выгодней — есть хоть гарантии что расход памяти будет не более чем в три раза выше, нежели реальное использование. в c++ гарантий никаких
Здравствуйте, BulatZiganshin, Вы писали:
BZ>я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва"
Я когда пишу на С++ — просто выделяю память, и не занимаюсь её освобожденим — пока в этом нет необходимости.
Мемориликов в годовалом проекте нет, хотя в ходе разработки тестирования на лики не производилось.
Здравствуйте, COFF, Вы писали:
BZ>>какие 10 лет? 10 лет назад была тормозная зачаточная ява без IDE. реально лет 5 назад стало очевидно, что java/c# выгодны в разработке. вот и поищи программы, которые были начаты в последние 5 лет
COF>Я где-то в 94 году видел в книге по C++ главу — что такое ява и как скоро она заменит C++
конечно, в книгах по c++ о яве стали писать лет за 10 до её появления почитай книги о яве — наверняка там уже пищут о том, что её заменит лет через 20
Здравствуйте, gandjustas, Вы писали:
G>В такой аналогии нужно больше деталей. G>GC не собирает память пока это никому не мешает, как только заполнится первое поколение — сразу же уберет, а то что не успел удбрать — сложит в другое полколение.
И тут вжииик, и оказывается что у меня на компе мало памяти... Всего гиг. Пока не поставил серьёзное ява приложение не догадывался, что у меня мало памяти.
G>Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.
Ага, особенно это интересно на телефоне, где тебе приходится заниматься колдовством, вместо нормального распределения ограниченного ресурса
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, COFF, Вы писали:
COF>>Так вот дворник сидит и смотрит — вроде пока мусор никому не мешает ходить, можно еще покурить или даже поспать А то что людям может быть неприятно, когда мусор на улице валяется так это не дворника дело. С GC ситуация та же — в рамках процесса он может и понимает что мусор может кому-то помешать, а если таких процессов в системе пара десятков?
BZ>а ты следишь за всеми процесами в системе и напрягаешься от мусора в памяти?
BZ>в языках без gc расход памяти меньше в краткосрочном плане. а вот когда память выделяется, возвращается, снова выделяется — ты получаешь фрагментированную память и ничего с ней не поделаешь. поэтому для таких программ GC выгодней — есть хоть гарантии что расход памяти будет не более чем в три раза выше, нежели реальное использование. в c++ гарантий никаких
Обычно, для однотипных данных, которых много, выделяют тем или иным способ свой уже фрагментированный пул. Это позволяет 1) контролировать тех, кто не отдал память вовремя 2) работать быстро и со строго ограниченным сверху размером выделенной памяти.
Кто сказал, что GC ГАРАНТИРУЕТ выделение памяти не более чем три раза больше чем в данный момент используется системой?