Вход на сайт
Хочу научится
01.06.09 00:22
Здравствуйте.
Я узе давно пользуюсь компьютером как обычный пользователь и до недавних пор заинтересовался программированием.
Вот не знаю с чего начат,кто что посоветует?
Я узе давно пользуюсь компьютером как обычный пользователь и до недавних пор заинтересовался программированием.
Вот не знаю с чего начат,кто что посоветует?
NEW 01.06.09 10:29
в ответ knaz75 01.06.09 00:22
В принципе я начинал изучение с Pascal. Несложный синтаксис и соответственно решаемые задачи. Если освоите, то можно перебираться на Delphi - тот же самый паскаль, только в визуальной среде. Можно ещё и немного почитать основы объектно-ориентированного программирования.
Посоветовать ничего не могу, так как не помню как сам осваивал
Посоветовать ничего не могу, так как не помню как сам осваивал

Alles Lüge
NEW 01.06.09 18:30
в ответ knaz75 01.06.09 00:22
NEW 01.06.09 21:00
в ответ pkrasnop 01.06.09 18:00
Вообще-то, начинать надо с того, какой базис имеется.
Поверь, очень сложно научить программировать ученика, у которого верх "математических знаний" - устный счет в пределах первого десятка... и тот - с ошибками...
По секрету - в ЕСе сейчас есть именно такие - математика, физика и химия у них были опциональными предметами в школе...
Поверь, очень сложно научить программировать ученика, у которого верх "математических знаний" - устный счет в пределах первого десятка... и тот - с ошибками...
По секрету - в ЕСе сейчас есть именно такие - математика, физика и химия у них были опциональными предметами в школе...
NEW 02.06.09 10:32
в ответ Murr 01.06.09 21:00
Я начинала с логических контроллеров.Все наглядно, понятно, а главное задачи были вполне конкретные.Правда это низкий уровень, зато освоив это, дальше уже будет гораздо легче.Видишь результат, там лампочка, к примеру зажглась, понимаешь логику тп, для людей со средними способностями, вроде меня, самое оно так учиться

NEW 02.06.09 11:32
в ответ ludmilamac 02.06.09 10:32
Я начинала с логических контроллеров.
-----
В свое время Я начинал с физмата... в качестве подготовки.
Видишь результат, там лампочка, к примеру зажглась, понимаешь логику тп
-----
Либо понимаешь изначально, что создана машина состояний и переход из
одного состояния в другое индицируется зажиганием\гашением лампочки.
Тогда становится несущественно что именно программируется - логический
контроллер, сеть Сематикнет или просто какая-то прикладуха...
самое оно так учиться
-----
В школе, в советской средней школе, тоже учили физику. Если Я не ошибаюсь,
то с 7-го по 9-й классы. Очень много разных формул для задач на движение.
В 10-м классе - объяснили производные и интегралы без серьезной привязки
к решаемым, с их использованием, задачам. На втором курсе физмата выяснилось,
что с 7-го по 9-й классы средней школы мы изучали одну-единственную формулу
и не знали и, соответственно, не умели применить операцию дифференцирования
к такому интегральному значению как путь:
- скорость - всего лишь специальное наименование первой производной пути
- ускорение - наименование второй производной пути.
В школьном курсе физики сложность задач ограничена второй производной,
чего, однако, недостаточно для проведения всех расчетов.
-----
В свое время Я начинал с физмата... в качестве подготовки.

Видишь результат, там лампочка, к примеру зажглась, понимаешь логику тп
-----
Либо понимаешь изначально, что создана машина состояний и переход из
одного состояния в другое индицируется зажиганием\гашением лампочки.
Тогда становится несущественно что именно программируется - логический
контроллер, сеть Сематикнет или просто какая-то прикладуха...
самое оно так учиться
-----
В школе, в советской средней школе, тоже учили физику. Если Я не ошибаюсь,
то с 7-го по 9-й классы. Очень много разных формул для задач на движение.
В 10-м классе - объяснили производные и интегралы без серьезной привязки
к решаемым, с их использованием, задачам. На втором курсе физмата выяснилось,
что с 7-го по 9-й классы средней школы мы изучали одну-единственную формулу
и не знали и, соответственно, не умели применить операцию дифференцирования
к такому интегральному значению как путь:
- скорость - всего лишь специальное наименование первой производной пути
- ускорение - наименование второй производной пути.
В школьном курсе физики сложность задач ограничена второй производной,
чего, однако, недостаточно для проведения всех расчетов.
NEW 02.06.09 12:13
в ответ Murr 02.06.09 11:32
Все-таки я не очень поняла, вы хотите сказать, что человека, который к примеру не помнит высшей математики, знает физику на уровне школы невозможно научить программированию? Ведь согласитесь, разрабатывать ПО для самолетов и писать макросы под excel-задачи совершенно разного уровня, но то и то программирование.А мы ведем речь о том, как научиться...а если вы ребенка сразу запугаете теорией вероятности и теоретической физикой, у него желание пропадет учиться даже самому простому.

NEW 02.06.09 12:30
в ответ ludmilamac 02.06.09 12:13
вы хотите сказать, что человека, который к примеру не помнит высшей математики, знает физику на уровне школы невозможно научить программированию?
------
Именно это Я и хочу сказать. С одной поправкой - есть "гении", которые в данном случае не учитываются.
сразу запугаете теорией вероятности и теоретической физикой
-----
Давайте не будем его пугать. Просто посадим на большегрузный бензовоз и пусть себе едет к месту назначения.
Только вот почему-то это считается недопустимым, а посадить его же за программирование автоматического управления тем же бензовозом - в пределах нормы.
Ведь согласитесь, разрабатывать ПО для самолетов и писать макросы под excel-задачи совершенно разного уровня, но то и то программирование.
-----
Увы, с моей точки зрения это абсолютно одинаковые задачи. В сегодняшнем программировании вообще мало сколь-нибудь различающихся задач. Тем более, что в обоих случаях программирование отсутствует, а наличествует кодинг.
------
Именно это Я и хочу сказать. С одной поправкой - есть "гении", которые в данном случае не учитываются.
сразу запугаете теорией вероятности и теоретической физикой
-----
Давайте не будем его пугать. Просто посадим на большегрузный бензовоз и пусть себе едет к месту назначения.

Только вот почему-то это считается недопустимым, а посадить его же за программирование автоматического управления тем же бензовозом - в пределах нормы.
Ведь согласитесь, разрабатывать ПО для самолетов и писать макросы под excel-задачи совершенно разного уровня, но то и то программирование.
-----
Увы, с моей точки зрения это абсолютно одинаковые задачи. В сегодняшнем программировании вообще мало сколь-нибудь различающихся задач. Тем более, что в обоих случаях программирование отсутствует, а наличествует кодинг.
NEW 02.06.09 12:48
в ответ Murr 02.06.09 12:30
Ну не все же гении
Если доверять программировать только самым одаренным,программировать будет некому.Потом, часто хорошие теоретики-фиговые практики.А еще чаще, требуется программист-не генератор гениальных идей, а просто аккуратный товарищ, который будет добросовестно исправлять ошибки, а гениям как правило это не ствойственно.Хотя еще раз, у каждого своя теория и свои методы, способности тоже у всех разные, что не исключает того факта, что человек может стать спецом своего дела, не являясь математическим гением
Терпение и аккуратность тоже играет роль-это, например больше свойственно женщинам, новаторство мужчинам.


NEW 02.06.09 14:28
в ответ ludmilamac 02.06.09 12:48
что не исключает того факта, что человек может стать спецом своего дела, не являясь математическим гением
------
В одной из стран ЕСа попытались доказать, что можно сделать инженера из чудика вообще не изучавшего в школе математику. Оказалось, что сделать можно... правда - за его деньги... и куда потом его девать - непонятно - кроме диплома - ничего нет.
Ну а стать спецом своего дела, при том что дело базируется на математике и не зная математики - это к гениям...
а просто аккуратный товарищ, который будет добросовестно исправлять ошибки
------
А как он поймет в чем ошибка? Самый распространенный пример для программеров - трансляция - преобразование исходного текста программы в представление для процессора. Описывается формальной грамматикой, которую можно и весьма несложно преобразовать в транслятор. Какие-нибудь пустяки - от часа до суток счета на приличной машине и готовы набор данных и небольшая програмка. Что именно этот аккуратный товарищ будет исправлять? Он ведь не знает каковы допущения и какие проверки были выполнены перед их созданием. Мало того - он даже необходимость и харатер этих проверок понимать не будет. А нарушить - элементарно - даже спецы, разрабатывавшие Алгол, допустили несколько неоднозначностей...
это, например больше свойственно женщинам
------
У Барланда, к примеру, был написан собственный диспетчер памяти. Вполне официально признано, что это наиболее проблемная вещь во всем что они сделали. Написано это было именно женщиной. К счастью - единственной в Борланде.
------
В одной из стран ЕСа попытались доказать, что можно сделать инженера из чудика вообще не изучавшего в школе математику. Оказалось, что сделать можно... правда - за его деньги... и куда потом его девать - непонятно - кроме диплома - ничего нет.
Ну а стать спецом своего дела, при том что дело базируется на математике и не зная математики - это к гениям...
а просто аккуратный товарищ, который будет добросовестно исправлять ошибки
------
А как он поймет в чем ошибка? Самый распространенный пример для программеров - трансляция - преобразование исходного текста программы в представление для процессора. Описывается формальной грамматикой, которую можно и весьма несложно преобразовать в транслятор. Какие-нибудь пустяки - от часа до суток счета на приличной машине и готовы набор данных и небольшая програмка. Что именно этот аккуратный товарищ будет исправлять? Он ведь не знает каковы допущения и какие проверки были выполнены перед их созданием. Мало того - он даже необходимость и харатер этих проверок понимать не будет. А нарушить - элементарно - даже спецы, разрабатывавшие Алгол, допустили несколько неоднозначностей...
это, например больше свойственно женщинам
------
У Барланда, к примеру, был написан собственный диспетчер памяти. Вполне официально признано, что это наиболее проблемная вещь во всем что они сделали. Написано это было именно женщиной. К счастью - единственной в Борланде.
NEW 02.06.09 14:40
в ответ kashej 02.06.09 14:30
можно и без математики.
------
Без математики можно научится писать код. Стать кодером.
Увы, даже став хорошим кодером, нельзя стать программистом... без математики.
Просто в силу абсолютного непонимания предметной области, которая, к тому же, меняется от задачи к задаче.
------
Без математики можно научится писать код. Стать кодером.
Увы, даже став хорошим кодером, нельзя стать программистом... без математики.
Просто в силу абсолютного непонимания предметной области, которая, к тому же, меняется от задачи к задаче.
NEW 02.06.09 14:58
в ответ knaz75 01.06.09 00:22
купите (или найдите в интернете, оно есть и на русском) классический учебник по программированию - Structure & Interpretation of Computer Programs - лишней теории нет, куча примеров, язык правда там "необычный" для большинства народу, но и это поправимо...
NEW 02.06.09 15:00
в ответ AlexOtt 02.06.09 14:58
NEW 02.06.09 16:28
Я в свое время начинал изучать С++ а заодно и программирование по книге Дейтеля "Как программировать на С++". Очень объемная книга, поэтому если нужно побыстрей, то лучше взять что-нибудь другое из ряда "...для чайников" или "...за 21 день". Ну а так если есть время, то запастись терпением и проделывать все примеры и задачи из этой книги. Очень доходчиво все описано. А тут кто-то в форуме сказал, что нужна задача. В том-то и дело, что у новичка она как правило не всегда бывает. Он просто понимает, что ему нужно как-то начать программировать. А уж задачи будут появляться по мере приобретения навыков в программировании.
http://denis-aristov.ucoz.com
NEW 02.06.09 19:53
в ответ kashej 02.06.09 16:28
Есть два способа обучения.
При достаточном уровне имеющейся подготовки можно, и достаточно легко и быстро, объяснить что собой представляет программирование и какую роль играет язык программирования, библиотеки, концепты т.п.
При недостаточном уровне подготовки это просто невозможно - придется начинать с простых, более-мение понятных, вещей и довольно медленно и трудоемко доводить до необходимо-приемлемого уровня. И не всегда это можно сделать.
При достаточном уровне имеющейся подготовки можно, и достаточно легко и быстро, объяснить что собой представляет программирование и какую роль играет язык программирования, библиотеки, концепты т.п.
При недостаточном уровне подготовки это просто невозможно - придется начинать с простых, более-мение понятных, вещей и довольно медленно и трудоемко доводить до необходимо-приемлемого уровня. И не всегда это можно сделать.
NEW 08.06.09 00:41
в ответ AlexOtt 03.06.09 10:16
Например мой опыт такой:
Я когда учился програмит в своэ время Страусттрупа(с с++) пречитал и пределалл задачки (почти все около %80)
практически пол СТЛ перелопатил пересчупал руками
Для начала неплохо
НО ПЕРД СТРАУСТРУПОМ Я САВИЧА полностю закончил и понял что мало знаю(после одного типа браинбечевского теста :))) ) и взял Страуструпа
Потом Начал читат по дизайну например банду 4 Александреску также по алгоритмам нескоко книжек просмотрел понял сут без углубления
Потом почитал работая с с++ почитал С Шарп и джаву показалис мне елементарными по сравнениыу с с++
По моэму неплохо начат с с++ потом всё осталное быстро подхватываэтся и глубоко понимаэтся
Етот так вобсчем. если интерессуют детали спрашивай
Я когда учился програмит в своэ время Страусттрупа(с с++) пречитал и пределалл задачки (почти все около %80)
практически пол СТЛ перелопатил пересчупал руками
Для начала неплохо
НО ПЕРД СТРАУСТРУПОМ Я САВИЧА полностю закончил и понял что мало знаю(после одного типа браинбечевского теста :))) ) и взял Страуструпа
Потом Начал читат по дизайну например банду 4 Александреску также по алгоритмам нескоко книжек просмотрел понял сут без углубления
Потом почитал работая с с++ почитал С Шарп и джаву показалис мне елементарными по сравнениыу с с++
По моэму неплохо начат с с++ потом всё осталное быстро подхватываэтся и глубоко понимаэтся
Етот так вобсчем. если интерессуют детали спрашивай
NEW 08.06.09 11:08
в ответ eaglexyzid 08.06.09 00:41
В ответ на:
По моэму неплохо начат с с++ потом всё осталное быстро подхватываэтся и глубоко понимаэтся
тоже так думаю, но начинать со Страуструпа (если нет никаких знаний в программировании) думаю что рановато. ИМХО конечно.По моэму неплохо начат с с++ потом всё осталное быстро подхватываэтся и глубоко понимаэтся
http://denis-aristov.ucoz.com
NEW 08.06.09 15:49
в ответ eaglexyzid 08.06.09 00:41
не НАДО начинать с С++! это язык для людей, которые уже умеют программировать! Надо начинать учиться с языков, которые дают понимание программирования, а не деталей конкретного языка. а то в С++ получается, что "за деревьями не видно леса" - слишком много низкоуровневых деталей и специфики.
P.S. я сам программирую на С++ ооочень давно, и поэтому и говорю.
P.S. я сам программирую на С++ ооочень давно, и поэтому и говорю.
NEW 08.06.09 16:37
в ответ AlexOtt 08.06.09 15:49
не НАДО начинать с С++!
------
Не могу согласится. Ибо обучал "с нуля" и именно на С++... точнее - на С++ Билдере, но разницы с точки зрения обучения там не много... и вполне успешно.
Так что - не надо САМОСТОЯТЕЛЬНО С НУЛЯ начинать с С++ - будет правильно. Ибо ньюансов действительно много и не все их легко понять.
------
Не могу согласится. Ибо обучал "с нуля" и именно на С++... точнее - на С++ Билдере, но разницы с точки зрения обучения там не много... и вполне успешно.
Так что - не надо САМОСТОЯТЕЛЬНО С НУЛЯ начинать с С++ - будет правильно. Ибо ньюансов действительно много и не все их легко понять.
NEW 08.06.09 19:30
в ответ kashej 08.06.09 17:52
Дело не в скромности, в применяемой методике.
Та, которую применял Я, позволяла достаточно быстро ввести в программирование с нуля по ООП-концепции.
С++ Билдер вполне удовлетворял как инструмент, нетребующий детальных знаний на начальном этапе.
Разумеется, были вполне определенные требования к начальной подготовке и некоторые, хотя и весьма неплохие, гарантии по получаемым проф. навыкам - обучившиеся работают, довольны работой и достаточно адаптируемы к изменениям в работе.
Та, которую применял Я, позволяла достаточно быстро ввести в программирование с нуля по ООП-концепции.
С++ Билдер вполне удовлетворял как инструмент, нетребующий детальных знаний на начальном этапе.
Разумеется, были вполне определенные требования к начальной подготовке и некоторые, хотя и весьма неплохие, гарантии по получаемым проф. навыкам - обучившиеся работают, довольны работой и достаточно адаптируемы к изменениям в работе.
NEW 08.06.09 23:50
в ответ AlexOtt 08.06.09 20:04
а не написанию костылей на выбранном языке...
-----
Именно.
Собственно ИСПОЛЬЗУЕМЫЙ ЯЗЫК при этом имеет не основополагающее значение.
Основное - именно учится программировать. Самостоятельно это сделать не совсем
просто. Сделать на неподходящем языке - еще сложнее. Ну и самостоятельно на
неподходящем языке - почти тупик. Тем не мение - эффективно обучать - используя
С++ - вполне можно. Проверено.
Эээ... Ты, кстати, не знаешь, что самое сложное при объяснении примату работы
процессора? :) Очень такой характерный моментик есть - примат знает\понимает, что
ресурсы процессора ограничены... понимает, что выполняются очень низкоуровневые
операции... понимает, что память - отдельно от процессора... точно знает, что когда
в регистр загружается "строка" - то реально загружается только адрес начала...
но(!) намертво забывает обо всем когда надо элементарно скопировать строку - копирует
только адрес...
-----
Именно.
Собственно ИСПОЛЬЗУЕМЫЙ ЯЗЫК при этом имеет не основополагающее значение.
Основное - именно учится программировать. Самостоятельно это сделать не совсем
просто. Сделать на неподходящем языке - еще сложнее. Ну и самостоятельно на
неподходящем языке - почти тупик. Тем не мение - эффективно обучать - используя
С++ - вполне можно. Проверено.
Эээ... Ты, кстати, не знаешь, что самое сложное при объяснении примату работы
процессора? :) Очень такой характерный моментик есть - примат знает\понимает, что
ресурсы процессора ограничены... понимает, что выполняются очень низкоуровневые
операции... понимает, что память - отдельно от процессора... точно знает, что когда
в регистр загружается "строка" - то реально загружается только адрес начала...
но(!) намертво забывает обо всем когда надо элементарно скопировать строку - копирует
только адрес...
<--- nobody harmed
in this action -->
NEW 09.06.09 02:29
в ответ AlexOtt 08.06.09 20:04
/--------
Отправитель: AlexOtt
Заголовок: Re: Хочу научится
НЕ НАДО начинать с С++. ООП концепции там кривые, возможности выстрелить себе в ногу, руку, голову и т.п. - навалом. Когда учишься программированию, надо учиться именно ему, а не написанию костылей на выбранном языке...
-----------------/
ООП очен хорошо выражено. с++ концептуално мосчныи язык
Яве и с шарпу далеко к ниму
По моэму с++ надо учит а програмироват уже на другом яве иле шарпе питоне перле или беше итд Ич вычиваэш за недели
Тогда ты понимаэш что за кулисами проишодит (конешно неплохо бы и асмблер сперва подчитат (но я не я етого не делал Так что советоват не буду))
Согласен что Старуструп не прост дла начинаюсчих
С++ лучше начинат с Савича
http://c2p.ru/cpp/uolter-savich-programmirovanie-na-c-4-e-izd.html
Простая и доступня как минимум для меня.
Учит как програмироват так и язык
(Я не знаю что там уже советовали = Но я бы не рекомендовал начинат с паскаля и делфи, как для меня очен искажаэт ООП и всё что с ним связано Но это толко лиш моё мненя)
Отправитель: AlexOtt
Заголовок: Re: Хочу научится
НЕ НАДО начинать с С++. ООП концепции там кривые, возможности выстрелить себе в ногу, руку, голову и т.п. - навалом. Когда учишься программированию, надо учиться именно ему, а не написанию костылей на выбранном языке...
-----------------/
ООП очен хорошо выражено. с++ концептуално мосчныи язык
Яве и с шарпу далеко к ниму
По моэму с++ надо учит а програмироват уже на другом яве иле шарпе питоне перле или беше итд Ич вычиваэш за недели
Тогда ты понимаэш что за кулисами проишодит (конешно неплохо бы и асмблер сперва подчитат (но я не я етого не делал Так что советоват не буду))
Согласен что Старуструп не прост дла начинаюсчих
С++ лучше начинат с Савича
http://c2p.ru/cpp/uolter-savich-programmirovanie-na-c-4-e-izd.html
Простая и доступня как минимум для меня.
Учит как програмироват так и язык
(Я не знаю что там уже советовали = Но я бы не рекомендовал начинат с паскаля и делфи, как для меня очен искажаэт ООП и всё что с ним связано Но это толко лиш моё мненя)
NEW 09.06.09 09:48
в ответ eaglexyzid 09.06.09 02:29
ООП в C++ - это жалкое подобие того, что было придумано для Smalltalk. Почитайте книги про ООП не на примере С++ и явы, а как оно должно быть. Посмотрите на CLOS, например.
Где в С++ диспетчеризация по множеству параметров, например? Есть конечно реализации (неполные), но с таким количеством шаблонов, что код практически невозможно читать...
Если бы С++ был таким замечательным языком, в него бы не тянули все подряд из других языков - вы почитайте новый стандарт - замыкания, анонимные лямбда-функции и т.д. И это при том, что до сих пор не решена проблема переносимости библиотек, даже на одной платформе, например, если у меня библиотека была скомпилированна с отладочной версией STL, а вызывающая программа - с релизной (или наоборот), то я могу пойти и повеситься, поскольку эти версии несовместимы. Шаблоны в интерфейсах использовать не могу, так что либо я должен отдавать библиотеку в С интерфейсом, или отдавать ее в исходниках. Замечательно?
Где в С++ диспетчеризация по множеству параметров, например? Есть конечно реализации (неполные), но с таким количеством шаблонов, что код практически невозможно читать...
Если бы С++ был таким замечательным языком, в него бы не тянули все подряд из других языков - вы почитайте новый стандарт - замыкания, анонимные лямбда-функции и т.д. И это при том, что до сих пор не решена проблема переносимости библиотек, даже на одной платформе, например, если у меня библиотека была скомпилированна с отладочной версией STL, а вызывающая программа - с релизной (или наоборот), то я могу пойти и повеситься, поскольку эти версии несовместимы. Шаблоны в интерфейсах использовать не могу, так что либо я должен отдавать библиотеку в С интерфейсом, или отдавать ее в исходниках. Замечательно?
NEW 10.06.09 18:14
в ответ AlexOtt 09.06.09 09:48
проблема бинарников, это проблема компиляторов, линкеров, ОС и тд. Никак не языка.
Проблема extern заключается в том, что C и С++ это не один и тот же язык, а программу собирать на 2ух разных языках всегда проблемно, но зачастую просто невозможно в других языках.
Templates...да, согласен, не очень удобно. Но открытые исходники и коммерческие версии это не несовместимые понятия в современном мире. Исходники можно собрать под любую ОС с компилятором, бинарники же запустить не получиться. В той же Java байт-код отлично "декомпилируется", поэтому не стесняйтесь выкладывать open source. :-)
Проблема extern заключается в том, что C и С++ это не один и тот же язык, а программу собирать на 2ух разных языках всегда проблемно, но зачастую просто невозможно в других языках.
Templates...да, согласен, не очень удобно. Но открытые исходники и коммерческие версии это не несовместимые понятия в современном мире. Исходники можно собрать под любую ОС с компилятором, бинарники же запустить не получиться. В той же Java байт-код отлично "декомпилируется", поэтому не стесняйтесь выкладывать open source. :-)
NEW 10.06.09 18:36
в ответ pkrasnop 10.06.09 18:14
ну насчет декомпилируемости ява-байткода, тут тоже не всегда так просто получается, особенно если байт-код был выгнан не из явы...
а так, зачем мне открывать исходники, если они меня кормят? коммунизм у нас пока еще не настал, чтобы раздавать все направо и налево :-)
а так, зачем мне открывать исходники, если они меня кормят? коммунизм у нас пока еще не настал, чтобы раздавать все направо и налево :-)
NEW 11.06.09 18:13
в ответ AlexOtt 10.06.09 18:36
Кормят не исходники, а правильно работающие программы. Другой вопрос, что многие считают (особенно на востоке), что если есть исходники, то за правильно работающие программы можно не платить. Есть GPL, LGPL и в настоящее время они набирают обороты.
NEW 12.06.09 09:44
Это вы мне рассказываете? :-) Я со свободным софтом работаю очень давно, и пишу его тоже. Есть ситуации, когда кормят именно закрытые исходники - когда они содержат know how, в которое вложенно достаточно большое кол-во денег. Большая часть свободных программ не требует специальных исследований - пиши код и все. Да и много больших открытых проектов (eclipse, openoffice, и т.п.) было создано не с нуля, а открыто коммерческими компаниями. Так что не стоит преувеличивать силу опен соурса
в ответ pkrasnop 11.06.09 18:13
В ответ на:
Кормят не исходники, а правильно работающие программы. Другой вопрос, что многие считают (особенно на востоке), что если есть исходники, то за правильно работающие программы можно не платить. Есть GPL, LGPL и в настоящее время они набирают обороты.
Кормят не исходники, а правильно работающие программы. Другой вопрос, что многие считают (особенно на востоке), что если есть исходники, то за правильно работающие программы можно не платить. Есть GPL, LGPL и в настоящее время они набирают обороты.
Это вы мне рассказываете? :-) Я со свободным софтом работаю очень давно, и пишу его тоже. Есть ситуации, когда кормят именно закрытые исходники - когда они содержат know how, в которое вложенно достаточно большое кол-во денег. Большая часть свободных программ не требует специальных исследований - пиши код и все. Да и много больших открытых проектов (eclipse, openoffice, и т.п.) было создано не с нуля, а открыто коммерческими компаниями. Так что не стоит преувеличивать силу опен соурса
NEW 12.06.09 12:49
согласен, есть такое......
но нечасто :-)
В ответ на:
сть ситуации, когда кормят именно закрытые исходники
сть ситуации, когда кормят именно закрытые исходники
согласен, есть такое......
В ответ на:
Большая часть свободных программ не требует специальных исследований - пиши код и все.
Большая часть свободных программ не требует специальных исследований - пиши код и все.
но нечасто :-)
NEW 12.06.09 22:38
в ответ pkrasnop 12.06.09 12:49
н.п.
раз уж начали оффтопить.. В общем, такая ситуация:
ищу практику как фахинформатикер (Anwendungsentwicklung). Был на фирме, занимающейся web-разработками, состоялся разговор с шефом и его замом. На вопрос о моих познаниях в PHP/MySQL честно ответил - практически никаких. Те мне поставили условие приёма на практику - я должен буду сделать небольшой проект, задание вышлют на мыло. По результатам они решат, брать меня или нет.
По такому случаю купил себе онлайн сие ЧТИВО . Книга пока не пришла, почитываю пока туториалы по пхп. В общем, как по Вашему, какого мини-проекта следует ожидать?
раз уж начали оффтопить.. В общем, такая ситуация:
ищу практику как фахинформатикер (Anwendungsentwicklung). Был на фирме, занимающейся web-разработками, состоялся разговор с шефом и его замом. На вопрос о моих познаниях в PHP/MySQL честно ответил - практически никаких. Те мне поставили условие приёма на практику - я должен буду сделать небольшой проект, задание вышлют на мыло. По результатам они решат, брать меня или нет.
По такому случаю купил себе онлайн сие ЧТИВО . Книга пока не пришла, почитываю пока туториалы по пхп. В общем, как по Вашему, какого мини-проекта следует ожидать?
NEW 17.06.09 13:10
разобратся бы какие языки к чему...
хтмл - ето разметка
пхп - ето создание скриптом для их отображения в браузере
мускл - ето база данных
оракл - тоже толъко комм. версия
еще вижуал бейсик
с++
паскал
ява
делфи
перл
и тп
какие языки учатся самостоятельно? к примеру - выучил язык скл, а без пхп его применить нелъзя.
и какие языки можно выучит за пару мес.?
хтмл - ето разметка
пхп - ето создание скриптом для их отображения в браузере
мускл - ето база данных
оракл - тоже толъко комм. версия
еще вижуал бейсик
с++
паскал
ява
делфи
перл
и тп
какие языки учатся самостоятельно? к примеру - выучил язык скл, а без пхп его применить нелъзя.
и какие языки можно выучит за пару мес.?
NEW 17.06.09 16:33
в ответ Michel 17.06.09 13:10
какие языки учатся самостоятельно?
------
Любые. По секрету скажу - они только так и учатся. Учитель лишь ускоряет процесс, акцентируя внимание на нужных моментах и отвлекая от ненужного.
а без пхп его применить нелъзя.
------
Кто тебе сказал такую глупость?
и какие языки можно выучит за пару мес.?
------
Любой язык, до уровня написания заданной функциональности, можно выучить за 5-10 дней.
------
Любые. По секрету скажу - они только так и учатся. Учитель лишь ускоряет процесс, акцентируя внимание на нужных моментах и отвлекая от ненужного.
а без пхп его применить нелъзя.
------
Кто тебе сказал такую глупость?
и какие языки можно выучит за пару мес.?
------
Любой язык, до уровня написания заданной функциональности, можно выучить за 5-10 дней.
NEW 17.06.09 18:13
в ответ AlexOtt 17.06.09 17:38
Как _язык_ - всенепременнейше.
Пару дней назад случилось вернуться к основательно забытому XSLT... мало того,
в весьма нестандартной ситуации - с синтезом шаблона "на лету". Пришлось за
полдня разобраться как оно было задумано и работает... и написать новый набор
рулесов... практически - новый язык. Так что - дело в навыках.
З.Ы. Не первая тема - смотри ранее что именно подпадает под _язык_.
Пару дней назад случилось вернуться к основательно забытому XSLT... мало того,
в весьма нестандартной ситуации - с синтезом шаблона "на лету". Пришлось за
полдня разобраться как оно было задумано и работает... и написать новый набор
рулесов... практически - новый язык. Так что - дело в навыках.
З.Ы. Не первая тема - смотри ранее что именно подпадает под _язык_.
NEW 17.06.09 23:04
никто не сказал, я узнать хотел
к примеру есть книги - ПХП и МуСКЛ
есть отделные по етим же языкам, но как я понял, одно без другого в вопросе создания сайта не работатет (ето т.с. частный пример).
отсюда и был вопрос, какие языки т.с. "самостоятельные" и для каких областей "заточены".
в ответ Murr 17.06.09 16:33
В ответ на:
а без пхп его применить нелъзя.
------
Кто тебе сказал такую глупость?
а без пхп его применить нелъзя.
------
Кто тебе сказал такую глупость?
никто не сказал, я узнать хотел
к примеру есть книги - ПХП и МуСКЛ
есть отделные по етим же языкам, но как я понял, одно без другого в вопросе создания сайта не работатет (ето т.с. частный пример).
отсюда и был вопрос, какие языки т.с. "самостоятельные" и для каких областей "заточены".
NEW 17.06.09 23:27
SQL - это не то же самое, что MySQL.
Есть SQL - это, грубо говоря, язык манипулирования табличными данными.
Есть СУБД - системы управления базами данных - поддерживающие использование SQL для работы с ними. Пример СУБД - это MySQL, а также, помимо него - Oracle Database, Microsoft SQL Server, PostgreSQL, IBM DB2 и еще туева хуча других. У каждой из них - своя ниша, свой типовой круг задач и свой диалект SQL (как правило, плохо совместимый с диалектами SQL в остальных СУБД).
Обращаться к БД при повседневной работе напрямую "руками" через SQL - сродни хардкорной работе в командной строке. Поэтому пишутся программы-фронтэнды (оболочки), представляющие из себя графический интерфейс (или веб-приложение), который, грубо говоря, транслирует действия пользователя в SQL-запросы к СУБД. Нажал на кнопку - программа выполнила SQL-запрос и показала результат.
На чем писать такой фронтенд - решается постановкой задачи, имеющимся программным и платформенным окружением, навыками, желаниями, фазой луны и т.д.
Сложилось так, что PHP часто используется как язык для написания веб-фронтендов для базы в MySQL. Это эдакая устоявшаяся связка.
SQL - это не то же самое, что MySQL.
Есть SQL - это, грубо говоря, язык манипулирования табличными данными.
Есть СУБД - системы управления базами данных - поддерживающие использование SQL для работы с ними. Пример СУБД - это MySQL, а также, помимо него - Oracle Database, Microsoft SQL Server, PostgreSQL, IBM DB2 и еще туева хуча других. У каждой из них - своя ниша, свой типовой круг задач и свой диалект SQL (как правило, плохо совместимый с диалектами SQL в остальных СУБД).
Обращаться к БД при повседневной работе напрямую "руками" через SQL - сродни хардкорной работе в командной строке. Поэтому пишутся программы-фронтэнды (оболочки), представляющие из себя графический интерфейс (или веб-приложение), который, грубо говоря, транслирует действия пользователя в SQL-запросы к СУБД. Нажал на кнопку - программа выполнила SQL-запрос и показала результат.
На чем писать такой фронтенд - решается постановкой задачи, имеющимся программным и платформенным окружением, навыками, желаниями, фазой луны и т.д.
Сложилось так, что PHP часто используется как язык для написания веб-фронтендов для базы в MySQL. Это эдакая устоявшаяся связка.
NEW 18.06.09 00:07
в ответ Michel 17.06.09 23:04
одно без другого в вопросе создания сайта не работатет
------
Не совсем. Точнее - полная путаница.
1. Сайт. Для него не требуются ни PHP, ни SQL. Даже HTML не обязателен.См. например FTP-сайт.
2. PHP. Совсем не обязательно использовать PHP для генерации HTML. Можно решать любую другую задачу. Просто генерация HTML это то, что в нем делать достаточно просто.
3. SQL. Он появляется не тогда, когда надо писать что-то на PHP или делать вэб-сайт, а тогда, когда надо где-то организованно сохранять какие-то данные, получаемые от пользователя. Можно решать эту часть задачи и без SQL, но с ним выходит проще. Кроме того, как написал D.P, никто не мешает получать данные непосредственно от SQL-сервера, не используя PHP или другой язык.
какие языки т.с. "самостоятельные" и для каких областей "заточены".
------
Практически на любом языке можно решать любые задачи. Просто на одних часть работы будет сделать проще, на других - затратно, и лишь некоторые задачи будет сделать невозможно. Невозможности, однако, скорее исключения, чем правило.
Например, HTML не умеет записывать информацию в файл. Вместо этого он отсылает данные на указанный сервер, где они уже могут быть записаны в файл тем же PHP или ASP или еще пятью десятками известных языков.
------
Не совсем. Точнее - полная путаница.
1. Сайт. Для него не требуются ни PHP, ни SQL. Даже HTML не обязателен.См. например FTP-сайт.
2. PHP. Совсем не обязательно использовать PHP для генерации HTML. Можно решать любую другую задачу. Просто генерация HTML это то, что в нем делать достаточно просто.
3. SQL. Он появляется не тогда, когда надо писать что-то на PHP или делать вэб-сайт, а тогда, когда надо где-то организованно сохранять какие-то данные, получаемые от пользователя. Можно решать эту часть задачи и без SQL, но с ним выходит проще. Кроме того, как написал D.P, никто не мешает получать данные непосредственно от SQL-сервера, не используя PHP или другой язык.
какие языки т.с. "самостоятельные" и для каких областей "заточены".
------
Практически на любом языке можно решать любые задачи. Просто на одних часть работы будет сделать проще, на других - затратно, и лишь некоторые задачи будет сделать невозможно. Невозможности, однако, скорее исключения, чем правило.
Например, HTML не умеет записывать информацию в файл. Вместо этого он отсылает данные на указанный сервер, где они уже могут быть записаны в файл тем же PHP или ASP или еще пятью десятками известных языков.
NEW 02.07.09 20:20
в ответ knaz75 01.06.09 00:22
Для того, чтобы уяснить логику программирования - нужно начинать с Паскаля. Тем более что в Интернете возможно скачать бесплатно Bortland Pascal или BC Pascal. Эти программы по своей сущности похожи и практически идентичны Turbo Pascal. Можно много рассуждать на тему что Паскаль стар как мир, но это все-равно что азбука программирования - практически все существующие языки программирования имеют очень похожую на Паскаль логику.
Далее взять в библиотеке или найти в интернете сборник задач и начинать решать задачи - причем начинать с элементарного "А+В=С". По началу не будет получаться, и будет дикое желание бросить все это, главное перетерпеть.
Есть также хороший сайт Интернет-Университета Высоких Технологий - там есть различные интересны курсы для самостоятельного изучения, курсы разработаны ведущими профессорами России. Обучение бесплатно, есть теория и тесты для оценки знаний. Уровни различные - от начинающих до спецов.
Ссылка www.intuit.ru
И добрый совет - посмотрите в том регионе, где вы живете, что-то вроде профобразовательного центра - там могут обучаться взрослые по вечерам, там наверняка есть специальность, связанная с компьютерами - это могут быть и компьютерные сети, и обработка данных, и обслуживание компьютеров. На всех подобных специальностях, где подразумевается работа на компьютере, программирование Паскаль или Дельфи- обязательный предмет. Там уже его можно освоить под руководством преподавателя, что поверьте мне, будет проще и надежнее. Дельфи, кстати, тот же Паскаль, только более современной версии.
Не знаю какие возможности в Вашем регионе, у нас, по крайней мере, любой взрослый, кому вдруг приспичило вновь учиться - может пойти учиться по вечерам в профессиональный центр и все это бесплатно, даже стипендию платят. И уровень образования весьма и весьма приличный.
Далее взять в библиотеке или найти в интернете сборник задач и начинать решать задачи - причем начинать с элементарного "А+В=С". По началу не будет получаться, и будет дикое желание бросить все это, главное перетерпеть.
Есть также хороший сайт Интернет-Университета Высоких Технологий - там есть различные интересны курсы для самостоятельного изучения, курсы разработаны ведущими профессорами России. Обучение бесплатно, есть теория и тесты для оценки знаний. Уровни различные - от начинающих до спецов.
Ссылка www.intuit.ru
И добрый совет - посмотрите в том регионе, где вы живете, что-то вроде профобразовательного центра - там могут обучаться взрослые по вечерам, там наверняка есть специальность, связанная с компьютерами - это могут быть и компьютерные сети, и обработка данных, и обслуживание компьютеров. На всех подобных специальностях, где подразумевается работа на компьютере, программирование Паскаль или Дельфи- обязательный предмет. Там уже его можно освоить под руководством преподавателя, что поверьте мне, будет проще и надежнее. Дельфи, кстати, тот же Паскаль, только более современной версии.
Не знаю какие возможности в Вашем регионе, у нас, по крайней мере, любой взрослый, кому вдруг приспичило вновь учиться - может пойти учиться по вечерам в профессиональный центр и все это бесплатно, даже стипендию платят. И уровень образования весьма и весьма приличный.
NEW 03.07.09 15:53
"Очень похожая" это "немножко беременная". Языки обладают синтаксисом, семантикой и поддерживают определённые парадигмы программирования. Синтаксис не интересен. Интересны семантика и парадигмы. Знаете чем вторая строка псевдо-кода:
Type obj;
obj = value;
в Pascal отличается от кода в Algol 68/ADA/С++/С#/Python/Perl/Delphi/Haskell/Ruby/Fortran/Prolog? Достаточно длинный список? Тем, что у кода разная семантика. В Паскале это будет просто присваивание. В указанных языках это будет что угодно. Потому, что там есть такая вещь как перегрузка операторов, которая из "очень похожей логики" делает очень непохожую. (строго говоря, не во всех указанных языках все операторы можно перегружать, в питоне, к примеру, нет перегрузки оператора присваивания, но не суть важно, возмите оператор сложения и постройте аналогичный пример).
Что касается поддерживаемых парадигм - процедурное и ООП, это, минимум, половина того, что надо знать. Функциональное и метапрограммирование там недоступны.
Большинство вузов в россии обучают информатике используя паскаль. В принципе, всё логично. В школе - бэйсик, в университете - паскаль, на работу - быдлокодера.
Вот и весь computer science. 
Я бы, наверно, питон выбрал бы сейчас для изучения различных концепций, если бы хотел научитъся программировать.
В ответ на:
Паскаль стар как мир, но это все-равно что азбука программирования - практически все существующие языки программирования имеют очень похожую на Паскаль логику.
Паскаль стар как мир, но это все-равно что азбука программирования - практически все существующие языки программирования имеют очень похожую на Паскаль логику.
"Очень похожая" это "немножко беременная". Языки обладают синтаксисом, семантикой и поддерживают определённые парадигмы программирования. Синтаксис не интересен. Интересны семантика и парадигмы. Знаете чем вторая строка псевдо-кода:
Type obj;
obj = value;
в Pascal отличается от кода в Algol 68/ADA/С++/С#/Python/Perl/Delphi/Haskell/Ruby/Fortran/Prolog? Достаточно длинный список? Тем, что у кода разная семантика. В Паскале это будет просто присваивание. В указанных языках это будет что угодно. Потому, что там есть такая вещь как перегрузка операторов, которая из "очень похожей логики" делает очень непохожую. (строго говоря, не во всех указанных языках все операторы можно перегружать, в питоне, к примеру, нет перегрузки оператора присваивания, но не суть важно, возмите оператор сложения и постройте аналогичный пример).
Что касается поддерживаемых парадигм - процедурное и ООП, это, минимум, половина того, что надо знать. Функциональное и метапрограммирование там недоступны.
Большинство вузов в россии обучают информатике используя паскаль. В принципе, всё логично. В школе - бэйсик, в университете - паскаль, на работу - быдлокодера.


Я бы, наверно, питон выбрал бы сейчас для изучения различных концепций, если бы хотел научитъся программировать.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 03.07.09 21:05
в ответ Simple 03.07.09 10:59
Господин хороший, я вовсе не претендую на лавры копьютерного гуру - куда же нам, блондинкам!!!! Мы же умеем только на дамских сайтах тусоваться. И похоже на компьтерной ветке - мнение женщины ну прямо клинический идиотизм. Спасибо за уточнение диагноза, дохтор!
NEW 03.07.09 22:56
в ответ voxel3d 03.07.09 15:53
В Паскале это будет просто присваивание.
------
Эээ... если Я не забыл синтаксис Паскаля, то не будет... там кажется := такое прсваивание...
Но сути это не меняет.
Даа... Я бы не включал Алгол-68 в список... У него есть существенное отличие от Паскаля -
в его определении были допущены неоднозначности... где именно - уже не помню за давностью...
------
Эээ... если Я не забыл синтаксис Паскаля, то не будет... там кажется := такое прсваивание...
Но сути это не меняет.
Даа... Я бы не включал Алгол-68 в список... У него есть существенное отличие от Паскаля -
в его определении были допущены неоднозначности... где именно - уже не помню за давностью...
NEW 10.07.09 11:05
в ответ knaz75 04.07.09 01:12
Я бы с Паскаля не начинал. При всяком изучении чего то нового нужно заглядывать вперед. Паскаль используется только в учебных целях. А если бы начал например с Java, то убил бы 2-х зайцев. И научился программировать и потом нашел бы работу (что с одним Паскалем невозможно).
http://denis-aristov.ucoz.com
NEW 10.07.09 14:00
Если уж заговорили о Java..
Вот, может быть, такой подход к обучению больше понравится. Хоть материальчик и не первой свежести, но ИМХО очень полезен.
Или же сей труд на немецком. При правильном использовании гугла можно найти даже бесплатно. Тут уже работа в эклипсе, но материала меньше, чем по первой ссылке
Вот, может быть, такой подход к обучению больше понравится. Хоть материальчик и не первой свежести, но ИМХО очень полезен.
Или же сей труд на немецком. При правильном использовании гугла можно найти даже бесплатно. Тут уже работа в эклипсе, но материала меньше, чем по первой ссылке
NEW 14.07.09 10:06
в ответ knaz75 13.07.09 22:18
я бы посоветовал для начала Dive into Python - http://diveintopython.org/ - там есть и русский перевод, если это нужно. а core python programming бы отложил на позже, и/или использовал бы ее в качестве справочника
есть еще версия и для 3-й версии питона - http://diveintopython3.org/
есть еще версия и для 3-й версии питона - http://diveintopython3.org/
NEW 29.07.09 20:41
в ответ knaz75 04.07.09 01:12
У каждого свой подход.. Есть те кто начинает с Delphi (или Pasсal), но я-бы не стал.. он действительно "другой" какой-то. Да и не так прост, как на первый взгляд кажется. Язык клёвый, надо отметить... жаль, что отмирает потихоньку.
Как-бы поступил я сейчас на Вашем месте.
Сгрузил-бы Eclipse или NetBeans для начала.
Придумал-бы себе прикладную задачку... типа "Калькулятор" или "Блокнот" или "Простой текстовый редактор" для начала.
Набрал-бы в google "Java ist auch eine Insel" сгрузил-бы PDF по Java. Например тут: http://winfuture.de/downloadvorschalt%2C2062.html
Книжка эта очень доступная для понимания. С нуля, так сказать. От элементарных вещей, до достаточно продвинутых. Про концепции в Обьекто-ориентированном Программировании типа MVC (Modell-View-Controller) тоже там есть. Там всё понятно даже для самых-пресамых блондинок (я ни на кого не намекаю).
Потом неторопясь, опираясь на этот PDF и прочие сайты по Java стал-бы медленно програмировать скажем этот калькулятор, вникая в основы языка. Рано или поздно, начнёшь разбираться что куда. Во всех этих странных, на первый взгляд "заморочках".
Потом задачку усложнил-бы и сделал-бы сам для себя что-то более прикладное и действительно нужное, но не сложное. И так шаг за шагом, день за днём. Однажды поймаешь себя на мысли, что начало получаться и даже без подсмотра в книжку :-)
Как-бы поступил я сейчас на Вашем месте.
Сгрузил-бы Eclipse или NetBeans для начала.
Придумал-бы себе прикладную задачку... типа "Калькулятор" или "Блокнот" или "Простой текстовый редактор" для начала.
Набрал-бы в google "Java ist auch eine Insel" сгрузил-бы PDF по Java. Например тут: http://winfuture.de/downloadvorschalt%2C2062.html
Книжка эта очень доступная для понимания. С нуля, так сказать. От элементарных вещей, до достаточно продвинутых. Про концепции в Обьекто-ориентированном Программировании типа MVC (Modell-View-Controller) тоже там есть. Там всё понятно даже для самых-пресамых блондинок (я ни на кого не намекаю).
Потом неторопясь, опираясь на этот PDF и прочие сайты по Java стал-бы медленно програмировать скажем этот калькулятор, вникая в основы языка. Рано или поздно, начнёшь разбираться что куда. Во всех этих странных, на первый взгляд "заморочках".
Потом задачку усложнил-бы и сделал-бы сам для себя что-то более прикладное и действительно нужное, но не сложное. И так шаг за шагом, день за днём. Однажды поймаешь себя на мысли, что начало получаться и даже без подсмотра в книжку :-)
NEW 13.08.09 22:48

В ответ на:
не НАДО начинать с С++! это язык для людей, которые уже умеют программировать!
я начинал с ассемблера К580. Сам паял компьютер "Специалист". Потом на Синклере Z80 игрушку написал, не детскую, а солидную, с музыкой в АИгрике. Потом язык С. Учил по Ритчи и Керригану. Потом и по сей день уже лет 10 как - С++. Он мне больше всего нравится. С# знаю слегка, но раздражают деструкторы которые вызваются когда захотят.не НАДО начинать с С++! это язык для людей, которые уже умеют программировать!

Проклят нарушающий межи ближнего своего (Втор.27:17)
NEW 14.08.09 10:54
в ответ anly 13.08.09 22:48
ну дык, я тоже начинал с пайки специалиста и спектрума. но разговор был про то, что для изучения программирования на существующей аппаратной базе, С++ особо не нужен, поскольку он требует знания низкоуровневых деталей, которые в вашем случае были получены из ассемблера и С. Для изучения программирования какой-нибудь Squeak лучше подходит, поскольку учит программировать в терминах предметной области, а не компьютерных внутренностей
NEW 14.08.09 17:27
всё таки в С++ удобней: точно знаешь когда деструктор вызовется. Я на это часто полагаюсь. При этом не надо никакого дополнительного кода писать вокруг использования объекта.
Почему от этого отказались? Только для быстродействия что-ли? Типа не тратить время сейчас на то, что можно сделать потом.
в ответ Murr 14.08.09 01:02
В ответ на:
Они вызываются нормально - когда есть возможность их выполнить. А в большинстве случаев достаточно GC...
Для остального есть IDisposable...
Они вызываются нормально - когда есть возможность их выполнить. А в большинстве случаев достаточно GC...
Для остального есть IDisposable...
всё таки в С++ удобней: точно знаешь когда деструктор вызовется. Я на это часто полагаюсь. При этом не надо никакого дополнительного кода писать вокруг использования объекта.
Почему от этого отказались? Только для быстродействия что-ли? Типа не тратить время сейчас на то, что можно сделать потом.
Проклят нарушающий межи ближнего своего (Втор.27:17)
NEW 14.08.09 18:18
в ответ anly 14.08.09 17:27
всё таки в С++ удобней
-----
Да ну? Ну давай, раскажи как можно, имея только простой указатель на объект,
определить, можно ли вызывать его деструктор...
При этом не надо никакого дополнительного кода
-----
Какой избыточный код требуется в C#? Даже delete не нужен... выйдет из области
существования и будет удален, когда это возможно.
Типа не тратить время сейчас на то, что можно сделать потом.
------
Быстродействие тут не причем. Причем - трудозатраты на написание и обслуживание
кода, манипулирующего объектами... он не всегда элементарный...
-----
Да ну? Ну давай, раскажи как можно, имея только простой указатель на объект,
определить, можно ли вызывать его деструктор...
При этом не надо никакого дополнительного кода
-----
Какой избыточный код требуется в C#? Даже delete не нужен... выйдет из области
существования и будет удален, когда это возможно.
Типа не тратить время сейчас на то, что можно сделать потом.
------
Быстродействие тут не причем. Причем - трудозатраты на написание и обслуживание
кода, манипулирующего объектами... он не всегда элементарный...
NEW 14.08.09 22:09
в ответ Chipolino 14.08.09 21:34
std::has_virtual_destructor<typeof(*ptr)>::value => true/false
-----
А прочитать внимательно? - Там же указано - простой ( plain, dumb ) указатель.
Все остальное - RTL - позволит\непозволит... это же не Паскаль с гарантированным
TObject в базе и виртуальными конструкторами и деструкторами...
А что будет с остальными указателями и ссылками на объект? Автоматом обнулятся?
Или как обычно - повторное освобождение и последующее AV?
-----
А прочитать внимательно? - Там же указано - простой ( plain, dumb ) указатель.
Все остальное - RTL - позволит\непозволит... это же не Паскаль с гарантированным
TObject в базе и виртуальными конструкторами и деструкторами...
А что будет с остальными указателями и ссылками на объект? Автоматом обнулятся?
Или как обычно - повторное освобождение и последующее AV?
NEW 14.08.09 23:50
в ответ Chipolino 14.08.09 23:25
Конечно шарп как язык намного приятнее плюсов ,
-----
Понятно, что не твой пост, но автор поста утверждает, что в Плюсах удобнее.
Для меня - удобнее Шарп. Можно продолжать холивор...
но реализации г. IMHO ;-)
-----
тююю... еще и реализации обсуждать... Я тут днями чуть голову не сломал на ограничителях
типов в шарповых шаблонах... до сих пор не до конца понимаю смысл new()... так что нафиг
все реализации, кроме используемой...
-----
Понятно, что не твой пост, но автор поста утверждает, что в Плюсах удобнее.
Для меня - удобнее Шарп. Можно продолжать холивор...
но реализации г. IMHO ;-)
-----
тююю... еще и реализации обсуждать... Я тут днями чуть голову не сломал на ограничителях
типов в шарповых шаблонах... до сих пор не до конца понимаю смысл new()... так что нафиг
все реализации, кроме используемой...

NEW 14.08.09 23:56
в ответ scorpi_ 14.08.09 23:42
NEW 15.08.09 00:48
пардон, я С# уже давно не трогал, потому даже ключевых слов не помню. Я помню что есть некая возможность определить область при выходе из которой будет вызвана какаято стандартная функция объекта, типа так:
Try
{
Объект а = new Объект
....
}
catch
{
// вот здесь эта функция и будет вызвана
}
Что то вроде, только конечно не try и catch, но я не помню какие ключслова. Вот описание этих блоков типа try и catch - и есть дополнительный труд.
В С++ десктуктор вызовется как только delete вызовешь. Но это мелочь, не слишком важно для меня. Меня больше волнуют объекты созданные в стеке без new.
в с++ их деструктор вызовется при выходе из области видимости.
{
A a;
...
...
// здесь будет вызван a.~a(), т.е. деструктор объекта a, даже если в "..." произошло исключение.
}
Такая фишка нужна не только для освобождения рессурсов (памяти, файлов и т.п.). Смысл - сделать чтото при выходе из области видимости. Вот простенькие классы чтобы не забыть записать переменную или булевкий флажок:
template< class T > class CSetRestore
{
T* m_p;
T m_v;
public:
CSetRestore( T* p, T v ){ m_p = p, m_v = *m_p, *m_p = v; }
~CSetRestore(){ *m_p = m_v; }
};
template< class T, T on, T off > class COnOff
{
T* m_p;
public:
COnOff( T* p ){ m_p = p, *m_p = on; }
~COnOff(){ *m_p = off; }
};
typedef COnOff<bool, true, false> COnOff_bool;
typedef COnOff<bool, false, true> COffOn_bool;
в ответ Murr 14.08.09 18:18
В ответ на:
всё таки в С++ удобней
-----
Да ну? Ну давай, раскажи как можно, имея только простой указатель на объект,
определить, можно ли вызывать его деструктор...
При этом не надо никакого дополнительного кода
-----
Какой избыточный код требуется в C#? Даже delete не нужен... выйдет из области
существования и будет удален, когда это возможно.
всё таки в С++ удобней
-----
Да ну? Ну давай, раскажи как можно, имея только простой указатель на объект,
определить, можно ли вызывать его деструктор...
При этом не надо никакого дополнительного кода
-----
Какой избыточный код требуется в C#? Даже delete не нужен... выйдет из области
существования и будет удален, когда это возможно.
пардон, я С# уже давно не трогал, потому даже ключевых слов не помню. Я помню что есть некая возможность определить область при выходе из которой будет вызвана какаято стандартная функция объекта, типа так:
Try
{
Объект а = new Объект
....
}
catch
{
// вот здесь эта функция и будет вызвана
}
Что то вроде, только конечно не try и catch, но я не помню какие ключслова. Вот описание этих блоков типа try и catch - и есть дополнительный труд.
В С++ десктуктор вызовется как только delete вызовешь. Но это мелочь, не слишком важно для меня. Меня больше волнуют объекты созданные в стеке без new.
в с++ их деструктор вызовется при выходе из области видимости.
{
A a;
...
...
// здесь будет вызван a.~a(), т.е. деструктор объекта a, даже если в "..." произошло исключение.
}
Такая фишка нужна не только для освобождения рессурсов (памяти, файлов и т.п.). Смысл - сделать чтото при выходе из области видимости. Вот простенькие классы чтобы не забыть записать переменную или булевкий флажок:
template< class T > class CSetRestore
{
T* m_p;
T m_v;
public:
CSetRestore( T* p, T v ){ m_p = p, m_v = *m_p, *m_p = v; }
~CSetRestore(){ *m_p = m_v; }
};
template< class T, T on, T off > class COnOff
{
T* m_p;
public:
COnOff( T* p ){ m_p = p, *m_p = on; }
~COnOff(){ *m_p = off; }
};
typedef COnOff<bool, true, false> COnOff_bool;
typedef COnOff<bool, false, true> COffOn_bool;
Проклят нарушающий межи ближнего своего (Втор.27:17)
NEW 15.08.09 11:38
По-существу тебе уже сказали.
По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
В ответ на:
using System;
class C : IDisposable
{
public void UseLimitedResource()
{
Console.WriteLine("Using limited resource...");
}
void IDisposable.Dispose()
{
Console.WriteLine("Disposing limited resource.");
}
}
class Program
{
static void Main()
{
using( C c = new C() )
{
c.UseLimitedResource();
}
Console.WriteLine("Now outside using statement.");
Console.ReadLine();
}
}
По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 15.08.09 11:42
Мурр, концепт смарт-поинтеров заключается не в предоставлении метаинформации об инкапсулируемом объекте (хотя их можно и для этого расширить), а в предоставлении прозрачного доступа к нему.
в ответ Murr 14.08.09 23:56
В ответ на:
То, что ниже smart pointer.
То, что ниже smart pointer.
В ответ на:
std::has_virtual_destructor<typeof(*ptr)>::value => true/false
std::has_virtual_destructor<typeof(*ptr)>::value => true/false
Мурр, концепт смарт-поинтеров заключается не в предоставлении метаинформации об инкапсулируемом объекте (хотя их можно и для этого расширить), а в предоставлении прозрачного доступа к нему.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 15.08.09 11:45
в ответ voxel3d 15.08.09 11:38
В ответ на:
По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
спасибо. видно доп.затраты всего одна строчка. приемлемо.По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
Проклят нарушающий межи ближнего своего (Втор.27:17)
NEW 15.08.09 11:59
в ответ anly 15.08.09 11:45
Мне самое большое неудобство в С#, в сравнении с С++, доставило отсутствие множественного наследования классов. С деструкторами-"недеструкторами из С++" неудобства нет.
Народ ещё жалуется на низкую производительность .Net и GC в частности на больших используемых объёмах памяти, но я не упирался в это ни разу, так и не понял, врут или нет.
Народ ещё жалуется на низкую производительность .Net и GC в частности на больших используемых объёмах памяти, но я не упирался в это ни разу, так и не понял, врут или нет.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 15.08.09 13:28
в ответ anly 15.08.09 00:48
Выше уже писали об уровне владения.
Но суть в том, что даже using не является обязательным - объект будет удален GC когда это будет возможно. От программиста вообще не требуется об этом заботится - создал, использовал и забыл.
В Шарпе объекты без new не создаются. Есть статические объекты, доступ к конструкторам и методам которых возможен без new, но и об них корректно заботится GC.
Но суть в том, что даже using не является обязательным - объект будет удален GC когда это будет возможно. От программиста вообще не требуется об этом заботится - создал, использовал и забыл.
В Шарпе объекты без new не создаются. Есть статические объекты, доступ к конструкторам и методам которых возможен без new, но и об них корректно заботится GC.
NEW 15.08.09 13:58
Это работает в том случае, если компайлер предоставляет поддержку. Типа так: http://msdn.microsoft.com/en-us/library/ms177194%28VS.80%29.aspx или так http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html
При чём тут два указателя - мне совершенно непонятно.
в ответ Murr 15.08.09 13:35
В ответ на:
Хммм... понимаю, что на смарт-поинтере это работает.
Но как это должно работать на двух простых указателях на один и тот же объект - не представляю.
Хммм... понимаю, что на смарт-поинтере это работает.
Но как это должно работать на двух простых указателях на один и тот же объект - не представляю.
Это работает в том случае, если компайлер предоставляет поддержку. Типа так: http://msdn.microsoft.com/en-us/library/ms177194%28VS.80%29.aspx или так http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html
При чём тут два указателя - мне совершенно непонятно.
NEW 15.08.09 14:22
в ответ scorpi_ 15.08.09 13:58
При чём тут два указателя - мне совершенно непонятно.
-----
При том, что "удобство" С++ деструктора сводится на нет при необходимости
отслеживать количество существующих указателей на объект.
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает
Шарп с Плюсами в .NET...
Гнусню версию пока не смотрел.
-----
При том, что "удобство" С++ деструктора сводится на нет при необходимости
отслеживать количество существующих указателей на объект.
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает
Шарп с Плюсами в .NET...
Гнусню версию пока не смотрел.
NEW 15.08.09 15:11
shared_ptr/weak_ptr в помощь.
А если повнимательнее прочитать?
в ответ Murr 15.08.09 14:22
В ответ на:
При том, что "удобство" С++ деструктора сводится на нет при необходимости отслеживать количество существующих указателей на объект.
При том, что "удобство" С++ деструктора сводится на нет при необходимости отслеживать количество существующих указателей на объект.
shared_ptr/weak_ptr в помощь.
В ответ на:
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает Шарп с Плюсами в .NET...
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает Шарп с Плюсами в .NET...
А если повнимательнее прочитать?
NEW 15.08.09 15:39
в ответ scorpi_ 15.08.09 15:11
shared_ptr/weak_ptr в помощь.
-----
да, разумеется, но не plain/dumb. Грубо говоря - любые обертки, но не стандартный (void *);.
В Шарпе же с этим проблем вообще нет - GC найдет и удалит мусор... издержки - да, но сейчас
рассматриваем с точки зрения удобства.
А если повнимательнее прочитать?
-----
Может позднее. Сейчас голова слишком тяжелая для новых концептов.
-----
да, разумеется, но не plain/dumb. Грубо говоря - любые обертки, но не стандартный (void *);.
В Шарпе же с этим проблем вообще нет - GC найдет и удалит мусор... издержки - да, но сейчас
рассматриваем с точки зрения удобства.
А если повнимательнее прочитать?
-----
Может позднее. Сейчас голова слишком тяжелая для новых концептов.