Здесь больше нет рекламы. Но могла бы быть, могла.


Ответ

Имя:
E-mail:
Тема:
Иконка сообщения:

подсказка: нажмите alt+s для отправки или alt+p для предварительного просмотра сообщения


Сообщения в этой теме

Автор: Manveru
« : 11/12/2006, 13:27:46 »

Ну, на самом деле, с Java нас конкретно обманывают. :) Никакая она, по сути, не кроссплатформенная - VJM всё равно пишется на нативных функциях. :)
Вот если обязать разработчиков любой операционной системы реализовывать встроенную VJM - тогда, конечно, это будет истинная кроссплатформенность.
Автор: Ellome
« : 11/12/2006, 13:04:11 »

Паскаль и создавался как учебный язык, ни на что большее Вирт не замахивался. У нас в институте первый курс мехмата изучает таки Паскаль, а вот начиная со второго - С, С++ и ООП применительно к нему.
Понятно, что Паскаль создавался, как учебный язык. Но учиться вполне можно сразу на С/C++, который в тех пределах, в которых обычно дают Паскаль в школе или на 1-м курсе института не сильно отличается от С/C++. Не вижу каких-то особенных педагогических достоинств в том, чтобы сначала изучать Паскаль, а потом С/C++.

Имхо, шаблоны С++ - вещь зело полезная при написании относительно небольших программ
А уж какая это полезная вещь при разработке больших проектов! ;D

Развитие железа стимулирует развитие программ? Опять же имхо, в корне неверный подход, из-за этого мы и имеем сейчас Висту (например).
Любое развитие языков программирования всегда чем-то обусловлено. А не так, что появились новые ресурсы - так давай же их чем-нибудь займем. Переход от ассемблера к языкам выского уровня был продиктован прежде всего существенным упрощением и ускорением разработки программ. Нынешний же переход от компилируемых языков типа C/C++ к интерпретируемым Java-подобным идет под знаменами великой идеи кросплатформенности программ.
Автор: [MuTPAHguP]
« : 11/12/2006, 10:40:27 »

Развитие железа стимулирует развитие программ? Опять же имхо, в корне неверный подход, из-за этого мы и имеем сейчас Висту (например).
Вот-вот. За производительностью надо следить, но если она не критична, то без фанатизма.
А сколько бы не было памяти и ресурсов процессора - менеждеры придумают, чем и как занять всё ;)
Автор: Аранэль
« : 09/12/2006, 18:47:47 »

Паскаль и создавался как учебный язык, ни на что большее Вирт не замахивался. У нас в институте первый курс мехмата изучает таки Паскаль, а вот начиная со второго - С, С++ и ООП применительно к нему.
Имхо, шаблоны С++ - вещь зело полезная при написании относительно небольших программ
Горячие же споры на тему "Ассемблер vs языки высокого уровня" затихли еще в 1970-х годах... При нынешней производительности компьютеров и размерах памяти они тем более неактуальны.
Развитие железа стимулирует развитие программ? Опять же имхо, в корне неверный подход, из-за этого мы и имеем сейчас Висту (например).
Автор: Ellome
« : 29/11/2006, 18:22:15 »

Цитировать не буду. Тезисно.

По поводу вопросов сугубо по языку, коли таковые возникнут: Согласен. Я просто говорил, что знание только языка - это очень мало. Более того, как показывает практика, вопросы именно по языку чаще всего возникают в одной и следующих ситуаций:
- на этапе изучения языка или подготовке к какому-нибудь экзамену на сертификат;
- при "копании" в чужом коде иногда встречаются конструкции, которые ты просто редко используешь;
- когда тебе нужны какие-нибудь инструменты языка, которые редко используешь или вовсе не сталкивался с ними.
В большинстве же случаев, как правило, возникают вопросы не по языку, а по библиотекам или технологиям программирования.

По поводу Паскаля и первокурсников: Так уж получилось, что первым языком программирования, который изучает нынешний среднестатистический школьник или студент, оказывается именно Паскаль (что забавно - до сих пор в виде DOS-овского TurboPascal'я). Для многих из "моего" и чуть более старшего поколения первым языком был Бейсик УК-НЦ, для еще более старшего поколения - Фортран. Естественно, пишешь на том языке, которым лучше владеешь.

По поводу размера исполняемого бинарного файла: На ассемблере можно написать все что угодно. Причем при хорошем подходе к оптимизации кода такие программы будут самыми маленькими и наиболее эффективными. Но увы, трудоемкость программирования на ассемблере даже довольно простых вещей слишком высока. Большая часть кода современных операционных систем написаны на С/C++. Что уж говорить о пользовательских приложениях. Ассемблер и сейчас, конечно, используется. Но в очень специфических местах. Горячие же споры на тему "Ассемблер vs языки высокого уровня" затихли еще в 1970-х годах... При нынешней производительности компьютеров и размерах памяти они тем более неактуальны. Вот другое дело споры "компилируемый код на C/C++ vs интерпретируемый на Java" - по сути тот же спор, но уже на новом витке. ;) По поводу портируемости - кстати, есть вполне успешные решения написания портируемого кода и на компилируемом языке. Характерный пример - библиотека Qt. Кроме того, рекомендации придерживаться стандарта С++ тоже никто не отменял (если бы еще разработчики компиляторов к этим рекомендациям прислушивались бы - но это уж совсем тонкости пошли :))

