OberonCore https://forum.oberoncore.ru/ |
|
Подскажите какой язык программирования выбрать? https://forum.oberoncore.ru/viewtopic.php?f=35&t=1391 |
Страница 3 из 5 |
Автор: | Димыч [ Суббота, 14 Март, 2009 00:16 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Пока, я остановился на Pow! Насколько я понял сейчас это брошенный проект, нужно его немного допилить до приличной среды. Также пристально смотрю в сторону Bluebottle. Там подкупает возможность закрыть ещё целый ряд предметов, а главное - активные объекты. Я сильно поостыл по поводу "допилить". Тут надо не допиливать, а пилить и пилить...Несмотря на простоту языка, и простоту среды работа по доводке до уровня Delphi или VS - тот еще труд. Но делать его надо. Madzi писал(а): Возможность переломить ситуацию я вижу только в одном. Как только появится нормальная среда (инструмент), появятся заинтересованные студенты, соответственно проекты можно будет вести не только одному... думаю дальше вы меня понимаете. Я потому и интересовался реакцией заказчиков.... А может наоборот - заинтересовать студентов, начать пилить, а там глядишь и другие подтянутся?Madzi писал(а): Критерии я писал выше. Оберон мне понравился из-за своей простоты и потенциальной простоты обучения. У меня два университетских курса: "Компьютерная графика" и "Технологии программирования"; где мне хотелось бы применить данный инструментарий. Я веду работы по переводу AGG на Оберон (XDS, BB). Сейчас работа приостановлена из-за GSoC и перевода на Линукс. Но, может быть вы студентам своим предложите работу над библиотекой? Там столько всего интересного, связанного с графикой! Фактически вся низкоуровневая работа, начиная от постановки точки в графическом буфере до формирования векторных путей с отсечением. И это все можно потрогать, а не только OpenGL заставлять рисовать (кстати, результат в 2D зачастую визуально лучше чем у OpenGL).Начало положено, и серьезное. Скелет переведен, надо наращивать мясо (фильтры, цветовые пространства и проч.) |
Автор: | Info21 [ Суббота, 14 Март, 2009 02:19 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Sergo писал(а): Madzi писал(а): ... заказчика не интересуют исходные коды. У Оберона есть то преимущество, что программы на нем легко транслируются в более распространенные языки.Sergo писал(а): ... Можно на стадии макетирования использовать оберон-систему (они для этой цели отлично подходят), а затем транслировать ... И эта схема отлично работает. Те же Excelsior, которые долго внутри себя на своем же Обероне работали.(Кстати, с ехидством сообщу, что в обоих случаях, когда мои "заказчики" настаивали на других target-языках -- С++ и Java, -- полноценного сопровождения они не могут обеспечить, причем -- и в этом забавный парадокс -- из-за текучести своих кадров.) Sergo писал(а): Info21 писал(а): Работать много на чем придется в процессе жизни. У молодежи горизонт планирования один год. Точно. Сразу вспоминается судьба студентов-физиков 60-х (большая часть пошла в ...Но что со своим горизонтом планирования молодежь пребольно ошибается гораздо чаще, чем что-то выигрывает -- это факт. Разменная монета прогресса. Или "прогресса". |
Автор: | Info21 [ Суббота, 14 Март, 2009 02:22 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Александр Ильин писал(а): ... Зато я потратил время с пользой: почитал "Compiler Construction" ... Вот. А говорят, зачем книги читать. Чтобы стать Chief Technical Officer
|
Автор: | Madzi [ Суббота, 14 Март, 2009 02:26 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Димыч писал(а): Я веду работы по переводу AGG на Оберон (XDS, BB). Сейчас работа приостановлена из-за GSoC и перевода на Линукс. Но, может быть вы студентам своим предложите работу над библиотекой? Там столько всего интересного, связанного с графикой! Фактически вся низкоуровневая работа, начиная от постановки точки в графическом буфере до формирования векторных путей с отсечением. И это все можно потрогать, а не только OpenGL заставлять рисовать (кстати, результат в 2D зачастую визуально лучше чем у OpenGL). Начало положено, и серьезное. Скелет переведен, надо наращивать мясо (фильтры, цветовые пространства и проч.) Да, это очень интересное направление. Возможно удастся заинтересовать кого-нибудь. |
Автор: | Валерий Лаптев [ Вторник, 31 Март, 2009 08:48 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Димыч писал(а): Я веду работы по переводу AGG на Оберон (XDS, BB). Сейчас работа приостановлена из-за GSoC и перевода на Линукс. Но, может быть вы студентам своим предложите работу над библиотекой? Там столько всего интересного, связанного с графикой! Фактически вся низкоуровневая работа, начиная от постановки точки в графическом буфере до формирования векторных путей с отсечением. И это все можно потрогать, а не только OpenGL заставлять рисовать (кстати, результат в 2D зачастую визуально лучше чем у OpenGL). Начало положено, и серьезное. Скелет переведен, надо наращивать мясо (фильтры, цветовые пространства и проч.) Да, это очень интересное направление. Возможно удастся заинтересовать кого-нибудь. Я думаю, для студентов можно подобрать несколько ответов: 1. В стандарте обучения никакой конкретно язык не оговаривается. Просто язык высокого уровня. 2. То, что востребовано сейчас, может исчезнуть через несколько лет - см. в сторону PL/I, например. Это самый яркий пример - все и всё на нем писали. И где он теперь? 3. Создатели гугла вообще не изучали ни додиез, ни Яву. А учились программировать на Схеме. А теперь используют Питон. Поэтому студентов можно просто "заткнуть": учиться будем не языку, а программированию. А программировать вы должны уметь независимо от языка. Более того, я ББ сейчас смотрю - чем дальше "в лес", тем больше это мне нравится. Учитывая отсутствие пользовательского управления памятью и рефлексию - это гораздо лучше С++. А модули-компоненты, присоединенные процедуры, вообще минималистский дух - это гораздо лучше Додиеза и Явы. Думаю ввести с будущего обучение программированию пока для непрограммистских специальностей. Им все равно, на чем работать, а ББ это дело значительно облегчает. А потом и программистов буду обучать. |
Автор: | Valery Solovey [ Вторник, 31 Март, 2009 10:37 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Reflection есть, просто им занимается модуль не с именем Reflection, а с именем Meta. Но "подопытным" это говорить не обязательно, нужно только учитывать, что кое-где в каркасе он используется и неплохо бы это дело подчистить, если уж он так мешает. |
Автор: | Валерий Лаптев [ Вторник, 31 Март, 2009 12:36 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Valery Solovey писал(а): Reflection есть, просто им занимается модуль не с именем Reflection, а с именем Meta. Но "подопытным" это говорить не обязательно, нужно только учитывать, что кое-где в каркасе он используется и неплохо бы это дело подчистить, если уж он так мешает. Спасибо, я знаю. Просто надо было написать: отсутствие ручного управления памятью и наличие рефлексии. Через некоторое время попытаюсь написать xUnit для ББ. Пока осознаю проблемы и паттерны xUnit на более привычном мне в настоящее время С++ |
Автор: | Иван Кузьмицкий [ Вторник, 31 Март, 2009 14:38 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Нельзя ли популярно рассказать, что за зверь такой - xUnit? |
Автор: | Валерий Лаптев [ Вторник, 31 Март, 2009 16:33 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Иван Кузьмицкий писал(а): Нельзя ли популярно рассказать, что за зверь такой - xUnit? О-о-о! Это - удивительная вещь. После того, как узнаешь о принципах ее построения, хочется воскликнуть: блин! Это же элементарно! Как сказал Мартин Фаулер: Никогда еще столь малый объем кода не был столь полезен программистам. Но почему-то раньше до этого не додумались. xUnit - это семейство систем модульного тестирования. Существуют для всех языков (кроме оберона ) Родилось в недрах экстремального программирования. Я впервые прочитал у Мартина Фаулера в книге "Рефакторинг". Потом - в книге Кента Бека "Экстремальное программирование. Разработка через тестирование" Но сейчас есть уже фундаментальный труд Месароша "Шаблоны рефакторинга xUnit". Основная идея состоит в том, чтобы создать каркас для тестирования модуля. В каркас добавляются тестируемый модуль и тестирующий модуль. Тестирующий модуль определяется как наследник от абстрактного базового класса. В основе реализации на С++ лежит паттерн Шаблонный метод: в тестирующем классе переопределяется чистый виртуальный = абстрактный - метод run. Собственно в нем и определяются все тестирующие действия по отношению к тестируемому модулю (классу) с проверкой результатов посредством assertов. Все это собирается в исполняемый модуль и запускается. Результат работы: лог по пройденным и не пройденным тестам. Важно, что при невыполнении условий в ассерте аварийной остановки не происходит, а тесты продолжают выполняться. При наличии рефлексии возможна более существенная автоматизация. Например в системе nUnit для Visual Studio реализован framework, позволяющий не только запускать тесты и смотреть результаты, но и показывающий полную структуру тестирующих и тестируемых классов. То, что я уже успел узнать о ББ, дает мне основания думать, что в среде ББ можно реализовать подобную систему с гораздо большими удобствами, чем, например, в CppUnit. |
Автор: | Евгений Темиргалеев [ Вторник, 31 Март, 2009 20:54 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Валерий Лаптев писал(а): Собственно в нем и определяются все тестирующие действия по отношению к тестируемому модулю (классу) с проверкой результатов посредством assertов. А эти тестирующие действия автоматом генерятся или руками?И чего каркас делает? Попробую предположить: поддерживает лог и особые ассерты, которые в run, ...? |
Автор: | Madzi [ Вторник, 31 Март, 2009 21:22 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Мне больше интересно для чего вообще тестирование нужно, если правильно писать (мелкими процедурами, всё по отдельным модулям, математически выверено аки Дейкстра завещал)? Ну для Сишника понятно, у них по дефоулту на строчку кода три ошибки в бонусе, а оберонам-то зачем? |
Автор: | Vlad [ Вторник, 31 Март, 2009 22:38 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Madzi писал(а): Мне больше интересно для чего вообще тестирование нужно, если правильно писать Ну вы и вопросы задаете... Неудобно даже... Madzi писал(а): (мелкими процедурами, всё по отдельным модулям, математически выверено аки Дейкстра завещал)? Блин, да поймите вы, программирование - это не только математика. Если бы все так было просто... Madzi писал(а): Ну для Сишника понятно, у них по дефоулту на строчку кода три ошибки в бонусе, а оберонам-то зачем? Дайте угадаю. У вас понятие о тестировании ограничивается расстановкой ASSERT'ов? Впрочем даже в этом смысле разницы с сями никакой нет... |
Автор: | igor [ Среда, 01 Апрель, 2009 08:20 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Увы, тестирование не всегда помогает. Часто сложность бывает даже не в том, чтобы технически обеспечить тестирование (например, написать для этого вспомогательный модуль), а в том, чтобы определить все наборы входных условий, которые подлежат проверке. Сама по себе эта задача не тривиальна, но и это ещё не всё. В сложных системах кортеж всех входных условий легко может привести к комбинаторному взрыву вариантов и тестирование теряет свой смысл, так как обходится слишком дорогой ценой. Выход из этого казалось бы тупика давно найден: доказательное программирование. |
Автор: | Madzi [ Среда, 01 Апрель, 2009 10:17 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Vlad писал(а): Madzi писал(а): Мне больше интересно для чего вообще тестирование нужно, если правильно писать Ну вы и вопросы задаете... Неудобно даже... Что поделать, я любопытный... Vlad писал(а): Madzi писал(а): (мелкими процедурами, всё по отдельным модулям, математически выверено аки Дейкстра завещал)? Блин, да поймите вы, программирование - это не только математика. Если бы все так было просто... Да, это ещё и физика, только вот другие этого понять не могут и удивляются почему это у них программы не работают когда они киллометры с килограммами мешают (образно конечно). Но математике всё-таки больше, в том числе дискретной и мат.логики, просто "программисты" считают достаточным знание языка программирования, и не хотят загружать себя "лишними" знаниями. Vlad писал(а): Madzi писал(а): Ну для Сишника понятно, у них по дефоулту на строчку кода три ошибки в бонусе, а оберонам-то зачем? Дайте угадаю. У вас понятие о тестировании ограничивается расстановкой ASSERT'ов? Впрочем даже в этом смысле разницы с сями никакой нет... У меня понятия о тестировании самые разнообразные, поскольку я участвовал в разных проектах от академических до индустриальных, но лично я предпочитаю тестировать программу на бумаге, до того как она будет реализована в языке на машине, а затем, следует проверка правильности набивки. При этом программа в 99% работает правильно с первого раза, сразу после набивки. и лишь 1% когда требуется некотороая переработка (было когда оказались ошибки в спецификациях в документации). |
Автор: | Info21 [ Среда, 01 Апрель, 2009 11:04 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Евгений Темиргалеев писал(а): А эти тестирующие действия автоматом генерятся или руками? Да, мне тоже любопытно, намеком хотя бы. Но понятным
И чего каркас делает? Попробую предположить: поддерживает лог и особые ассерты, которые в run, ...? |
Автор: | Сергей Губанов [ Среда, 01 Апрель, 2009 11:14 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Такое формальное юнит тестирование является формальной отмазой программистов перед формальным требованием мэнеджеров (ничего в программировании не понимающих) такое тестирование иметь. Мэнеджер услышал модное слово "юнит тесты". Издал приказ - внедрить. Остальное его не заботит. Потом пришёл проконтролировать, спрашивает, мол: - Ну как, осуществляете юнит тестирование? Программисты отвечают: - Кааанешшшна, вот видите у нас даже есть класс который называется UnitTest. Менеджер в ответ: - А, ну хорошо, молодцы, так держать. |
Автор: | Иван Кузьмицкий [ Среда, 01 Апрель, 2009 12:37 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Автоматизированное тестирование в ряде случаев позволяет радикально сократить время на проверку работоспособности программы. Например, если что-то изменилось в подсистеме, то необходимо проверить все связанные с ней компоненты. А это долго и нудно, хотя такую работу сделать надо - чтобы не перекладывать момент определения глюка на рабочий процесс. Только вот как это автоматизировать - вопрос. |
Автор: | Валерий Лаптев [ Среда, 01 Апрель, 2009 12:41 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Евгений Темиргалеев писал(а): Валерий Лаптев писал(а): Собственно в нем и определяются все тестирующие действия по отношению к тестируемому модулю (классу) с проверкой результатов посредством assertов. А эти тестирующие действия автоматом генерятся или руками?И чего каркас делает? Попробую предположить: поддерживает лог и особые ассерты, которые в run, ...? 1. Эта весчь родилась в недрах экстремального программирования. А там главный принцип: сначала тесты, потом код. Таким образом, разработчик, которому нужно разработать некий модуль-класс сначала пишет, как нужно использовать новый модуль-класс. То есть вызовы методов модуля-класса. Приходится продумывать сначала интерфейс. Эти вызовы методов и являются тестовыми запусками в тестирующем классе. Вначале, естественно, тесты не проходят. По мере наполнения тестируемого класса-метода тесты из разряда непройденных переходят в разряд пройденных. 2. Набор разнообразных ассертов реализуется в каркасе. Может, в виде набора функций. Или в виде методов базового тестирующего класса. Поэтому программист ассерты сразу использует. Более того, реализуются и специальные средства, чтобы можно было тестировать наличие и отсутствие исключений. 3. Принцип экстремального программирования - двигаться МАЛЕНЬКИМИ шагами. Так что ничего нового тут не открыто. И несморя на этот основополагающий принцип, несмортя на то, что авторы экстремального программирования - просто титаны программирования (Кент Бек, Мартин Фаулер, Эрих Гамма - кто не знает), тем не менее эти титаны посчитали, что им НУЖНА система модульного тестирования. Для пущей уверенности в правильности реализации. Поэтому поступать по принципу "не читал, но все равно - фигня" - по меньшей мере глупо. 4. Система модульного тестирования предназначена только для того, для чего предназначена - тестирования отдельных модулей-классов. Другие виды тестирования - другие принципы и другие инструменты. xUnit - это небольшая автоматизация для отдельного модуля-класса, создаваемого отдельным программистом, а не для проекта в целом. И не для интеграционнрого тестирования и не для тестирования интерфейсов. Для этого другие инструменты: WinRunnerб например. 5. Никакое доказательство не докажет правильность программы, если она решает не совсем ту задачу, которую требуется решить. Во-вторых, для доказательства достаточно сложной программы требуется времени не меньше, чем для написания и тестирования. Кроме того, насколько я знаю, не существует даже подходов к доказательству "правильного" поведения программы в "неправильных" ситуациях. Например, при возникновении исключений. |
Автор: | Info21 [ Среда, 01 Апрель, 2009 13:25 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Все правы Конечно, test-driven development -- очередное открытие старого инженерного колеса программерами. Подаваемое, как обычно, как сугубое откровение. А как же. Или воспринимаемое как откровение -- и тут странная параллель между массами молодых программеров и массами революционных курсисток-энтуазисток. (Это к социологии сферы ИТ.) Пара замечаний. Любое формальное доказательство очень даже чревато ошибками в силу своей занудности. Живой организм как ни старается, но всё-таки не терпит занудности. Тестирование как дополнение к систематическим методам программироваия -- поэтому необходимо. Но еще необходимее -- подвергать молодые организмы жестокому обучению систематическим методам -- желательно до того, как они корень "bug" в любом варианте услышат. Ну, и, конечно, другое дело, что когда в дело включаются манагеры. Тут любой смысл начинает вырождаться в свою противоположность. |
Автор: | Madzi [ Среда, 01 Апрель, 2009 13:31 ] |
Заголовок сообщения: | Re: Подскажите какой язык программирования выбрать? |
Валерий Лаптев писал(а): А там главный принцип: сначала тесты, потом код. Вообще-то, правильно сначала алгоритм, потом код, а потом уж тесты (если очень хочется). Валерий Лаптев писал(а): Таким образом, разработчик, которому нужно разработать некий модуль-класс сначала пишет, как нужно использовать новый модуль-класс. То есть вызовы методов модуля-класса. Приходится продумывать сначала интерфейс. Эти вызовы методов и являются тестовыми запусками в тестирующем классе. Вначале, естественно, тесты не проходят. По мере наполнения тестируемого класса-метода тесты из разряда непройденных переходят в разряд пройденных. Эта классическая схема разработки ПО "сверху-вниз", и такие модули всегда носили название модулей-заглушек (аж с 70х годов прошлого века). Значит теперь заглушка гордо именуется тестом Валерий Лаптев писал(а): 3. Принцип экстремального программирования - двигаться МАЛЕНЬКИМИ шагами. Так что ничего нового тут не открыто. Вас не смущает слово ЭКСТРЕМАЛЬНОГО ? Меня лично смущает. Даже когда я им занимаюсь в виду необходимости Валерий Лаптев писал(а): Поэтому поступать по принципу "не читал, но все равно - фигня" - по меньшей мере глупо. Если это в мой огород камень, то не по адресу. Ибо читал, учил студентов и сам применял на практике в составе небольших и больших команд, но всё равно считаю - фигня. Валерий Лаптев писал(а): 5. Никакое доказательство не докажет правильность программы, если она решает не совсем ту задачу, которую требуется решить. Это называется несоответствие ТЗ. И доказвать что-либо в данном случае глупо. Валерий Лаптев писал(а): Во-вторых, для доказательства достаточно сложной программы требуется времени не меньше, чем для написания и тестирования. Вот это уже из разряда "не читал, но знаю...", потому что программа доказывается ДО реализации на языке, и к моменту набития кода уже доказана. в каждой своей части. не зависимо от сложности программы. Валерий Лаптев писал(а): Кроме того, насколько я знаю, не существует даже подходов к доказательству "правильного" поведения программы в "неправильных" ситуациях. Например, при возникновении исключений. читайте классиков. А ещё представте себе кошмар, существуют языки в которых нет поддержки исключений. И на них даже программы пишут, и сложные. И даже операционные системы |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |