Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/91: Рейтинг темы: голосов - 91, средняя оценка - 4.54
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,679
Записей в блоге: 9
14.04.2015, 13:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Правда, этот язык решил усидеть на двух стульях — он предоставляет сборщик мусора, автоматическое управление памятью и некоторые другие защиты программиста от самого себя или от коллег, но в то же время позволяет обойти некоторые свои ограничения, если программист об этом попросит
Да, наверно, большинство языков с GC позволяют, в случаях взаимодействия с программами на языках без GC, выделять память не контролируемую GC. И Haskell это позволяет - прямую работу с указателями. И даже финализатор от другого языка к указателю подвесить. Но всё это именно для межъязыкового взаимодействия.

Цитата Сообщение от HighPredator Посмотреть сообщение
Верно, еще как предвзят.
Зря. В том числе, и в случае низкоуровневого программирования. В крайнем случае, в критических ситуациях, можно тормозить GC (в языках для написания дров или программ реального времени это понадобится, да). Или иметь треды, более приоритетные чем GC. Сам раздумываю как написать GC для восьмитных МК, и не скуки ради, а пользы для.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2015, 13:38
Ответы с готовыми решениями:

Олимпиадное программирование : C++ VS Python.
Хорошие люди добились того, что Python 3.0 разрешен на олимпиадах. К сожалению я не знаю ни C++ ни Питон.))) И последнюю олимпиаду...

Промышленное программирование
Ищу людей с опытом работы с ком портами и общения по ним с контролерами, разумеется разрабатывающих софт на с++, для обмена опытом! Буду...

Олимпиадное программирование
Всем доброго времени суток! Прошу помощи с задачей с тимуса 1570. Ссылка: http://acm.timus.ru/problem.aspx?space=1&num=1570 . Не имею...

308
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
14.04.2015, 13:43
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Зря
Очень может быть. Однако, сейчас нет ни языка, ни технологии, которые были бы проработаны на уровне, достаточном, чтобы меня переубедить. Если вдруг таковые есть, а я просто о них еще не знаю, то направьте.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 13:43  [ТС]
Цитата Сообщение от nullxdth Посмотреть сообщение
Кстати да, GC является, пожалуй, единственным качественным отличием D от C++.
Ну ещё миксины (которые надерут плюсовому препроцессору одно место), ranges (вместо невменяемых итераторов) и ещё очень много полезных и мелких элементов.
Цитата Сообщение от HighPredator Посмотреть сообщение
Прикольно, вы напрочь не умеете читать)) Я тут с вами со смеху помру)) Еще раз для тех кто в танке:
Оу, ну тогда вам вдвойне не повезло: вам приходится подчищать сразу за тремя вещами: за C Денниса, за C++ Бьёрна и, конечно же, за самим собой (как говорится, за папу, за маму, за бабушку - а скоро и за дедушкой подчищать придётся).
Цитата Сообщение от HighPredator Посмотреть сообщение
Верно, еще как предвзят.
Я тоже раньше считал, что про очистку памяти в C/C++ может забыть только полный дурак, но теперь понимаю, что к хорошим вещам быстро привыкаешь, а плохие вещи быстро забываешь.
Цитата Сообщение от Voivoid Посмотреть сообщение
И? Хочешь сказать, что он бы не согласился что-ли? Или что?
Конечно, да. Александреску даже в своей книге пишет, что статические массивы используют только пенсионеры (конечно, про пенсионеров нет ни слова, но Александреску ясно даёт понять, что чаще всего используются массивы на куче). Да, и к тому же небольшая эволюция:
Tango -> Phobos.
Статические массивы -> практически полный отказ от массивов на стеке (T[n] - статический, T[] - динамический, именно поэтому и нельзя создавать массивы на стеке, где не указано количество аргументов).
P.S. Да, и к тому же, как ты собрался создать статический массив для n элементов (n вводится с клавиатуры, что вполне логично)?
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
14.04.2015, 13:50
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Статические массивы -> практически полный отказ от массивов на стеке (T[n] - статический, T[] - динамический, именно поэтому и нельзя создавать массивы на стеке, где не указано количество аргументов).
Говно какое-то, а не дизайн. Вот тебе 2 ключевых слова спецификатора переменных: stack и heap. А по умолчанию пусть оптимизатор выбирает что лучше использовать. Учти когда будешь писать свой Golden D
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 13:57  [ТС]
Цитата Сообщение от HighPredator Посмотреть сообщение
Однако, сейчас нет ни языка, ни технологии, которые были бы проработаны на уровне, достаточном, чтобы меня переубедить. Если вдруг таковые есть, а я просто о них еще не знаю, то направьте.
Разработкой GC в D занимается полулиспер, так что вы в нужной теме.
Всё что вам остаётся делать, так это дожидаться ISO стандарта, к которому вы так привязаны. Просто в D грядут колоссальные изменения, поэтому о стандарте пока что помалкивают.
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Да, наверно, большинство языков с GC позволяют, в случаях взаимодействия с программами на языках без GC, выделять память не контролируемую GC.
А Java и С# позволяют?
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Зря. В том числе, и в случае низкоуровневого программирования.
Конечно, зря. Я тоже раньше не долюбливал Java и C# из-за сборщика мусора, но теперь без него жить не могу, когда ощутил эту фичу в действии.
Цитата Сообщение от nullxdth Посмотреть сообщение
Вот тебе 2 ключевых слова спецификатора переменных: stack и heap. А по умолчанию пусть оптимизатор выбирает что лучше использовать.
Андрей Александреску и здесь выбрал золотую середину (от отрывок из блога обычного пользователя):
Отдельной большой статьи (и не одной) заслуживает описания работы массивов. Тут есть массивы с фиксированным количеством элементов, и с переменным размером. Массивы знают свою длину, и проверяют выход за границы, но при желании это можно отключить и обойти. Выделение памяти для элементов массива работает довольно хитро, гарантируется, что все элементы расположены в памяти последовательно, а массив только знает, где у них начало и конец. Из массива можно получать его участок (срез), причем гарантируется, что срез указывает на ту же область памяти, что входит в исходный массив. Но исходный массив при некоторых обстоятельствах (при увеличении своего размера) может скопировать свои элементы в другую область памяти. При этом может возникнуть ситуация, когда массив и срез хранят указатели на одну область памяти, а потом внезапно массив может начать указывать на другую область памяти. Данные при этом не будут испорчены благодаря подсчету ссылок, но момент в языке спорный.
Сишникам доставит:
Во-первых, в D сделан по-человечески импорт классов и функций из модулей. Нет этих проклятых #include, так «любимых» C-шниками за русскую рулетку в стиле «подключим эту библиотеку и посмотрим, не перестанет ли компилиться весь проект». Импорт функций рекомендуется использовать как:
C++
1
import std.algorithm;
а по сути это работает как импорт всех функций в Python (from math import *), но только если в Python такая запись не рекомендуется из-за опасности перезаписи имеющейся функции, то здесь такую ситуацию отслеживает компилятор, и если появляется неоднозначность, то он не даст вызвать импортированную функцию без явного указания модуля для уточнения. Работа с модулями и пакетами вообще напоминает Python — здесь тоже папка с файлами-модулями образует пакет.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,679
Записей в блоге: 9
14.04.2015, 14:05
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А Java и С# позволяют?
да.
Цитата Сообщение от HighPredator Посмотреть сообщение
Однако, сейчас нет ни языка, ни технологии, которые были бы проработаны на уровне, достаточном, чтобы меня переубедить. Если вдруг таковые есть, а я просто о них еще не знаю, то направьте.
Архитектура? Примерная предметная область?
Я на Java micro edition писал для простых телефонов (не смартфонов). Там даже вещественных чисел нет, но GC есть и не мешает.

Добавлено через 7 минут
Dennis Ritchie, так когда, кстати, де выйдет для андроидов и МК. Особо интересно, в варианте мicro, чтобы хоть в картридеры лезло. Java, вон от энтерпрейза до суперобрезанных вариантов выпускается под широчайший диапазон платформ. Видимо, вот в этом то, де его не переплюнет.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 14:05  [ТС]
А вот и пример полезного атрибута:
В D мне понравилась идея с квалификатором immutable, который напоминает const в других языках, но является еще более ограничивающим, он гарантирует, что не только указатель на объект останется неизменным, но и все содержимое объекта тоже останется без изменений. Приятно, что язык поддерживает ключевое слово nothrow для функций, гарантирующих, что они никогда в жизни не бросят исключения, и не вызовут функции, которые могут бросить исключения.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,679
Записей в блоге: 9
14.04.2015, 14:15
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
В D мне понравилась идея с квалификатором immutable, который напоминает const в других языках, но является еще более ограничивающим, он гарантирует, что не только указатель на объект останется неизменным, но и все содержимое объекта тоже останется без изменений.
А немного изучить плюсы (это про const) и java (это про https://docs.oracle.com/javase... aring.html разрешение бросание исключений) ?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
14.04.2015, 14:18
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Так я не знаю, какую часть этого массива вы хотите вывести (может быть, поделитесь своими мЫслящими)
так разве с дэшного кода это не очевидно?
[12, 13],
[22, 23]

Не по теме:

Вы вообще программист хотя бы?
представляю что будет если ответить нет :D


Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
я ничего не понимаю в C#, да?
вкратце - да
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
14.04.2015, 14:22
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Я на Java micro edition писал для простых телефонов (не смартфонов). Там даже вещественных чисел нет, но GC есть и не мешает.
Можете подробнее рассказать что как?
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
14.04.2015, 14:22
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Конечно, да. Александреску даже в своей книге пишет, что статические массивы используют только пенсионеры
Какие статические массивы? Ты совсем безмозглый что-ли? Там не нужны никакие массивы вообще
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 14:28  [ТС]
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
так когда, кстати, де выйдет для андроидов и МК.
Думаю, что через год. Вообще это дело обсуждали недавно, например, в этой теме:
What is the state of D with Android/iOS
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Java, вон от энтерпрейза до суперобрезанных вариантов выпускается под широчайший диапазон платформ. Видимо, вот в этом то, де его не переплюнет.
Пока что. Кросплатформенность - это одна из крутых фич D (в данный момент dub имеет версию 0.9.23, когда выйдет версия под номером 1.0, dub будет включён в стандартный состав компилятора DMD):
dub: менеджер зависимостей для языка D
P.S. XRuZzz знает про dub намного больше, чем я, потому что он им пользуется. Мне на своих олимпиадах не нужно обеспечивать кроссплатформенность.
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
А немного изучить плюсы (это про const)
Так const в D тоже работает.
Цитата Сообщение от Voivoid Посмотреть сообщение
Там не нужны никакие массивы вообще
Да, я хотел сначала сделать без массивов (но там же указано a1 .. an), а это для олимпиадника прямая команда к созданию массива.
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,679
Записей в блоге: 9
14.04.2015, 14:29
Цитата Сообщение от pycture Посмотреть сообщение
вкратце - да
Ну не надо так буквально.
Я имею ввиду, подход типа
Haskell
1
2
3
4
5
uuid :: IO String
uuid = allocaBytes 16 $ \p -> do
          uuid_generate p -- Функция на сях требующая буфер в 16 байт
          uuid <- peekArray 16 p
          return $ concat $ map toHex uuid
- allocaBytes выделяет 16 байт не контролируемых GC, вызывает лямбду передавая ей выделенный указатель. По завершении лямбды освобождает память. Вводить новых ключевых слов не потребовалось.
Почему так в C# нельзя?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 14:40  [ТС]
Цитата Сообщение от pycture Посмотреть сообщение
так разве с дэшного кода это не очевидно?
D:
C++
1
2
3
4
5
6
7
8
9
10
11
12
import std.stdio;
 
void main() {
    auto a = [
        [1, 2, 3, 4],
        [11, 12, 13, 14],
        [21, 22, 23, 24],
        [31, 32, 33, 34]
    ];
 
    writeln([a[1][1 .. 3], a[2][1 .. 3]]); // [[12, 13], [22, 23]]
}
http://ideone.com/oG5hqr
0
Модератор
 Аватар для Curry
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,679
Записей в блоге: 9
14.04.2015, 14:45
Цитата Сообщение от HighPredator Посмотреть сообщение
Можете подробнее рассказать что как?
Что тут особенно рассказывать - http://www.oracle.com/technetw... index.html
Скачиваете JAVA ME SDK. В качестве IDE я NetBeans использовал. Можно поставить симулятор абстрактного телефона (Хотя у производителей есть свои киты, но тогда работать будет, только, скажем на нокии).
После компиляции получаем .jar - архив с программой и .jad - текстовый файл, в котором будут строчки, типа
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
MIDlet-1: NameXXX,,NameXXX.NameXXXMIDlet
MIDlet-Jar-Size: 65351
MIDlet-Jar-URL: NameXXX.jar
MIDlet-Name: NameXXX
MIDlet-Permissions: javax.microedition.io.Connector.bluetooth.client
MIDlet-Vendor: OOO NAME
MIDlet-Version: 1.1
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
последнии - профили и конфигурации указывают диапазон устройств на которых это будет пахать. Какой профиль у какого девайса ищется в интернете (список девайсов быстро меняется). Зададим бОльшие циферки - получим больше возможностей но работать будет на меньшем кол-ве устройств.
Строка MIDlet-Permissions: javax.microedition.io.Connector.bluetoot h.client означало что я использую в проге не стандартный (но обычно имеющийся) класс. В данном случае, в девайсах с блютусом.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 15:23  [ТС]
Ну всё: теперь можно уложить всех промышленников на лопатки (наконец-то у меня заработала новая версия DlangUI ):

DlangUI - Getting Started
0
Заблокирован
14.04.2015, 15:45
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
C++
1
writeln([a[1][1 .. 3], a[2][1 .. 3]]); // [[12, 13], [22, 23]]
}
Dennis Ritchie, это что двумерный массив?
Если вы забыли...http://ideone.com/7vHNCJ
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.04.2015, 15:54  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
это что двумерный массив?
Это часть двумерного массива, полученная с помощью двумерного среза (слайса):
C++
1
[a[1][1 .. 3 (первый срез)], a[2][1 .. 3 (второй срез)]]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Если вы забыли...http://ideone.com/7vHNCJ
Какое отношение к D имеет разбухший или распухший C#? Тьфу, это вообще F# (вы прежде, чем выкладывать свой код, хотя бы посмотрели что ли, сколько весит экзешник - разбух, наверное, от удовольствия). Так какое-то отношение (язык-то ненативный, а это, как мы знаем, потенциальные тормоза)?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
14.04.2015, 16:16
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
D
C
1
a[1][1 .. 3], a[2][1 .. 3]
т.о. 2D слайсов в дэ нет. нужно руками вырезать одномерные куски и руками собирать из них новый многомерный массив. что и требовалось доказать.
0
Заблокирован
14.04.2015, 16:16
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Это часть двумерного массива, полученная с помощью двумерного среза (слайса):
Dennis Ritchie, а если нужно получить больший кусок, чем [2x2]?
F#
1
2
3
let xs = Array2D.init 10 10 (fun x y -> x * 10 + y)
printfn "[] = \n%A" xs
printfn "[4..7,6..9] = \n%A" xs.[4..7,4..9]
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[] =
[[0; 1; 2; 3; 4; 5; 6; 7; 8; 9]
 [10; 11; 12; 13; 14; 15; 16; 17; 18; 19]
 [20; 21; 22; 23; 24; 25; 26; 27; 28; 29]
 [30; 31; 32; 33; 34; 35; 36; 37; 38; 39]
 [40; 41; 42; 43; 44; 45; 46; 47; 48; 49]
 [50; 51; 52; 53; 54; 55; 56; 57; 58; 59]
 [60; 61; 62; 63; 64; 65; 66; 67; 68; 69]
 [70; 71; 72; 73; 74; 75; 76; 77; 78; 79]
 [80; 81; 82; 83; 84; 85; 86; 87; 88; 89]
 [90; 91; 92; 93; 94; 95; 96; 97; 98; 99]]
[4..7,6..9] =
[[44; 45; 46; 47; 48; 49]
 [54; 55; 56; 57; 58; 59]
 [64; 65; 66; 67; 68; 69]
 [74; 75; 76; 77; 78; 79]]
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
(вы прежде, чем выкладывать свой код, хотя бы посмотрели что ли, сколько весит экзешник - разбух, наверное, от удовольствия).
забавно, но это не мой код. Вы даже забываете, о чем говорили сегодня утром в этой теме...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.04.2015, 16:16

Олимпиадное программирование
Здравствуйте. Посоветуйте, пожалуйста, какие-нибудь книги или интернет-ресурсы по олимпиадному программированию. Очень важно, чтобы было в...

Олимпиадное программирование!
Привет всем!Я начинающий программер и очень хотелось бы решать олимпиадный задачки c acm.sgu.ru! но не хватает знаний по алгоритмам!кто...

Олимпиадное программирование
Доброго времени суток!Собсна сабж: в школе участвовал на олимпиадах по программированию, занимался самостоятельно(т.к. учился в гимназии),...

Олимпиадное программирование 11 класс
Задачу прикрепил во вложение. Задача #3. Буду благодарен за помощь)

Олимпиадное программирование 11 класс
Саша взял тетрадный лист из N*M клеточек и пронумеровал все клетки различными числами. Теперь ему стало интересно, сколько различных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
260
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru