The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.77, opennews (?), 22-Мрт-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


68. "Выпуск языка программирования Rust 1.77"  +6 +/
Сообщение от EP45DS3L (?), 22-Мрт-24, 17:26 
https://ibb.co/ZYfJDwM

Когда вижу такой синтаксис, моя рука тянется к нагану

Ответить | Правка | Наверх | Cообщить модератору

78. "Выпуск языка программирования Rust 1.77"  +1 +/
Сообщение от Аноним (78), 22-Мрт-24, 18:24 
А как же илитность? С таким синтаксисом, да на тайловом ВМ под вяланд как покажет погроммист своё поделие, так потенция работодателя сразу поймёт -- этот не женат, да и вообще деффками не интересуется. Хороший работник для галеры!
Ответить | Правка | Наверх | Cообщить модератору

96. "Выпуск языка программирования Rust 1.77"  +2 +/
Сообщение от freecoder (ok), 22-Мрт-24, 19:22 
А какие претензии именно _к_синтаксису_ в данном фрагменте?
Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

98. "Выпуск языка программирования Rust 1.77"  –2 +/
Сообщение от Аноним (184), 22-Мрт-24, 19:41 
> https://ibb.co/ZYfJDwM
> Когда вижу такой синтаксис, моя рука тянется к нагану

Не самый плохой пример, кстати. Или вот:


pub fn read<P: AsRef<Path>>(path: P) -> io::Result<Vec<u8>> {
  fn inner(path: &Path) -> io::Result<Vec<u8>> {
    let mut file = File::open(path)?;
    let mut bytes = Vec::new();
    file.read_to_end(&mut bytes)?;
    Ok(bytes)
  }
  inner(path.as_ref())
}

Тоже не самый плохой из возможных :)
Вырвиглаз в расте обречен из за перегруженной семантики. Тут ничего не поделаешь.

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

125. "Выпуск языка программирования Rust 1.77"  +2 +/
Сообщение от freecoder (ok), 22-Мрт-24, 21:18 
Зачем писать бессмысленные нагромождения синтаксиса? Можно и лаконичнее.
pub fn read(path: impl AsRef<Path>) -> io::Result<Vec<u8>> {
    let mut bytes = Vec::new();
    File::open(path.as_ref())?.read_to_end(&mut bytes)?;

    Ok(bytes)
}


Ответить | Правка | Наверх | Cообщить модератору

131. "Выпуск языка программирования Rust 1.77"  –1 +/
Сообщение от Аноним (184), 22-Мрт-24, 21:45 
> Зачем писать бессмысленные нагромождения синтаксиса?

Не бессмысленное, а чтоб показать влияние семантики.

> Можно и лаконичнее.

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

Ответить | Правка | Наверх | Cообщить модератору

217. "Выпуск языка программирования Rust 1.77"  –1 +/
Сообщение от Вы забыли заполнить поле Name (?), 24-Мрт-24, 13:12 
> Зачем писать бессмысленные нагромождения синтаксиса? Можно и лаконичнее.
>
pub fn read(path: impl AsRef<Path>) -> io::Result<Vec<u8>> { 
>     let mut bytes = Vec::new();
>     File::open(path.as_ref())?.read_to_end(&mut bytes)?;
>     Ok(bytes)
> }

Как определить какие возможные ошибки может вернуть данная функция? Для этого надо в код File::open и read_to_end смотреть?

Почему ошибки аллокации в Vew::new никак не обрабатываются? Считается нормной просто запаниковать и упасть?

Ответить | Правка | К родителю #125 | Наверх | Cообщить модератору

225. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (-), 25-Мрт-24, 12:12 
> Как определить какие возможные ошибки может вернуть данная функция?

Посмотреть на возвращаемое значение и увидеть там не Result, а io::Result; хлопнуть себя ладонью по лбу и сказать "аааа, это ж та обёртка над Result, которая Result<T, io::Error>".

Если это неочевидно, но интересно, то я бы рекомендовал не вопросы по форумам задавать, а пойти и почитать Rust Book.

> Почему ошибки аллокации в Vew::new никак не обрабатываются? Считается нормной просто запаниковать и упасть?

Да.

Ответить | Правка | Наверх | Cообщить модератору

227. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли заполнить поле Name (?), 25-Мрт-24, 13:25 
>> Как определить какие возможные ошибки может вернуть данная функция?
> Посмотреть на возвращаемое значение и увидеть там не Result, а io::Result; хлопнуть
> себя ладонью по лбу и сказать "аааа, это ж та обёртка
> над Result, которая Result<T, io::Error>".

