Re[19]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 16.03.09 16:20
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>точно. а продуманная структура управления регистрами и явное использование адресов памяти в программе ещё круче, вот только несколько дороговато в разработке. язык — это средство описания алгоритма, а не детального расписывания того, что должен процессор делать каждый из 3 миллиардов циклов в секунду :) если ты так нацелен контролировать свой процессор, то тебе нужны машкоды и что-нибудь неспекулятивное :)


Язык должен быть в состоянии и описать алгоритм на высоком уровне, и дать возможность распределить регистры если это нужно (а это иногда бывает нужно). Дать возможность использовать сборку мусора, где удобно, или отказаться от нее. Вот это идеал, с моей точки зрения. Сейчас C++ по сравнению с другими распространенными языками наиболее близко подходит к нему, поэтому и популярен. А когда говорят, что ручное распределение памяти вам не нужно, регистры вам не нужны, ваше дело высокоуровнево алгоритмы описывать, то сразу же возникает вопрос, а как тогда эти задачи решать и кто их будет решать? Инопланетяне? :)
Re[21]: Работа - с чего начать: С++ или С#?
От: NikeByNike Россия  
Дата: 16.03.09 16:20
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>в языках без gc расход памяти меньше в краткосрочном плане. а вот когда память выделяется, возвращается, снова выделяется — ты получаешь фрагментированную память и ничего с ней не поделаешь. поэтому для таких программ GC выгодней — есть хоть гарантии что расход памяти будет не более чем в три раза выше, нежели реальное использование. в c++ гарантий никаких


Ага, напоминает известное предложение ставить большие баки на речные суда и заполнять их водой. Типа если натыкаешься на мель — просто сливаешь воду и плывёшь себе дальше
Нужно разобрать угил.
Re[18]: Работа - с чего начать: С++ или С#?
От: BulatZiganshin  
Дата: 16.03.09 16:28
Оценка:
Здравствуйте, NikeByNike, Вы писали:

NBN>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>я в это не вкладываю какое-то идеологическое наполнение, просто мне не нравится термин "управляемые языки", поскольку ВМ я как раз считаю не самым важной в них вещью. мой опыт программирования говорит, что принципиальна как раз GC, поскольку он позволяет не задумываться о выделении и освобождении памяти и тем самым писать алгоритмы в более высокоуровневой манере. представь себе, что ты в док-ве мат. теоремы описываешь "а здесь мы освобождаем значение x, поскольку оно нам не понадобится в дальнейшем ходе док-ва"


NBN>Я когда пишу на С++ — просто выделяю память, и не занимаюсь её освобожденим — пока в этом нет необходимости.

NBN>Мемориликов в годовалом проекте нет, хотя в ходе разработки тестирования на лики не производилось.

на фортране вообще не было распределения памяти, вопрос только в том, в каком стиле при этом приходится программировать и за какими ограничениями следить, чтобы не дай бог не потерять память
Люди, я люблю вас! Будьте бдительны!!!
Re[20]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.03.09 16:28
Оценка: :)
Здравствуйте, NikeByNike, Вы писали:

NBN>Здравствуйте, gandjustas, Вы писали:


G>>В такой аналогии нужно больше деталей.

G>>GC не собирает память пока это никому не мешает, как только заполнится первое поколение — сразу же уберет, а то что не успел удбрать — сложит в другое полколение.
NBN>И тут вжииик, и оказывается что у меня на компе мало памяти... Всего гиг. Пока не поставил серьёзное ява приложение не догадывался, что у меня мало памяти.
Сейчас память стоит очень дешево, купить себе пару гигов может позволить каждый.

G>>Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.

NBN>Ага, особенно это интересно на телефоне, где тебе приходится заниматься колдовством, вместо нормального распределения ограниченного ресурса
В телефони памяти просто мало, там нельзя писать также как на PC, память будет кончаться независимо от языка.
Re[22]: Работа - с чего начать: С++ или С#?
От: BulatZiganshin  
Дата: 16.03.09 16:30
Оценка: -2
Здравствуйте, NikeByNike, Вы писали:

NBN>Ага, напоминает известное предложение ставить большие баки на речные суда и заполнять их водой. Типа если натыкаешься на мель — просто сливаешь воду и плывёшь себе дальше


