Обновить
25
ApeCoder@ApeCoder

Разработчик

0,1
Рейтинг
6
Подписчики
Отправить сообщение
> foreach это тот же цикл for, только без счётчика. Как только чуть усложняется задача, то foreach превращается в цикл while. Чем изучать особенности foreach, достаточно автоматически применять while.

Или в дополняется комбинаци с where

> Сколько раз в день вы применяете foreach?

Я работаю с несколькими языками, в одном я его использую гораздо чаще чем whil в другом нет for each зато есть конструкция эквивалентная where + for each для базы данных.

> Боюсь, экономия по сравнению с while получается слабенькая, а если с усложнением, то и вовсе никакой.

Это экономит мозг, потому, что сводится к частному случаю while подпадающему под определеннвй паттерн.

> Кроме этого, foreach это, по сути, способ коммуникации с пачкой объектов. С помощью форыча вы вручную строите обмен сообщениями.

Это сообщение для объекта-коллекции.

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

Скажу по опыту, что писать только маленькие процедуры можно. И с foreach так делаеть проще
Почему я должен ее показать? Для написания CMS я не буду использовать C. Мой поинт именно в этом.
Итого for each не выкидывается в просто перепрятывается из одного места в другое. И приходится дулировать логику foreach внутри while.

Можно улучшать только то, что используется триста раз на дню? Вон в питоне решили по другому, вместо foreach выкинули for. Нужен for — делай foreach по range.

Кстати, вот это дублирование отключаемое:

PROCEDURE Draw* (f : Figure);
BEGIN
   f.if.draw(f);
END Draw; // <- Нахрена в такой маленькой функции еще раз писать ее имя?


Что из этого следует?
Это как «сами» вы про разделения UI и Business logic слышали?

Внутри View.Handle message как будет происходить обход коллекции?
Сравнивать можно, мы сравнили и пришли к одному и тому же выводу: в конкретном случае трудоемкость решения задачи на Обероне такова, что лучше взять готовое, хотя и менее надежное. Существуют задачи для которых надежность менее существенна чем скорость разработки (примем пока на веру тезис, что Оберон уделывает все остальное по нажежности).

Вероятнее всего, таких задач большинство.
> Но как только вы построите гетерогенную расширяемую систему, и будете посылать сообщения, то вам списки уже не понадобятся. А значит, надобность в форыче отпадает.

Что вы понимаете под списком и почему они не понадобятся?

foreach обычно работает со всем что имеет элементы, мне трудно представить себе такую архитектуру где такого понятия нет. Покажите, пожалуйста, эскиз код для такой архитектуры на обероне.

Например, надо написать код который генерирует html для коллекции сотрудников. Я не очень представляю как это решать так чтобы не было лишнего кода (который будет повторяться в нескольких местах), foreach или метода/функции, получающий метод/функцию как аргумент.

Вот foreach в smalltalk
> В условиях Васи подходит PHP, он его и взял, почему это глупость?

Не просядет — Пете надо поддерживать CMS писать для нее модули и т.д. За это время у Васи будет выбор из кучи других CMS и возможность быстро и дешево нанять Вань без обучения Оберону.

Пока Петя не докажет, что его Оберон заруливает php по скорости разработки он будет выбирать php для Васиных задач.
Если не для каждого, то либо Where либо для каждого — но условие внутри.
В-общем, альтернативно — тупой копипаст кода.
То есть решение использовать Оберон в условиях Васи было бы глупостью? Для его условий Оберон не подходит?
Поправлю, не такой правильный код он напишет быстрее в любой консерватории.
> foreach прост, конечно. Вот я в Unity вытаскиваю список материалов и прохожу по нему форычем, чтоб отыскать нужный. Просто? Да. Удобно? Да. Но есть ещё более простой способ — послать сообщение.

Это как? А если у вас другая задача, например, просто сконвертировать весь список в html?
> Почему вы не можете быстро написать правильно работающий код?

Инструменты и практики для быстрой и правильной работы замедляют на стадии прототипа/первых версий.

Сразу нельзя потому, что это медленнее и такая правильность заказчику нужна после того, как он получит хоть как-то работающее решение (потом, вохможно, он даст нам обратную связь и мы вообще прппишем или выкинем тот код, который работал на стадии прототипа).

Петя и Вася получили заказ на сайтик.

Петя начал писать на Обероне, а Вася взял говый CMS на PHP и изменил там пару строчек.

Васин заказчик уже рубит бабло на сайте, хотя у него периодически случаются ошибки.
Петин ждет решения на Обероне.

Васин заказчик уже занял долю рынка, он про него знает, и он получил отклик от пользователей и добавил на сайтик необходимые фичи.

Петин заказчик ждет решения на Обероне.

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

Петин заказчик получил решение на Обероне и говорит пользователям: «Cмотрите, у меня самый надежный сайтик в мире!»
А пользователи такие: «а нас не парит — у Васи сайтик нас устраивает, хоить и показывает Error 500 раз в неделю, а про твой мы не знаем, да и нам влом еще где-то регистрироваться»
Я не уверен что Turbo Pascal выстрелил именно из-за паскаля, а не из за турбо среды. Turbo C и Turbo Assembler тоже выстрелили. Это раз.

Во-вторых, простота бывает разная. Бывает концептуальная простота, бывает простота использования. Например brainfuck и forth концептуально очень простые, а пользоваться сложно.

foreach пользоваться просто.

Если вы так интересуетесь надежностью, не могли бы вы сравнить подход Оберона с тем, что используется в Эйфеле, например. Как у оберона с Design By Contract?
> Про последующие затраты на исправление кривизны изначально никто не думает

Думает. Проще сразу начать получать доход, потом исправить кривизну. Вы, кстати, знакомы с концепцией MVP и Lean Startup?

Возможно кривизна будет в каком-то уже другом коде — так как часть этого выкинут за ненадобностью.
Не было ли каких-то языков разработанных некорпорациями которые несмотря ни на что взлетели, причем выше и быстрее чем оберон?

Людям нужно выпонение их конкретных задач. Коныептуально совершенный язык им не нужен. Чтобы что-то взлетело, надо чтобы зотя бы для какого-то конкретного пользователя язык решал его задачу лучше чем все остальные. Включая уже готовые экосистемы сделанные корпорациями.

Просто надо выбрать какую-то нишу и обеспечить там лучший набор «батареек».

Так взлетел php — кривой и нелогичный, но подходящий для простого веба.

Так же взлетели python и ruby. Сейчас, похоже, взлетает Rust.

Потом из этой ниши можно атаковать другие.

Для кого Оберон сейчас?
Например, в smalltalk if — это не специальная синтакическая конструкция, а метод объекта Boolean. Он уже готовый стандартный, но тем не менее не является частью синтаксиса.
Я про это:
> Чтобы МЫ поставили этот Windows на нашу Raspberry PI, он должен уметь хотя бы на один пункт больше, чем я написал

Но предположительно
В F# введен спецтип «ничего»

// Константа

let x = «y»

// функция

let x () = «y»
10) Работают минималистичные WInApi приложения?
11) Ваши С# быдлокодеры могут быстро и расслабленно написать для этого приложения

Информация

В рейтинге
4 774-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность