Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Использование Rust извне
Далее следует объявление переменной, которое совмещено с инициализацией и размещено прямо в коде. Ну а как еще, не делать же отдельную секцию переменных, как в восьмидесятых. Тогда угрюмые колхозники писали все переменные в строго выделенном месте, чтобы потом их в этом месте найти.
Простите, не согласен категорически. Какая разница, ставить скобочки или отступы?
простого редактора
Мне вполне хватает emacs
Reformat on paste Use this drop-down list to specify how to place pasted code blocks. The available options are: – None — The pasted code is inserted at the caret location as plain text without any reformatting or indenting.
– Indent Block — The pasted code block is positioned at the proper indentation level, according to the current Code Style Settings, but its inner structure is not changed.
– Indent Each Line- Each line of the pasted code block is positioned at the proper indentation level, according to the current Code Style Settings.
– Reformat Block- The pasted code block is reformatted according to the current Code Style Settings.
begin;
int beginningBegin = 25;
int endd = 34;
if (beginningBegin > endd) then
begin
beginningBegin -= beginningBegin;
endd = endd — beginningBegin;
end;
beginningBegin = 45;
end;
Мне например Очень хочется синестезии этих двух способов в одно: если хочется написать несколько функции в одной строке — будь добр отдели их скобками и точками с запятыми; хочется в много строчье — исчезает надобность в разделении.
… и коллеги по команде вас проклинают.
d<N>d или визуальным выделением через v. Хороший Python код очень редко требует копирования больших объёмов (в том числе и из-за того, что большинство методов вмещаются в 1 экран кода), в отличие от {}-образных.d4d, которая вырезает 4 строки в буфер. Именно в этом контексте я привёл уточнение про маленькие блоки кода.Хороший Python код очень редко требует копирования больших объёмов (в том числе и из-за того, что большинство методов вмещаются в 1 экран кода)
d<N>d можно использовать в любом коде.d<N>d нужно знать N. Не говорите мне про relativenumber: во‐первых, мне не нравиться занимать свободное пространство когда есть более удобные способы сделать то же самое. Во‐вторых, relativenumber не поможет вам, если конца метода не видно на экране (нет, это не обязательно значит, что метод большой).iB для Python, так же хорошо работающий для других языков, если авторы не забывали ставить отступы. Из‐за автоформатирования в каждом первом редакторе кода отсутствие отступов — большая редкость.vii.Мне нравится чтобы все элементы программы были «осязаемы».
Мне нравится чтобы все элементы программы были «осязаемы».
\ или воспользоваться услугами круглых скобок. Примеры:a = MyComplexClass("one", "two three four five...")\
.do_something()
a = (MyComplexClass("one", "two three four five...")
.do_something()
)
something_really_long_long_long_long = ComplexSomethingLikeJavaPeopleLike(
1, 2, 3
)
В инкладах операционных систем отрабатывается какой компилятор сейчас их компилирует и эта информация протягивается по стайджам, можно подшаманить между ними, но мы же доказывает отсутствие закладок?!Закладок в компиляторе. Содержимое инклюдов — это проблемы операционной системы. Точно так же закладка в драйвере файловой системы — это не проблема компилятора и не покрывается DDC-тестом.
Суть разного ABI — РАЗНОЕ поведениеВажно наблюдаемое поведение.
(архитектуру?) мы выбрали разнуюДля DDC-теста должны выбирать одинаковую. Иначе конечно же результаты двойной компиляции будут отличаться, лол.
По-моему, если для языка нужна своя ОС — это фигня какая-то, простите.
В 1989 году в Швейцарской высшей технической школе Цюриха (ETH) была выпущена первая реализация Оберона для процессоров семейства NS32000. Он был создан в качестве компонента операционной среды Оберон.
Если вы из этого делаете вывод, процитированный выше, то вам надо всерьез задуматься о возможной дислексии.

На Обероне операционные системы пишутк тезису
если для языка нужна своя ОС — это фигня какая-тоа господа плюсанувшие ваш комментарий могут присоединиться к формулированию логической цепочки.
За столом разговор пошел дружнее, стали уж вроде и забывать про Глеба
Капустина… И тут он попер на кандидата.
— В какой области выявляете себя? — спросил он.
— Где работаю, что ли? — не понял кандидат.
— Да.
— На филфаке.
— Философия?
— Не совсем… Ну, можно и так сказать.
— Необходимая вещь. — Глебу нужно было, чтоб была — философия. Он
оживился. — Ну, и как насчет первичности?
— Какой первичности? — опять не понял кандидат. И внимательно
посмотрел на Глеба, И все посмотрели на Глеба.
— Первичности духа и материи. — Глеб бросил перчатку. Глеб как бы
стал в небрежную позу и ждал, когда перчатку поднимут.
Кандидат поднял перчатку.
— Как всегда, — сказал он с улыбкой. — Материя первична…
— А дух?
— А дух — потом. А что?
— Это входит в минимум? — Глеб тоже улыбался. — Вы извините, мы
тут… далеко от общественных центров, поговорить хочется, но не особенно-то
разбежишься — не с кем. Как сейчас философия определяет понятие
невесомости?
— Как всегда определяла. Почему — сейчас?
— Но явление-то открыто недавно. — Глеб улыбнулся прямо в глаза
кандидату. — Поэтому я и спрашиваю. Натурфилософия, допустим, определит это
так, стратегическая философия — совершенно иначе…
— Да нет такой философии — стратегической! — заволновался кандидат.
— Вы о чем вообще-то?
— Да, но есть диалектика природы, — спокойно, при общем внимании
продолжал Глеб. — А природу определяет философия. В качестве одного из
элементов природы недавно обнаружена невесомость. Поэтому я и спрашиваю:
растерянности не наблюдается среди философов?
Кандидат искренне засмеялся. Но засмеялся один...

Я всегда говорю — на Обероне денег не заработаешь в силу его крайней простоты, поэтому он неинтересен для серьёзных рыночных игроков. Навороченная IDE для преодоления костылей не нужна, толстые амазон-книги тоже не нужны, может изучаться даже пятиклассниками — предмета для разговора нет.
Вам же всё равно, на чём писать, лишь бы дали бесплатную инфраструктуру,
1) кадровый вопрос. Изучить Оберон легко, поэтому вливание новых людей в проект на Обероне не потребует особых усилий.
2) надёжность. На Обероне сложно писать ненадёжный код, даже новичкам. Жёсткие правила приучают к аккуратности.
3) минимальный период отладки. На Обероне можно писать сразу правильный код, не затрачивая время на отладку. Написал — и сразу в продакшЫн. Тестирование, конечно, нужно, но оно больше для лечения от самых глупых ошибок.
Компания Oberon Microsystems делала систему управления ГЭС на Амазонке.
Российские беспилотники летают на Обероне. На АЭС и конвейерном производстве внедряют.
Но как вкладываться в Оберон? Вы посмотрите на Хабр, тут комьюнити такое, что за отклонение от линии партии забьют ногами.
Никто не мешает написать игру на Обероне.
Когда продукт продавлен на рынок, то люди его начнут поддерживать автоматически.
Надёжность языка обеспечивается компактностью (не примитивностью!) синтаксиса.
Эта особенность наглядно представлена графиком <www.uni-vologda.ac.ru/cs/syntax/graph.gif>, который я интерпретирую следующим образом: майнстримные ЯП движутся в направлении повышения возможностей на выходе, а оберон движется в направлении уменьшения ошибок на входе.
Преимущества Оберона не в наличии волшебных фичей, а в отсутствии лишних, малозначимых, вторичных.
Компактность синтаксиса влияет на надёжность следующим образом. Программы пишет человек, используя формальный аппарат. Но возможности человека ограничены. Если аппарат раздут, количество понятий в нём велико, а отношения между понятиями не слишком наглядны, то допустить ошибку гораздо легче.
Про синтаксис я говорю, потому что есть анализ Свердлова.
«Лишняя фича» — дженерики, например. Вирту задавали вопрос про дженерики, он ответил в том смысле, что дженерики плодят неконтролируемый код, что может снизить надёжность. И я с ним согласен, ведь я не вижу сгенерированного кода, а значит, не могу за него отвечать.
Надёжность языка обеспечивается компактностью (не примитивностью!) синтаксиса
foreach(var customer in customers){
Console.WriteLine(customer.Name);
}
customers.ForEach( customer => Console.WriteLine(customer.Name))
with( var f = openFile())
{
f.Write("foo");
}
openFile().With(f => f.Write("foo"));
Теперь под мощью этих продуктов, например, у меня ноут трещит
яист с оператором unsafe направлен на безопасность
Далее следует объявление переменной, которое совмещено с инициализацией и размещено прямо в коде. Ну а как еще, не делать же отдельную секцию переменных, как в восьмидесятых. Тогда угрюмые колхозники писали все переменные в строго выделенном месте, чтобы потом их в этом месте найти. Вот так ограничивали свободу выражения творческих личностей. Принуждали к порядку. Хорошо, что мы избавились от этого пережитка.
Посты про Оберон ломают мем «Оберон забыт».
Любое поползновение к изменению точки зрения грозит разрушением картины мира.
Я про это говорю совершенно серьёзно, потому что мои посты про то, что даёт оберон-подход, встречают обструкцию вида «оберон не лучше того, к чему мы привыкли, вы всё врёте».
Если у вас гетерогенная структура построена на шине сообщений, то коллекции вам просто не нужны, посылайте агентам сообщения.
children — это коллекция, и сообщения туда шлются через forEach.Как вы отработаете ситуацию, когда ваше действие возможно будет применить только к одному элементу коллекции, а остальные не смогут этого сделать?
Как вы отработаете ситуацию, когда нужно применить действие не к каждому элементу коллекции?
Если у вас гетерогенная структура построена на шине сообщений, то коллекции вам просто не нужны, посылайте агентам сообщения.
// запись телефонной книжки это имя и номер телефона
class PhoneBookRecord {
string Name;
string Phone;
}
// Телефонная книжка содержит в себе записи
class PhoneBook {
List<PhoneBookRecord> Records = new List<PhoneBookRecord>();
}
// преобразование телефонной книжки в HTML
string convertToHtml(PhoneBook phonebook)
{
// это соединенная через тег
последовательность html предствалений записей
return String.Join("
", phonebook.Records.Select(convertToHtml));
}
// преобразование записи в HTML
string convertToHtml(PhoneBookRecord record)
{
// искейпинг опускаем
return String.Format("<b>{0}</b>: {1}", record.Name, record.Phone);
}
Мне это не надо. Если Вам надо
Я же предложил, изучайте Оберон.
признавая Вашу роль оценщика
data PhoneBookRecord = PBR String String
data PhoneBook = PB [PhoneBookRecord]
pbToHtml (PB records) = unwords $ map pbrToHtml records
pbrToHtml (PBR name phone) = Text.printf "<b>%s</b>: %s" name phone
По факту, ваш вопрос некорректен, потому что в Обероне нет понятия коллекций. Коллекция — это обобщенное название некоторых видов структур данных. Структуры данных типа коллекций могут быть описаны на языке Оберон, равно как и любые другие структуры.
// какой-то код
// здесь нельзя ошибочно использовать переменную I
for(var i in myArray1)
{
// здесь можно использовать i
}
// здесь нельзя по ошибке использовать I
for(var i in myArray1)
{
// здесь можно использовать i
}
// здесь нельзя по ошибке использовать I
Ограниченный скоп означает, что у вас в коде кандидат на вынос в отдельный метод или хотя бы замыкание. А там свой скоуп.
То есть, если Вы все-таки меняете изначальный вопрос про внутренний счетчик цикла на вопрос про скоупы вообще, то желательно хотя бы предупредить об этом всех собеседников.
var navigator = GetComponent ();
navigator.enabled = false;
var force = GetComponent ();
force.enabled = false;
var death = GetComponent ();
death.Play ();
Еще можно тип объявить посреди вызовов. И тут же его реализовать.
var productQuery =
from prod in products
select new { prod.Color, prod.Price };
foreach (var v in productQuery)
{
Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price);
}
объявлять можно где угодно, повышая вероятность неаккуратного использования
let nav = GetComponent()
nav.Disable()
let force = GetComponent()
force.Disable()
let death = GetComponent()
death.Play()
GetComponent давно и прочно вытесняются DI, но это уже нюансы; в конце концов, я же не телепат, чтобы знать, что там на самом деле внутри)То есть отсуствие поиска макаронины не является для Вас выигрышем?
x. Что вы хотите о нем знать, что заставляет вас «разбирать лапшу»?Какая по большому счёт разница где объявлять переменные?
плохо сочетается с выводимыми или неявными типами.
подводить его под обсуждение дилетантами
формализмы, которые мы используем, формируют наш образ мышления лучшим или худшим образом
аналог FOR i:=a; WHILE i<=x DO INC(i, step) END;
цена разработки и поддержки компилятора сильно возрастает. Может ли сообщество хабра поднять собственный компилятор такого масштаба — думаю, ответ очевиден — конечно же, не может, ведь для этого нужны серьёзные деньги. Импортозамещение сразу же проседает.
стоимость обучения специалиста растёт, хотя можно сказать, что пусть учится вечерами, в промежутке между курсовыми и заработками в макдональдсе.
ответственность, вы не имеете права на ошибку, ведь на ваш ЯП как средство производства будут завязано много задач.
Итак, мы приходим к выводу, что приближение к предметной области могут позволить себе только большие западные компании с оборотом в миллиарды долларов
for.
«Проклятие» фигурных скобочек