читай внимательно. в языках с gc гарантия — на 3x, можно и меньше. в C++ — гарантий никаких, расход может быть каким угодно прсто потому что память усеяна мелкими дырками
Люди, я люблю вас! Будьте бдительны!!!
Re[22]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.03.09 16:30
Оценка:
Здравствуйте, denisko, Вы писали:

D>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>Здравствуйте, COFF, Вы писали:


COF>>>Так вот дворник сидит и смотрит — вроде пока мусор никому не мешает ходить, можно еще покурить или даже поспать А то что людям может быть неприятно, когда мусор на улице валяется так это не дворника дело. С GC ситуация та же — в рамках процесса он может и понимает что мусор может кому-то помешать, а если таких процессов в системе пара десятков?


BZ>>а ты следишь за всеми процесами в системе и напрягаешься от мусора в памяти?


BZ>>в языках без gc расход памяти меньше в краткосрочном плане. а вот когда память выделяется, возвращается, снова выделяется — ты получаешь фрагментированную память и ничего с ней не поделаешь. поэтому для таких программ GC выгодней — есть хоть гарантии что расход памяти будет не более чем в три раза выше, нежели реальное использование. в c++ гарантий никаких

D>Обычно, для однотипных данных, которых много, выделяют тем или иным способ свой уже фрагментированный пул. Это позволяет 1) контролировать тех, кто не отдал память вовремя 2) работать быстро и со строго ограниченным сверху размером выделенной памяти.
А некоторые вообще пишут свой GC...

D>Кто сказал, что GC ГАРАНТИРУЕТ выделение памяти не более чем три раза больше чем в данный момент используется системой?

Этого не гарантирует даже аллокатор ОС, в принципе этого не может гарантировать никто.
Re[20]: Работа - с чего начать: С++ или С#?
От: BulatZiganshin  
Дата: 16.03.09 16:32
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Язык должен быть в состоянии и описать алгоритм на высоком уровне, и дать возможность распределить регистры если это нужно (а это иногда бывает нужно). Дать возможность использовать сборку мусора, где удобно, или отказаться от нее. Вот это идеал, с моей точки зрения. Сейчас C++ по сравнению с другими распространенными языками наиболее близко подходит к нему, поэтому и популярен. А когда говорят, что ручное распределение памяти вам не нужно, регистры вам не нужны, ваше дело высокоуровнево алгоритмы описывать, то сразу же возникает вопрос, а как тогда эти задачи решать и кто их будет решать? Инопланетяне?


я их и решаю на C++. когда это необходимо. а остальное пишу на хаскеле. учитывая, что >90% кода не нуждается в ассемблерной эффективности, писать всё на С++ — это всё равно что всюду таскать с собой ружьё на случай нападения медведя из ЕР
Люди, я люблю вас! Будьте бдительны!!!
Re[20]: Работа - с чего начать: С++ или С#?
От: BulatZiganshin  
Дата: 16.03.09 16:35
Оценка:
Здравствуйте, NikeByNike, Вы писали:

NBN>И тут вжииик, и оказывается что у меня на компе мало памяти... Всего гиг. Пока не поставил серьёзное ява приложение не догадывался, что у меня мало памяти.


у меня столько один firefox сейчас жрёт

G>>Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.

NBN>Ага, особенно это интересно на телефоне, где тебе приходится заниматься колдовством, вместо нормального распределения ограниченного ресурса

вот на телефоне и занимайся шаманством с памятью на С, в 80-х годах мы как-то умещались в 640 кб
Люди, я люблю вас! Будьте бдительны!!!
Re[23]: Работа - с чего начать: С++ или С#?
От: denisko http://sdeniskos.blogspot.com/
Дата: 16.03.09 16:36
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>А некоторые вообще пишут свой GC...

Выделить пулы не требует написания кода практически.


D>>Кто сказал, что GC ГАРАНТИРУЕТ выделение памяти не более чем три раза больше чем в данный момент используется системой?

G>Этого не гарантирует даже аллокатор ОС, в принципе этого не может гарантировать никто.
А два сообщения выше вы написали, что гарантия 3x Врать не ходошо
<Подпись удалена модератором>
Re[22]: Работа - с чего начать: С++ или С#?
От: BulatZiganshin  
Дата: 16.03.09 16:36
Оценка:
Здравствуйте, denisko, Вы писали:

