anonymous@RULINUX.NET~# Last login: 2024-05-19 17:08:31
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

escu - легковесные coreutils для обучения и встраиваемых систем.

Привет пользователям UNIX-like систем!

Я пишу небольшой набор открытых и свободных coreutils (небольшой проект, не такой фичастый, как GNU coreutils) для POSIX-совместимых ОС. Проект называется escu (сокращение от Extremelly Small CoreUtils). Писать начал, когда пожелав выучиться системному программированию по исходникам GNU Coreutils, но не смог разобраться в spaghetti code и решил их переписать согласно спецификациям The OpenGroup.

Уже есть утилиты: basename, chroot, dirname, false, head, link, ln, logname, ls, mkfifo, mv, pwd, test, true, tty, uname, unlink, yes. Многие из них уже полностью POSIX-совместимы. Я использую системные вызовы для снижения накладных расходов, а также стараюсь писать максимально простой код для облегчения понимания новичками.

Проект нацелен на максимальную переносимость, поэтому при написании используются только возможности стандартной библиотеки языка C, а для сборки будут использоваться только POSIX-совместимые make, компилятор языка C и командная оболочка.

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

Комментарии, предложения и патчи приветствуются

>>> Подробнее

Dorif(*) (2013-01-13 00:39:47)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Ubuntu/12.10 Chromium/22.0.1229.94 Chrome/22.0.1229.94 Safari/537.4

Подтверждено: vilfred(*) (2013-01-13 00:58:16)

[Ответить на это сообщение]

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

> но не смог разобраться в spaghetti code и решил их переписать согласно спецификациям The OpenGroup.
Кстати не уже ли The OpenGroup регомендует писать так код так:

c
if((sht || shd) & S_ISDIR(fs.st_mode))putchar('/');
 


ОМГ! Не уже ли это лучше читается, чем к примеру так?)))
c
if((sht||shd)&S_ISDIR(fs.st_mode)) putchar('/');
 

Ax-Xa-Xa(*)(2013-01-14 22:17:32)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

>Теперь-то ты понимаешь насколько необходимы легковесные coreutils!
Именно.

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

SystemV(*)(2013-01-14 22:21:35)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Да. А для более жирных платформ типа этих ваших расбирей - тут уже пох на спринтф, тут придётся создавать проект легковесного кроссплатформенного языка пейтон, только компилируемого и с синаксисом как сиплюсплюса. И переносить на него все эти недоношенные поделки, которыми всякие тупые школьники засирают репозитории линуксовых дистров.

anonymous(*)(2013-01-14 22:27:25)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

>тут придётся создавать проект легковесного кроссплатформенного языка пейтон, только компилируемого и с синаксисом как сиплюсплюса.
Google Go спешит на помощь! Ну или можно обмазаться гномовской vala, она вроде обещает компиляцию сначала в Си, а потом и дальше.

>И переносить на него все эти недоношенные поделки, которыми всякие тупые школьники засирают репозитории линуксовых дистров.
А накой они нужны на рапсберрях?

SystemV(*)(2013-01-14 22:31:17)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

> Google Go спешит на помощь!

Сказано же с сиплюсплюсным синтаксисом. А в Ге даже объектов нет.

> А накой они нужны на рапсберрях?

Мне вот это тоже не понятно, но ихний ФАК позиционирует петон как свой официальный язык. И даже в "Getting Started with Raspberry Pi" - рекомендованной ими книжке по началам работы с ихними пями, которую пеарит Расберри, там явно крен идёт на петон.

anonymous(*)(2013-01-14 22:45:16)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

>А в Ге даже объектов нет.
Это ещё почему?

>Мне вот это тоже не понятно, но ихний ФАК позиционирует петон как свой официальный язык. И даже в "Getting Started with Raspberry Pi" - рекомендованной ими книжке по началам работы с ихними пями, которую пеарит Расберри, там явно крен идёт на петон.
Ну так на питоне писать быстрее и удобнее. Но не думаю, что кто-то в здравом уме будет писать всё окружение пользователя на питоне. Например, если мы на базе расберри лепим тонкие клиенты для офиса, то никто не пострадает от того, что у основной программы для доступа к корпоративной БД будет питоний интерфейс. Даже разницы с интерфейсом на цпп не будет.

Естественно, что если разработчик наделает десяток висящих в памяти питоньих программ, которые можно без особых проблем заменить чем-нибудь на цпп, то он сам дурак.

SystemV(*)(2013-01-14 23:54:34)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

> Это ещё почему?

Не знаю, Go-ям не положен может.

> Ну так на питоне писать быстрее и удобнее.

Это почему?

> Но не думаю, что кто-то в здравом уме будет писать всё окружение пользователя на питоне.

В опенмоке так и было например. При этом там не декларировали петон как официальный язык.

> Например, если мы на базе расберри лепим тонкие клиенты для офиса, то никто не пострадает от того, что у основной программы для доступа к корпоративной БД будет питоний интерфейс. Даже разницы с интерфейсом на цпп не будет.

Единственное что под ARM-ом чётко видна разница в производительности. Даже если модули компилируюццо в .пык-файлы.

> Естественно, что если разработчик наделает десяток висящих в памяти питоньих программ, которые можно без особых проблем заменить чем-нибудь на цпп, то он сам дурак.

Все программы можно заменить на что-нибудь на цпп.

anonymous(*)(2013-01-15 00:08:34)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

>Не знаю, Go-ям не положен может.
Вообще-то объекты там есть. Просто их зовут структурами, но они вполне удовлетворяют требованиям ООП.

>Это почему?
Не знаю, может таким удобным его создали.

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

>Единственное что под ARM-ом чётко видна разница в производительности. Даже если модули компилируюццо в .пык-файлы.
Задачи, где питон показывает свою скорость, не так и распространены. Не каждое десктопное приложение считает какие-то сложные вещи. Вот, например, джаббер-клиент - ну чего там ресурсоёмкого? Парсить мелкие xml-ки, сокеты тыкать да в памяти контакт-лист держать. Тормозить негде. В крайнем случае есть уже вполне живой pypy.

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

>Все программы можно заменить на что-нибудь на цпп.
Нет, лучше не стоит.

SystemV(*)(2013-01-15 00:21:56)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

> Вообще-то объекты там есть. Просто их зовут структурами, но они вполне удовлетворяют требованиям ООП.

Как это они удовлетворяют? Наследование, конструкторы, виртуальные методы - где это всё?

> Не знаю, может таким удобным его создали.

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

> Скорее всего они торопились, и рассчитывали в будущем переделать критические места на чём-то более шустром. Впрочем, писали бы на сях каких-нибудь - вообще бы не написали ничего.

Пока они быстро писали неработающее тормозное говно на своём петоне, кто-то бысттренько подсуетился и выкатил QT-Moko на сяхплюсплюс. Вроде как единственную более-менее юзабельную начинку и к тому же в разы быстрее.

> Задачи, где питон показывает свою скорость, не так и распространены.

Это да. Я сходу даже не придумаю ни одной задачи, где требовалось бы со страшной скоростью ТОРМОЗИТЬ.

> Не каждое десктопное приложение считает какие-то сложные вещи. Вот, например, джаббер-клиент - ну чего там ресурсоёмкого? Парсить мелкие xml-ки, сокеты тыкать да в памяти контакт-лист держать. Тормозить негде. В крайнем случае есть уже вполне живой pypy.

Десктопные приложения критичны к скорости реакции на действия пользователя. Ведь задержки на доли секунды уже чувствуются. Питон тут тоже не на высоте.

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

Я вообще про память ничего не говорил. Но спасибо что напомнил - на Опенмоке он ещё память жрал как не в себя.

> Нет, лучше не стоит.

Ну отчего же? Я вот например уже давно пришёл к выводу, что программ, написанных на пятоне мне не надо. И всегда ищу аналоги, сделанные на нормальном языке. И вовсе не из религиозных соображений.

anonymous(*)(2013-01-15 02:33:33)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

>Как это они удовлетворяют? Наследование, конструкторы, виртуальные методы - где это всё?
Есть и наследование, и конструкторы. И методы виртуальные. Просто реализовано оно не как в цпп, но ведь цпп не является каким-либо стандартом в ООП.

>Десктопные приложения критичны к скорости реакции на действия пользователя. Ведь задержки на доли секунды уже чувствуются. Питон тут тоже не на высоте.
Учитывая, что во всех десктопных приложениях питон использует всякие там qt или gtk для отрисовки гуя, не очень понятно, отчего должны быть задержки. Я как-то писал на pyqt программку, никаких проблем с задержками не видел.

SystemV(*)(2013-01-15 23:33:45)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Не будет, ибо itoa стал ненужным в ходе переписывания кода, согласно новым соображениям.

Dorif(*)(2013-01-16 00:43:15)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Ubuntu Chromium/23.0.1271.97 Chrome/23.0.1271.97 Safari/537.11
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Мда, продуктивный тред.) Началось с корутилзов, вылилось в питоносрач(но относительно вежливый, не как на труполоре).)

Dorif(*)(2013-01-16 00:44:13)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Ubuntu Chromium/23.0.1271.97 Chrome/23.0.1271.97 Safari/537.11
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Кстати интересная тема по поводу "Красивого кода" на Хабре.

Половина комментов на тему "надо ли переносить отрывающую фигурную скобку на новую строку". Очень хотелось написать типа "А вот в питоне такой проблемы просто не существует". Потом увидел этот пост:

По итогам голосования на моём комментарии и карме можно видеть, что 2/3 людей любят переносить открывающую фигурную скобку, 1/3 не любит, и 1 человек ОЧЕНЬ не любит :)
вспомнил, что это хабр и решил воздержаться)))

Итоги голосования на моей карме в данном треде, после выше приведенного высказывания были бы еще печальнее)))

Вот странно, это же действительно так. Программируя на питоне ты не паришься какой это стиль (скобка перенесена или не), а просто пишешь свою мысль.

Ax-Xa-Xa(*)(2013-01-17 19:37:36)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

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

anonymous(*)(2013-01-17 20:13:30)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

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

SystemV(*)(2013-01-17 20:33:29)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
  • матерные выражения
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

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

anonymous(*)(2013-01-17 21:25:00)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Зато в петоне охуительная встроенная поддержка юникода. Вот пример хелловорда (взял первый попавшийся в гугле, урл http://pythonblogg.blogspot.ie/2011/03/1.html ):

$ echo $LANG
en_US.UTF-8

$ # Что должна выводить эта программа?

$ cat test.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

def a_d(): # создана функция a_d()
 a=2
 b=5
 c=a+b
 print('c равно == ',c) # вывод на экран текта
   # "с равно " и значение переменной c
def main():
 a_d()
 return 0

if __name__ == '__main__':
 main()


$ # авотхуй:

$ python test.py
('c \xd1\x80\xd0\xb0\xd0\xb2\xd0\xbd\xd0\xbe == ', 7)

anonymous(*)(2013-01-17 21:37:54)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

># Что должна выводить эта программа?
Она выводит именно то, что должна. Если автор статьи по ссылке не умеет пользоваться питоном, то не очень понятно, какие претензии должны быть к языку.

print('c равно == ',c) выводит не строку и следующую переменную, а tuple (такой тип данных), который по-умолчанию печатается в его "сыром" виде. То есть это некое печатное представление структуры данных, в котором символы выводятся как их коды. В данном случае xd1x80xd0xb0xd0xb2xd0xbdxd0xbe - слово "равно" в utf-8, о котором автор объявил в начале файла. По сути его код равноценен такому:

python
a = ('с равно', c)
print a
 


В питоне 2 применение print для вывода строки в читабельном виде должно быть таким: print(u'с равно == %s' % c)

Или таким, если 2.7 (способ выше также работает): print(u'с равно == {}'.format(c))

Да, перед уникодными строками в питоне 2 надо ставить u. На самом деле часто работает и так, но есть куча нюансов, это как использовать char в Си для utf-8 с не-ASCII символами. В питоне 3 оба типа (str и unicode) унифицировали. Алсо, unicode там != utf-8, но это тут не важно, так как питон при выводе в консоль в линуксе это дело решает сам.

SystemV(*)(2013-01-17 21:59:11)
Отредактировано SystemV по причине "не указана"
Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Пездец какой-то, а не языг! При том с кучей нюансов! о_О

anonymous(*)(2013-01-17 23:54:37)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

>Пездец какой-то, а не языг! При том с кучей нюансов! о_О
Нюансов не так и много. Не больше, чем в том же Си, например. И намного меньше, чем в php или js.

Ну а в третьей версии убрали остатки нестыковок в дизайне языка.

SystemV(*)(2013-01-18 00:07:52)

Emacs-w3m/1.4.508 w3m/0.5.3
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

> Ну а в третьей версии убрали остатки нестыковок в дизайне языка.

Что, все? Теперь он стал джавою?

anonymous(*)(2013-01-18 02:35:07)

avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

Просто надо внимательно читать спецификацию языка. print во второй версии это оператор, а не функция))) А вот в третьей, твой пример уже должен заработать так как ты ожидал, если мне не изменяет память.

Простота Питона оборачивается его недостатком (хотя фильтрация посредственностей вряд ли недостаток))). Люди сделавшие на нем хеллоуворд, уже считаю себя его знатоками. А потом жутко обламываются когда их просят например написать в одной строке выдачу только четных чисел из массива.

А представьте себе, что это на собеседовании произошло))) Такое не прощают, и незаслуженно обсирают язык всю оставшуюся жизнь)))

Ax-Xa-Xa(*)(2013-01-18 07:53:04)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
avatar
Скрыть

Re:escu - легковесные coreutils для обучения и встраиваемых систем.

> с пробелами/табами же - это просто бред какой-то.
Через месяца 2-3 работы с питонам ты будешь думать увидя код другого языка примерно следущее: "Нах все эти скобочки, хуебочки, енды и проий бред. Как будто нельзя отступами выделять блоки кода.")))

Ax-Xa-Xa(*)(2013-01-18 07:56:23)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!