LINUX.ORG.RU

Избранные сообщения Kuzy

Статья «What does Rust's „unsafe“ mean?»

Форум — Development

Huon Wilson выложил в своем блоге небольшую статью о unsafe в языке Rust «What does Rust's „unsafe“ mean?».

Обсуждения в реддите: в /r/rust и в /r/programming

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

Кстати, в статье есть ссылки на интересную серию статей из блога LLVM про неопределённое поведение часть 1 часть 2 часть 3. Как по мне, из них интереснее всего третья часть, где говорится о том, почему нельзя просто так взять и выдавать ошибку компиляции при любом UB.

 , ,

ozkriff
()

Шарп vs. Джава

Форум — Development

Товарищ Indaril_Shpritz предложил создать топик «Что лучше: C# или Java».
Товарищ считает, что C# «технически лучше». Я думаю, что он имеет ввиду всякие проперти и синтаксический сахар (типа foreach).
Я считаю, что Java лучше, ибо JVM есть для любой кофемолки, есть процессоры с аппаратной поддержкой байт-кода Java, Java можно даже скомпилировать в native code (правда, с трудом). А весь этот синтаксический сахар не нужен, ибо не Ъ, а дальнейшая судьба Mono очень неоднозначна.
Кто прав?

 , ,

CYB3R
()

Преимущества функционального программирования

Форум — Development

Чем оно лучше/хуже императивного программирования в плане разработке ПО? Какие крупные комплексы ПО были написаны (созданы) с использование этой парадигмы начиная с ее зарождения?

Перемещено mono из talks

 , ,

int13h
()

Создание образа с нуля

Форум — Development

Как создать с нуля образ с полной иерархией объектов, используя лишь примитивы SqueakVM? Как с ним работать, изменять, сохранять его?

cast yoghurt

 ,

buddhist
()

лямбды в новых язычках - PR или реальные полезняшки?

Форум — Talks

Народ, а поясните пожалуйста, что конкретно имеется ввиду, когда некто, описывая всякие плюшки новорожденного языка восторженно заявляет «там есть лямбды!».

Ну что есть lambda в каком-нибудь lisp я представляю и даже понимаю зачем оно и как им пользоваться. В lisp'е. А что имеется ввиду под «лямбдой» например, в C#?

Хотелось бы увидеть не только цитаты из википедии, а простенькие примеры того, как эта лямбда сильно упрощает жизнь, удобство даёт и всё такое. В виде примера кода, разумеется, с пояснениями почему тут именно лямбда крута и без неё некузяво.

Только чтобы это не было аналогом перлового однострочника типа

perl -e 'print sub{ $_[0] + $_[1]; }->(1,2)."\n";'
ибо в этом никаких новшеств и преимуществ нету.

Просто сдаётся мне что «лямбда» в нынешних сишарпах это пиарное название допотопных безымянных функций которые даже в перле есть и никаких новшеств в этом на самом деле нету.

 , ,

Stanson
()

Многоядерность vs Многопроцессорность

Форум — Development

в чем разница между многопроцессорной системой и многоядерной системой с точки зрения синхронизации?

есть ли в многоядерном процессоре специальные механизмы, ускоряющие синхронизацию между ядрами по сравнению со синхронизацией между процессорами?

 

Indaril_Shpritz
()

Почему в Qt не рекомендуют использовать исключения?

Форум — Development

Волею случая сейчас делаю один проект на Qt, после Java хочется жирненько обмазать метод исключениями, а тут опаньки и такое вот написано, почему так?

http://qt-project.org/wiki/Coding-Conventions

Перемещено mono из talks

 

OldWiseCat
()

GUI в IDE, а остальной код на Clojure, как?

Форум — Development

Подскажите пожалуйста, можно ли использовать визуальные редакторы графического интерфейса предназначенные для Java (такие как IntelliJ IDEA например) для построения GUI, но логику приложения и остальной код писать на Clojure?