D>Обычно, для однотипных данных, которых много, выделяют тем или иным способ свой уже фрагментированный пул. Это позволяет 1) контролировать тех, кто не отдал память вовремя 2) работать быстро и со строго ограниченным сверху размером выделенной памяти.


ага. когда у тебя 10 библиотек, они вилимо собираются вместе и договариваются об общем пуле

D>Кто сказал, что GC ГАРАНТИРУЕТ выделение памяти не более чем три раза больше чем в данный момент используется системой?


Я!
Люди, я люблю вас! Будьте бдительны!!!
Re[20]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.03.09 16:37
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Здравствуйте, gandjustas, Вы писали:


G>>В такой аналогии нужно больше деталей.

G>>GC не собирает память пока это никому не мешает, как только заполнится первое поколение — сразу же уберет, а то что не успел удбрать — сложит в другое полколение.
G>>Вот так и с дворником — пока мусор никому не мешает, он его убирать не будет, перед тем как кому-то он сможет помешать — сразу же уберет.

COF>Так вот дворник сидит и смотрит — вроде пока мусор никому не мешает ходить, можно еще покурить или даже поспать А то что людям может быть неприятно, когда мусор на улице валяется так это не дворника дело. С GC ситуация та же — в рамках процесса он может и понимает что мусор может кому-то помешать, а если таких процессов в системе пара десятков?

А программа на C++ будет корректировать выделние памяти в зависимости от загруженности компьютера? Конечно нет. И GC не будет.
А если кончится реальная физическая память, то страницы будут вытеснены, а освободившая память отдастся тому кому оно нужно.
Re[21]: Работа - с чего начать: С++ или С#?
От: NikeByNike Россия  
Дата: 16.03.09 16:40
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

BZ>вот на телефоне и занимайся шаманством с памятью на С, в 80-х годах мы как-то умещались в 640 кб


Сам пиши в машинных кодах.
Нужно разобрать угил.
Re[21]: Работа - с чего начать: С++ или С#?
От: NikeByNike Россия  
Дата: 16.03.09 16:42
Оценка:
Здравствуйте, gandjustas, Вы писали:

COF>>Так вот дворник сидит и смотрит — вроде пока мусор никому не мешает ходить, можно еще покурить или даже поспать А то что людям может быть неприятно, когда мусор на улице валяется так это не дворника дело. С GC ситуация та же — в рамках процесса он может и понимает что мусор может кому-то помешать, а если таких процессов в системе пара десятков?

G>А программа на C++ будет корректировать выделние памяти в зависимости от загруженности компьютера? Конечно нет. И GC не будет.
G>А если кончится реальная физическая память, то страницы будут вытеснены, а освободившая память отдастся тому кому оно нужно.

И тут можно доставать травку, чтобы картинка на мониторе выглядела более плавной
Нужно разобрать угил.
Re[21]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 16.03.09 16:42
Оценка: +3
Здравствуйте, gandjustas, Вы писали:

G>А программа на C++ будет корректировать выделние памяти в зависимости от загруженности компьютера? Конечно нет. И GC не будет.

G>А если кончится реальная физическая память, то страницы будут вытеснены, а освободившая память отдастся тому кому оно нужно.

Я не хочу вдаваться в детали, можно дискутировать об особенностях выделения памяти с gc или без него сколь угодно долго, но факт налицо — управляемые приложения на десктопе тормозят и жрут память. В теории возможно они хороши, а C++ плох, но практика пока этого не показывает.
Re[21]: Работа - с чего начать: С++ или С#?
От: NikeByNike Россия  
Дата: 16.03.09 16:44
Оценка: +1 :)
Здравствуйте, gandjustas, Вы писали:

G>А программа на C++ будет корректировать выделние памяти в зависимости от загруженности компьютера? Конечно нет.

При необходимости? Конечно да!

G>И GC не будет.

Потому что не сможет
Нужно разобрать угил.
Re[21]: Работа - с чего начать: С++ или С#?
От: COFF  
Дата: 16.03.09 16:45
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

BZ>я их и решаю на C++. когда это необходимо. а остальное пишу на хаскеле. учитывая, что >90% кода не нуждается в ассемблерной эффективности, писать всё на С++ — это всё равно что всюду таскать с собой ружьё на случай нападения медведя из ЕР :))


Вообще, изначально вопрос стоял так — стоит ли учить C++ или C#? Я так понимаю, что все-таки C++? ;)
Re[23]: Работа - с чего начать: С++ или С#?
От: NikeByNike Россия  
Дата: 16.03.09 16:46
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>читай внимательно. в языках с gc гарантия — на 3x, можно и меньше. в C++ — гарантий никаких, расход может быть каким угодно прсто потому что память усеяна мелкими дырками


C++ очень универсальный язык Он позволяет писать так как тебе нужно. В частности обеспечить все гарантии по чему хочешь, чем я, кстати, на днях воспользовался.
Нужно разобрать угил.
Re[20]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.03.09 16:49
Оценка: -1 :))
Здравствуйте, COFF, Вы писали:

COF>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>точно. а продуманная структура управления регистрами и явное использование адресов памяти в программе ещё круче, вот только несколько дороговато в разработке. язык — это средство описания алгоритма, а не детального расписывания того, что должен процессор делать каждый из 3 миллиардов циклов в секунду если ты так нацелен контролировать свой процессор, то тебе нужны машкоды и что-нибудь неспекулятивное


COF>Язык должен быть в состоянии и описать алгоритм на высоком уровне, и дать возможность распределить регистры если это нужно (а это иногда бывает нужно). Дать возможность использовать сборку мусора, где удобно, или отказаться от нее. Вот это идеал, с моей точки зрения. Сейчас C++ по сравнению с другими распространенными языками наиболее близко подходит к нему, поэтому и популярен. А когда говорят, что ручное распределение памяти вам не нужно, регистры вам не нужны, ваше дело высокоуровнево алгоритмы описывать, то сразу же возникает вопрос, а как тогда эти задачи решать и кто их будет решать? Инопланетяне?


Язык C++ не обладает возможностью описать алгоритм на высоком уровне.
Если не верите, то попробуйте написать алгоритм решения задачи: "вывести на экран все строки текстового файла, в которых более трех слов, отсортированные по алфавиту".
Причем это долно быть не наколеночное решение, а production-quality код, в котором можно без особых услий убрать условие, или сделать вывод только уникальных строк, или вывод строк через одну.
Re[16]: Работа - с чего начать: С++ или С#?
От: MxKazan Португалия  
Дата: 16.03.09 16:51
Оценка:
Здравствуйте, COFF, Вы писали:

COF>Ну, беты появились года за два до релиза — вот и выходит почти 10 лет.

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

COF>Потом, почему именно 2.0? Где гарантия, что завтра не будешь говорить то же самое про 3.5?

Черт. Я знал, что так напишешь

COF>Вообще, я же не против .нет, я против огульного охаивания C++ определенными дот-нетчиками

Вот тут я тебя полностью понимаю. И я тоже против огульного охаивания .Net и его приравнивания к VB.
Re[22]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 16.03.09 17:08
Оценка: :)
Здравствуйте, COFF, Вы писали:

COF>Здравствуйте, gandjustas, Вы писали:


G>>А программа на C++ будет корректировать выделние памяти в зависимости от загруженности компьютера? Конечно нет. И GC не будет.

G>>А если кончится реальная физическая память, то страницы будут вытеснены, а освободившая память отдастся тому кому оно нужно.

COF>Я не хочу вдаваться в детали, можно дискутировать об особенностях выделения памяти с gc или без него сколь угодно долго, но факт налицо — управляемые приложения на десктопе тормозят и жрут память. В теории возможно они хороши, а C++ плох, но практика пока этого не показывает.

Ну покажите примеры программ на десктопе которые тормозят и жрут память?

Я постоянно пользуюсь двумя десктомпными программами на .NET : paint.NET и Windows Live Writer, ни одна из них не тормозит и не жрет память.
Журт панять у меня на компе больше всего в доску неуправляемые браузеры.

Не надо в качестве примера приводить плохо написанные программы на .NET или java, плохо написанных программ на С++ все равно больше.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.