А если бы там кроме io::Error были бы другие, например от сторонней либы, что тогда писать?

>> Почему ошибки аллокации в Vew::new никак не обрабатываются? Считается нормной просто запаниковать и упасть?
> Да.

Кек. Нормально для системного языка.

Ответить | Правка | Наверх | Cообщить модератору

233. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (-), 25-Мрт-24, 18:45 
> А если бы там кроме io::Error были бы другие, например от сторонней либы, что тогда писать?

То есть, если функция генерирует ошибки разного типа, и их все хочется возвращать?

Есть разные подходы. Либо ты садишься и создаёшь свой тип ошибок, который включает все, либо берёшь anyhow и оставляешь эту задачу ему. anyhow конструирует типы ошибок в динамике, то есть ты получаешь vtables, аллокации памяти из кучи и все прочие неотъемлимые ООП гнусности.

> Нормально для системного языка.

Да. Бывают исключения, но это де факто статистическая норма.

Ответить | Правка | Наверх | Cообщить модератору

235. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли заполнить поле Name (?), 25-Мрт-24, 22:47 
>> А если бы там кроме io::Error были бы другие, например от сторонней либы, что тогда писать?
> То есть, если функция генерирует ошибки разного типа, и их все хочется
> возвращать?

Ну кажется нормальная задача. Вот функция работает с io + разбирает какой-то формат и там могут быть свои ошибки.

> Есть разные подходы. Либо ты садишься и создаёшь свой тип ошибок, который
> включает все, либо берёшь anyhow и оставляешь эту задачу ему. anyhow
> конструирует типы ошибок в динамике, то есть ты получаешь vtables, аллокации
> памяти из кучи и все прочие неотъемлимые ООП гнусности.

В zig как я понял можно просто написать ?T в возваращаемом типе и все возможные ошибки функции будут выведены в compile time. Странно, что в расте для этого нужны какие-то приседния.


Ответить | Правка | Наверх | Cообщить модератору

254. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от freecoder (ok), 27-Мрт-24, 10:16 
> В zig как я понял можно просто написать ?T в возваращаемом типе
> и все возможные ошибки функции будут выведены в compile time. Странно,
> что в расте для этого нужны какие-то приседния.

Допустим, внутри функции генерируется ошибка типа E и другая ошибка типа U. Чему будет равен обобщающий обе ошибки тип T?

Ответить | Правка | Наверх | Cообщить модератору

261. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли заполнить поле Name (?), 27-Мрт-24, 22:49 
>> В zig как я понял можно просто написать ?T в возваращаемом типе
>> и все возможные ошибки функции будут выведены в compile time. Странно,
>> что в расте для этого нужны какие-то приседния.
> Допустим, внутри функции генерируется ошибка типа E и другая ошибка типа U.
> Чему будет равен обобщающий обе ошибки тип T?

https://ziglang.org/documentation/master/#Merging-Error-Sets

Мне вот интересно как это в расте будет.

Ответить | Правка | Наверх | Cообщить модератору

263. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Карлос Сношайтилис (ok), 31-Мрт-24, 21:21 
А мне вот непонятно, как сделано в зиге.
По твоей ссылке там джойн одинаковых типов - енамов (не знаю как они в зиге называются).
А если у тебя ошибки разных типов?
Енам, строка, число, объект. Зиг просто в кучу сваливает?
А если конфликт имён, как понять где какая ошибка? Или не скомпилируется?
Ответить | Правка | Наверх | Cообщить модератору

236. "Выпуск языка программирования Rust 1.77"  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 25-Мрт-24, 22:49 
>> Нормально для системного языка.
> Да. Бывают исключения, но это де факто статистическая норма.

https://lkml.org/lkml/2021/4/14/1099

Ответить | Правка | К родителю #233 | Наверх | Cообщить модератору

256. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от freecoder (ok), 27-Мрт-24, 10:30 
Это было 3 года назад.

Ответить | Правка | Наверх | Cообщить модератору

260. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли заполнить поле Name (?), 27-Мрт-24, 22:47 
> Это было 3 года назад.

А что изменилось?

Ответить | Правка | Наверх | Cообщить модератору

255. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от freecoder (ok), 27-Мрт-24, 10:25 
> Кек. Нормально для системного языка.

Так-то Rust не является специализированным языком для системного программирования, скорее это язык общего назначения, допускающий применение в системном программировании. Проблема с паниками при аллокации - со временем решается в языке. В случае с `Vec`, если вам нужно обработать ошибку аллокации, используйте метод `try_reserve`.

Ответить | Правка | К родителю #227 | Наверх | Cообщить модератору

99. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли (-), 22-Мрт-24, 19:50 
> https://ibb.co/ZYfJDwM
> Когда вижу такой синтаксис, моя рука тянется к нагану

Просто прими факт что ты неосилятор.
Или это уже старческая деменция.
Или просто уровень дундучности превышает средний по населению.

Народ как-то осваивает последние С++, а там синтаксис ИМХО посложнее растовского
constexpr auto do(std::string_view param) noexcept -> std::string;

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

101. "Выпуск языка программирования Rust 1.77"  –1 +/
Сообщение от Аноним (101), 22-Мрт-24, 19:52 
>constexpr auto do(std::string_view param) noexcept -> std::string;

а что не так, что именно тут выглядит сложным?

Ответить | Правка | Наверх | Cообщить модератору

110. "Выпуск языка программирования Rust 1.77"  +5 +/
Сообщение от Вы забыли (-), 22-Мрт-24, 20:09 
А что в растовском коде сложного?)
Мне растовский код понятен, хотя я прочитал всего одну книжку и написал пару мелких утилит.
Ответить | Правка | Наверх | Cообщить модератору

172. "Выпуск языка программирования Rust 1.77"  –2 +/
Сообщение от Аноним (-), 23-Мрт-24, 14:19 
Ты не правильно составил своё предложение, вот так надо: "Я прочитал всего одну книжку и написал пару мелких утилит, поэтому мне растовский код понятен".
Ответить | Правка | Наверх | Cообщить модератору

115. "Выпуск языка программирования Rust 1.77"  +5 +/
Сообщение от Вы забыли заполнить поле Name (?), 22-Мрт-24, 20:24 
> https://ibb.co/ZYfJDwM
> Когда вижу такой синтаксис, моя рука тянется к нагану

Ты впервые pattern matching увидел что ли? Я тебя разочарую, но в других языках он почти также выглядит, даже в питоне.

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

147. "Выпуск языка программирования Rust 1.77"  –3 +/
Сообщение от Аноним (-), 22-Мрт-24, 23:22 
> Ты впервые pattern matching увидел что ли?

Тише! Тише!
Не пугаю любителей дыряшки такими сложными терминами.
Они застряли где-то в 80-90х, нужно немного подождать пока они эволюционируют)))

Ответить | Правка | Наверх | Cообщить модератору

164. "Выпуск языка программирования Rust 1.77"  +3 +/
Сообщение от Вы забыли заполнить поле Name (?), 23-Мрт-24, 10:00 
В середине 80х, а тем более 90х уже были ocaml, erlang, так что ты ерунду сказал.
Ответить | Правка | Наверх | Cообщить модератору

185. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (180), 23-Мрт-24, 15:49 
В середине 80-х в СНГ только Turbo C был ворованный (впрочем, все писали на паскале), а в 90-х начали появляться нормальные книжки по C++. Ну о чём вы, какой ocaml, какой erlang.
Ответить | Правка | Наверх | Cообщить модератору

201. "Выпуск языка программирования Rust 1.77"  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 23-Мрт-24, 19:40 
> Ну о чём вы, какой ocaml, какой erlang.

Рекомендую посмотреть год создания этих языков. В них есть pattern matching.

Ответить | Правка | Наверх | Cообщить модератору

204. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (204), 23-Мрт-24, 20:42 
Рекомендую ещё раз перечитать мой комментарий. У наших тогда были паскаль, сишечка и что-то краем уха про smalltalk слышали (но никто не видел). Оттуда и растут ноги обожествления ассемблера и сишечки — больше просто ни черта и не было.
Ответить | Правка | Наверх | Cообщить модератору

206. "Выпуск языка программирования Rust 1.77"  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 23-Мрт-24, 21:20 
> Рекомендую ещё раз перечитать мой комментарий. У наших тогда были паскаль, сишечка
> и что-то краем уха про smalltalk слышали (но никто не видел).
> Оттуда и растут ноги обожествления ассемблера и сишечки — больше просто ни черта
> и не было.

Ты за всех говоришь? Книга "Автоматическая обработка данных: Язык лисп и его реализация / С.С. Лавров, Г.С. Силагадзе" была издана в 78 году. Прочитай также про реализации лиспа для БЭСМ-6

Ответить | Правка | Наверх | Cообщить модератору