Мне хотя бы простейший пример: вот создали в GUI редакторе кнопку, сохранили все, а уже на Сlojure создали обработчик события для этой кнопки. Т.е. я не хочу руками в коде этот графический интерфейс создавать, а создать его в IDE, а уже потом с ним взаимодействовать из Clojure. Как то так, ну или хотя бы может в интернете где то об этом написано, я не нашел(

Буду очень благодарен за помощь, спасибо.

 , , ,

elf80lvl
()

VIM как IDE для ______

Форум — Development

Какие плагины вы используете, чтобы превратить vim в IDE для ________ (вписать язык)?

Интересует:

  1. Автодополнение. В частности, умное семантическое.
  2. Форматирование. В частности, автоматическое при сохранении буфера.
  3. Проверка компилируемости кода для компилируемых ЯП, проверка корректности для интерпретируемых ЯП.
  4. Статический анализ кода (lint). Предупреждения о неиспользуемых переменных. Предупреждения о неканоничном форматировании кода. И т. д.
  5. Просмотр документации к функции, методу и т. д. под курсором.
  6. Переход к определению функции (метода, класса и т. д.) под курсором.
  7. Рефакторинг (переименование функций, методов, классов и т. д.).
  8. Сниппеты.
  9. Компиляция/запуск. Точки останова. Запуск тестов.
  10. Заливка кусков кода на сайты для обмена, вроде gist.github.com или play.golang.org.

И общее для всех языков:

  • Вывод списка / переход к меткам TODO, XXX, FIXME и т. д.
  • Go anywhere (CtrlP, Command-T или FuzzyFinder?)

Ссылки:

VIM как python IDE.

 

meskalin
()

Могут ли быть строгие ФП языки тьюринг-полными.

Форум — Development

Я имею в виду те, что называются total. Эти язычки имеют одно интересное свойство — проверку на завершаемость. Например, нельзя бесконечную рекурсию. Уже только поэтому, они, как минимум, не эквивалентны МТ. Особенно интересует Agda.

ЗЫ Такой «алгоритм» как event-loop получается, тоже нереализуем на них?

 

anonimous
()

Тьюринг-полнота — что это?

Форум — Development

Попадаются постоянно на глаза фразы «этот язык тюринг-полон поэтому бла-бла-бла». Вот например, есть такая шняга как комбинаторная логика и родственное ему ski-исчисление. Я читал лично его отца Шойфенкеля, который утверждал, что сама по себе ski избыточна, достаточно одной функции, чтобы выразить все. В то же время, комбинаторная логика эквивалентна LC, которое, в свою очередь, тьюринг-полное. Так что же тогда получается, что для тьюринг-полноты достаточно одной функции?

Как вообще понять, «визуально», является ли язык тьюринг-полным или нет? Какими необходимыми свойствами он должен обладать, для того чтобы называться так?

normal
()

Quote и lambda

Форум — Development

А не задумывались ли вы, что quote и lambda по сути ничем не отличаются. Я тут сразу отбрасываю математический смысл, лексическую область и прочее, это непосредственно к лиспу отношения не имеет. Например

(define a (quote 1))
(define a (lambda() 1))

(eval a)
(a)
Тут одна и та же семантика. Просто задержка вычислений. Разница в том, что quote принимает только 1 аргумент. Я давно думал об этом, с помощью лямбд можно эмулировать поведение quote. В picolisp, собственно, и нет разницы, там lambda вообще выкинута. Понятное дело, что сейчас, в связи с модой на ФП, с лямбдой связывают кучу всяких заклинаний. Но ведь вплоть до схемы этой всей ФП-лабуды в лиспах не было. Получается, что Маккарти ввел лишнюю сущность в язык. Этот вопрос где нибудь обсуждается? Кто-нибудь видел какие-нибудь бумаги? Может быть, это было простой ошибкой дизайна, которую не успели выпилить и она исторически прижилась?

 

phill
()

Снова макросы Racket

Форум — Development

Пытаюсь использовать макрос

(define-syntax-rule (with-template ([var ...] [form ...] ...) body ...)
  (begin (define-syntax-rule (inner var ...) (begin body ...))
         (inner form ...) ...))

для описания пачки однотипных макросов

(with-template 
 ([src dst]
  [define-gi define-gi*]
  [define-gtk define-gtk*])
(define-syntax (dst stx)
  (syntax-case stx ()
    [(dst id params ...)
     (let ([new-id (string->symbol (string-replace (symbol->string (syntax-e #'id)) "-" "_"))])
       #`(src id params ... #:c-id #,new-id))])))

Получаю очень странную ошибку main.rkt:38:20: syntax: no pattern variables before ellipsis in template at: ... in: (begin (define...syntax-e (syntax id))) "-" «_»)))) (quasisyntax (src id params ... #:c-id (unsyntax new-id))))))))

При том, что

(define-syntax (define-gtk* stx)
  (syntax-case stx ()
    [(define-gtk* id params ...)
     (let ([new-id (string->symbol (string-replace (symbol->string (syntax-e #'id)) "-" "_"))])
       #`(define-gtk id params ... #:c-id #,new-id))]))
работает прекрасно

Что я ещё не понял про рэкетовские макросы?

 ,

monk
()

Глобальное состояние в ФП

Форум — Development

А правильно ли я понимаю, что под «отсутствием состояния» в ФП понимается только отсутствие состояния переменных. У самого вычислителя, есть глобальное состояние, он в каждый момент времени находится в состоянии одной из редукций выражения, подобно тому, как машина Тьюринга в каждый момент вычисления «обозревает» строго определенную ячейку, на которой находится головка? Из этого следует, что ФП вычислитель относится к классу «Global State Machine» и у него, разумеется, ЕСТЬ глобальное состояние?

 ,

avtoritetniy-expert
()

Дейкстра и стек

Форум — Development

Почему Дейкстра был таким горячим поклонником стеково-ориентированных вычислений? Ведь это же отвратительно, если у нас нет GOTO, или, хотя-бы, его огрызка — RETURN, нам (машине) приходиться вычислять нафиг не нужные ветки. Что в этом хорошего то может быть?

 

avtoritetniy-expert
()

Литература по компиляторам

Форум — Development

Что хорошего может посоветовать почитать ЛОР? Нужно, в первую очередь, для общего развития, поэтому хотелось бы, чтобы рассматривались различные парадигмы. Пока присматриваюсь к «Modern Compiler Design» - если кто читал, поделитесь отзывами.

runtime
()

Значимость Homoiconicity?

Форум — Development

Мучает вопрос: существуют ли какие либо фундаментальные преимущества у homoiconic languages перед non-homoiconic languages?

runtime
()

Си

Форум — Development
#include <stdlib.h>
#include <stdio.h> 

int main(int argc, char *argv[]) {

char *num = «5555»; 	
	
	if (argc != 2) {
	printf(«No param\n»);
		exit(0);
	}
	
	if (argv[1] != num) {
	printf(«Fail num %s\n»,num);
	printf(«Fail arg %s\n»,argv[1]);
		exit(0);
	}

...
}

Подскажите, почему сравниваются два одинаковых значения, но определяются, как - неодинаковые!

Вывод программы:

Fail num 5555
Fail arg 5555

anonymus123
()

А бывает ли в Common Lisp объектная модель на сообщениях?

Форум — Development

Как в ruby/smalltalk.

Или умерла вместе с Lisp machines/Genera/Flavors?

Хотелось бы знать, почему CLOS вытеснил все альтернативы. Плюс у сообщений в том, что для разных классов сообщения не обязаны иметь одинаковое количество параметров.

Ну и, в том же Racket, классы/объекты как раз работают на сообщениях.

 

monk
()

Помогите развить новую концепцию ЯП

Форум — Development

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

Соответственно, результат мы получаем практически мгновенно - достаточно сопоставить результат и входные данные. То есть компьютеры будут работать быстрее в десятки раз.

Единственный минус - возможно большой размер программ. Но если так подобрать базис разложения, то всё будет мало весить - ведь записать надо будет не сами данные, а лишь «координаты» в этом базисе. Понял это ещё с уроков геометрии - там делается то же самое, но с векторами

esandmann
()