По поводу "сборки мусора": Тут все зависит от того, к какому стилю программирования привык человек. Я привык полностью сам контролировать все ресурсы, которыми располагаю - захватывать их и освобождать. Поэтому когда это делают за меня, мне как-то неуютно и я как-то инстинктивно внутренне не доверяю этой сборке мусора. Однако же те, кто привык работать на более высоком уровне, часто даже не умеют следить за используемыми ресурсами и тем паче не думают об их освобождении. Упаси Эру, если такому программисту приходится переходить язык более низкого уровня. Без слез смотреть невозможно. И на самом деле очень жалко человека.

По поводу шаблонов с С++ и STL: Шаблоны - штука специфичная, но часто полезная. Хотя не могу сказать, что часто ими пользуюсь (в смысле - пишу свои шаблоны). Действительно по болшому счету сталкиваюсь с ними в основном когда пользуюсь STL-ем А вот STL на шаблонах построена. И в этом ее великая идея. Пример со строкой не очень корректен. Свою строку действительно не так уж сложно реализовать на char*. Однако же не строками едиными STL заканчивается. А вот другие STL-ные контейнеры гораздо более сложные. Особенно если вспомнить, что в качестве элементов того же вектора могут быть объекты абсолютно любого типа - от обычных int или char до сложных классов или других контейнеров. И со всеми ними можно управляться абсолютно единообразным образом. Вот тут и есть вся прелесть. Кроме того - STL, это не только контейнеры. Это еще и алгоритмы! Причем алгоритмы тоже могут быть применены к элементам любого типа. И это достигается опять же за счет шаблонов.

И еще в сторону интерпретируемых языков: Мне в таких языках очень не хватает указателей, возможности работы напрямую с памятью и прочих низкоуровневых штук. В свое время это мне создавало значительные трудности в проектах на Python'е.
Автор: Lamyra
« : 29/11/2006, 04:11:52 »

*делает мечтательное лицо* В школе C++?
Таки да, правда, только для очень желающих с математического факультета. (У нас факультеты были, правда, предметы различались где-то на 15%)
Автор: Miketsukami
« : 28/11/2006, 21:09:43 »

Я учу Pascal в школе, второй год изучая C++. После C++ Pascal кажется уродцем каким-то.
Автор: sisoid
« : 28/11/2006, 18:59:44 »

Тогда почему 80% первокурсников на вступительной контрольной по программированию пишут ее на Паскале (хотя я специально предлагаю при возможности выбрать другой язык)?
Учили в школе? :)  Я вот, если б мне предложили, тоже не рискнул бы писать контрольную на незнакомом языке. Да и не так плох Паскаль, как его малюют. ;)

  Для сравнения - две простых программы, с одинаковым GUI, одна на Delphi, другая написана ручками на Assembler, с прямыми вызовами WinAPI. Делфи-программа весит 170Кб, асмовская - 3Кб. Почувствуйте разницу.
Писанный мной на Делфи keygen для Тв-тюнера весит 17 килобайт, из которых 5 - красивая иконка. :) Это, конечно, не 3Кб, но при наличии отсутствия асмовского компилятора - вполне себе альтернатива. :)
Автор: Mrrl
« : 28/11/2006, 12:06:56 »

Начинается оффтопик... Ещё одну, что ли, открыть?
Mrrl, Pascal - не выдерживает конкуренции ни с одним языком - ни с шарпом, ни с плюсами. О Яве и говорить нечего. То есть, сам язык-то, может, и неплох, но вот реализация в Delphi... Ходячее извращение.
Тогда почему 80% первокурсников на вступительной контрольной по программированию пишут ее на Паскале (хотя я специально предлагаю при возможности выбрать другой язык)?

  Для сравнения - две простых программы, с одинаковым GUI, одна на Delphi, другая написана ручками на Assembler, с прямыми вызовами WinAPI. Делфи-программа весит 170Кб, асмовская - 3Кб. Почувствуйте разницу.
Имеется в виду объем исходного текста? То, что бинарный файл на языке высокого уровня получится больше, не удивительно. Особенно, если на Паскале использовалась какая-нибудь мощная оконная библиотека.

  Templates в C++ нужны хотя бы из-за STL. Когда не приходится писать заново каждый раз списки и очереди - это так радует! Я оценил это, когда воспользовался аналогом STL в Java - Сollection.
Не понимаю я этого подхода. Collection это замечательная библиотека, но она реализована через интерфейсы, и не требует создания индивидуального кода для каждого класса. Так и в C можно было написать списки один раз, реализовав их через char*. Правда, потом все равно оказывалось, что удобнее встраивать указатель во вновь создаваемые классы.

  Сборка мусора... Ну да, удобно, с одной стороны. С другой - мне, например, хотелось бы, чтобы была и сборка мусора, и возможность самому чистить за собой. Потому что даже на примере IDE Netbeans видно, как выделение памяти всё увеличивается и увеличивается  - несмотря на то, что запущенные процессы отладки убиваются, файлы закрываются, да и вообще...
Есть вызов GC.Collect(); - довольно сильно помогает.

  Reflection предоставляет мощное средство для подгрузки плагинов Run-Time. И, соответственно, выгрузки.
Действительно.

  Holy War C++ vs Java не получится точно, пока не создан компилятор под Java и средства системного программирования для неё. Сдается мне, что это не будет сделано никогда - это нарушает один из основных принципов Java - портируемость. Не знаю, что там с C#. По-моему, то же самое.
Зависит от целей. Тем, для кого критична эффективность, нужны и C++ и ассемблер. А если важнее сборка мусора и динамическая проверка типа, то язык следующего уровня может оказаться пригоднее. Если у меня не хватает головы, чтобы написать проект на C#, то на C++ я его и подавно не напишу.
Автор: Manveru
« : 28/11/2006, 11:43:27 »

Начинается оффтопик... Ещё одну, что ли, открыть?
Mrrl, Pascal - не выдерживает конкуренции ни с одним языком - ни с шарпом, ни с плюсами. О Яве и говорить нечего. То есть, сам язык-то, может, и неплох, но вот реализация в Delphi... Ходячее извращение.
  Для сравнения - две простых программы, с одинаковым GUI, одна на Delphi, другая написана ручками на Assembler, с прямыми вызовами WinAPI. Делфи-программа весит 170Кб, асмовская - 3Кб. Почувствуйте разницу.
  Templates в C++ нужны хотя бы из-за STL. Когда не приходится писать заново каждый раз списки и очереди - это так радует! Я оценил это, когда воспользовался аналогом STL в Java - Сollection.
  Сборка мусора... Ну да, удобно, с одной стороны. С другой - мне, например, хотелось бы, чтобы была и сборка мусора, и возможность самому чистить за собой. Потому что даже на примере IDE Netbeans видно, как выделение памяти всё увеличивается и увеличивается  - несмотря на то, что запущенные процессы отладки убиваются, файлы закрываются, да и вообще...
  Reflection предоставляет мощное средство для подгрузки плагинов Run-Time. И, соответственно, выгрузки.
  Holy War C++ vs Java не получится точно, пока не создан компилятор под Java и средства системного программирования для неё. Сдается мне, что это не будет сделано никогда - это нарушает один из основных принципов Java - портируемость. Не знаю, что там с C#. По-моему, то же самое.
  Тип Object - это сильно, согласен. Впрочем, в плюсах есть аналог - тип указателя void. Всё равно потом кастить приходиться - как и в Java. Но, конечно, wait(), notify(), class() - это неподражаемо.
 
Автор: Mrrl
« : 28/11/2006, 09:26:02 »

Может устроим Holy War  ;D ;)  ?
C# vs Java?
А также C++ vs Pascal. И особенно, (C# & Java) vs (C++ & Pascal).

В C# для меня важнее сборка мусора и тип object. А большого смысла в Reflection я так и не понял, как и templates в C++.
Автор: Manveru
« : 28/11/2006, 01:57:22 »

Ellome, если я буду задавать вопрос по Java, вряд ли он будет касаться предметной области. А Reflection - она и в Африке Reflection, и почти всегда нет разницы, для чего она применяется. Основной вопрос - как.
Автор: Ellome
« : 28/11/2006, 01:34:14 »


Хотя, конечно, используемый язык, часто является показателем того, чем ориентировочно занимается человек. Особенно, если это языки типа PHP, Java или C# :)

И чем же (в этих случаях)?
Вообще я, наверное, немного погорячился с такими глобальными обобщениями. PHP используется преимущественно в Web-программировании и более конкретно - в ПО серверной части. А вот про Java и C#, пожалуй, можно сказать только то, что речь идет о чем-то кросплатформенном и высокоуровневом. Но предметная область, вообще говоря, может быть довольно широкой. Так что, наверное, беру свои слова назад.
Автор: Manveru
« : 28/11/2006, 00:50:27 »


Хотя, конечно, используемый язык, часто является показателем того, чем ориентировочно занимается человек. Особенно, если это языки типа PHP, Java или C# :)

И чем же (в этих случаях)?
Ну, под Java, например, вообще глубоко наплевать на железо и платформу. Поэтому если человек знает Java, то он знает, как писать на ней под любой платформой.
Автор: Mrrl
« : 28/11/2006, 00:26:02 »


Хотя, конечно, используемый язык, часто является показателем того, чем ориентировочно занимается человек. Особенно, если это языки типа PHP, Java или C# :)

И чем же (в этих случаях)?