215. "Выпуск языка программирования Rust 1.77"  –2 +/
Сообщение от Аноним (204), 24-Мрт-24, 11:44 
Узок был круг этих людей, страшно далеки они были от народа.
Ответить | Правка | Наверх | Cообщить модератору

221. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 25-Мрт-24, 11:45 
"Паттерн-матчинг" в СССР появился в 1966-м году, когда Турчин В.Ф. создал на основа нормальных алгорифмов Маркова язык Рефал.

А "в 90-х начали появляться нормальные книжки по C++" это пёрл из разряда "пытались писать ядро Linux на плюсах" или "STL означает стандард либрари". Язык стандартизован в 1998-м, а STL это первые буквы фамилий Степанов и Ли.

Ответить | Правка | К родителю #185 | Наверх | Cообщить модератору

228. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли заполнить поле Name (?), 25-Мрт-24, 13:39 
>а STL это первые буквы фамилий Степанов и Ли

Почему Степнову выделили 2 буквы, а Ли всего одну?

Ответить | Правка | Наверх | Cообщить модератору

239. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 26-Мрт-24, 10:06 
>>а STL это первые буквы фамилий Степанов и Ли
> Почему Степнову выделили 2 буквы, а Ли всего одну?

Потому что эксперты не умеют искать тривиальные ответы самостоятельно.

"Я вернулся к разработке обобщенной библиотеки в 1992, когда Билл Ворли, бывший заведующим моей лаборатории, запустил проект по алгоритмам со мной в качестве руководителя.
...
В 1992 г., когда проект был сформирован, в нём было 8 человек. Постепенно группа уменьшалась, и в итоге включала двоих — меня и Менг Ли."

Ответить | Правка | Наверх | Cообщить модератору

241. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Мрт-24, 10:11 
>>>а STL это первые буквы фамилий Степанов и Ли
>> Почему Степнову выделили 2 буквы, а Ли всего одну?
> Потому что эксперты не умеют искать тривиальные ответы самостоятельно.
> "Я вернулся к разработке обобщенной библиотеки в 1992, когда Билл Ворли, бывший
> заведующим моей лаборатории, запустил проект по алгоритмам со мной в качестве
> руководителя.
> ...
> В 1992 г., когда проект был сформирован, в нём было 8 человек.
> Постепенно группа уменьшалась, и в итоге включала двоих — меня и
> Менг Ли."

И как это отвечает на  вопрос?

Ответить | Правка | Наверх | Cообщить модератору

242. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 26-Мрт-24, 10:15 
>[оверквотинг удален]
>>> Почему Степнову выделили 2 буквы, а Ли всего одну?
>> Потому что эксперты не умеют искать тривиальные ответы самостоятельно.
>> "Я вернулся к разработке обобщенной библиотеки в 1992, когда Билл Ворли, бывший
>> заведующим моей лаборатории, запустил проект по алгоритмам со мной в качестве
>> руководителя.
>> ...
>> В 1992 г., когда проект был сформирован, в нём было 8 человек.
>> Постепенно группа уменьшалась, и в итоге включала двоих — меня и
>> Менг Ли."
> И как это отвечает на  вопрос?

Это объясняет, почему эксперт спроецировал свой опыт и написал "Степнову выделили", вместо "Степанов так захотел". Проще говоря, вопрос не имеет смысла.

Ответить | Правка | Наверх | Cообщить модератору

244. "Выпуск языка программирования Rust 1.77"  +2 +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Мрт-24, 11:12 
>[оверквотинг удален]
>>> "Я вернулся к разработке обобщенной библиотеки в 1992, когда Билл Ворли, бывший
>>> заведующим моей лаборатории, запустил проект по алгоритмам со мной в качестве
>>> руководителя.
>>> ...
>>> В 1992 г., когда проект был сформирован, в нём было 8 человек.
>>> Постепенно группа уменьшалась, и в итоге включала двоих — меня и
>>> Менг Ли."
>> И как это отвечает на  вопрос?
> Это объясняет, почему эксперт спроецировал свой опыт и написал "Степнову выделили", вместо
> "Степанов так захотел". Проще говоря, вопрос не имеет смысла.

Душно стало, надо проветрить.

Ответить | Правка | Наверх | Cообщить модератору

246. "Выпуск языка программирования Rust 1.77"  –2 +/
Сообщение от n00by (ok), 26-Мрт-24, 11:55 
>[оверквотинг удален]
>>>> заведующим моей лаборатории, запустил проект по алгоритмам со мной в качестве
>>>> руководителя.
>>>> ...
>>>> В 1992 г., когда проект был сформирован, в нём было 8 человек.
>>>> Постепенно группа уменьшалась, и в итоге включала двоих — меня и
>>>> Менг Ли."
>>> И как это отвечает на  вопрос?
>> Это объясняет, почему эксперт спроецировал свой опыт и написал "Степнову выделили", вместо
>> "Степанов так захотел". Проще говоря, вопрос не имеет смысла.
> Душно стало, надо проветрить.

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

Ответить | Правка | Наверх | Cообщить модератору

253. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (253), 27-Мрт-24, 03:50 
Почему тебя так STL волнует? Месяц назад ты зачем-то повторил эту фразу в ответ на рассуждения Страуструпа о стандартной библиотеке в 1988.

В принципе под STL имеют в виду то оригинальную библиотеку Степанова, то соответствующую часть стандартной библиотеки, то её целиком (жаловаться в Майкрософт, не сюда, это он так делает).

Ну и отдавая дань твоему умению лезть в бутылку, надо на "STL (что значит "Степанов и Ли")" возразить, что это Standard Template Library, ведь именно это написано в названии, а другое не написано и, следовательно, не существует.

Ответить | Правка | К родителю #221 | Наверх | Cообщить модератору

258. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 27-Мрт-24, 11:33 
> Почему тебя так STL волнует?

Потому что так себя ведёт воображаемый я в твоём маня-мирке.

> Месяц назад ты зачем-то повторил эту фразу
> в ответ на рассуждения Страуструпа о стандартной библиотеке в 1988.

Да? Охотно верю, но не помню, хоть убей. Ты помнишь, значит волнует меня. Поздравляю.

> В принципе под STL имеют в виду то оригинальную библиотеку Степанова, то
> соответствующую часть стандартной библиотеки, то её целиком (жаловаться в Майкрософт,
> не сюда, это он так делает).

Если здесь пишут, что STL это стандартная библиотека, то в ответ я наверняка напишу, что это заблуждение. Как и про то, что ядро якобы пробовали писать на плюсах (стандартизованных значительно позже).

> Ну и отдавая дань твоему умению лезть в бутылку, надо на "STL
> (что значит "Степанов и Ли")" возразить, что это Standard Template Library,
> ведь именно это написано в названии, а другое не написано и,
> следовательно, не существует.

В названии чего? HP STL? SGI STL? STLPort? Или страницы в Википедии? В то, что ты видел оригинальные сорцы Степанова и Ли, я не верю.

"STL означает Степанов и Ли" - это слова самого Степанова. Он автор и авторитет в данном вопросе.

Ответить | Правка | Наверх | Cообщить модератору

193. "Выпуск языка программирования Rust 1.77"  +2 +/
Сообщение от Аноним (-), 23-Мрт-24, 17:03 
Паттерн матчинг растёт из 70х. В C++ перегрузка операторов явно под влиянием тех идей, только как обычно в C++ через известное место и с полной потерей исходной задумки.
Ответить | Правка | К родителю #147 | Наверх | Cообщить модератору

222. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 25-Мрт-24, 11:51 
Перегрузка не имеет отношения к паттерн-матчингу, поскольку она времени трансляции, а сопоставление с образцом происходит во время исполнения. Но когда в голове каша из темплейтов, генериков, шаблонов и образцов, и не то можно нафантазировать.
Ответить | Правка | Наверх | Cообщить модератору

234. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (-), 25-Мрт-24, 18:47 
Совершенно верно, перегрузка -- это паттерн-матчин компайл-тайма. Причём нисколько не деструктурирующий, и вообще непонятно зачем это было запиливать. Обычная стауструповая позиция "у них есть, значит и у меня будет".
Ответить | Правка | Наверх | Cообщить модератору

240. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 26-Мрт-24, 10:10 
"Сигнатура функции" - это про тип функции, а не про значения её аргументов.
Ответить | Правка | Наверх | Cообщить модератору

186. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от Аноним (180), 23-Мрт-24, 15:49 
Вам в соседнюю новость про COBOL.
Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

223. "Выпуск языка программирования Rust 1.77"  +/
Сообщение от n00by (ok), 25-Мрт-24, 11:54 
> https://ibb.co/ZYfJDwM
> Когда вижу такой синтаксис, моя рука тянется к нагану

Правильно тянется. Я не знаю Rust, но в коде всё понятно. Не понятно, однако, зачем же стреляться?

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру