Обновить
64
1.4

Programmer

Отправить сообщение
Как компилятор может исключить вызов, если указатель формируется в рантайме и компилятору просто неизвестно его содержимое? Там может быть null, может быть валидный указатель или ненулевой и невалидный.
В С++ тоже можно вызвать метод от нулевого указателя на объект. Если в методе нет обращений к полям класса, и если метод невиртуальный — все сработает, по той же самой причине что и в Go.
А вот синтаксис, при котором для обращения к полям и методам всегда используется точка (и для объектов и для указателей) — крайне интересен. Я не могу сказать однозначно, хорошо это или плохо, но это тот вопрос который требует всестороннего изучения:)
Россия в плане свобод БЫЛА ничуть ни хуже где-то до 2012 года. А затем кто-то там сорвался с цепи, и понеслось по нарастающей…
«Обратный игнор» есть например в Твиттере, но для открытых аккаунтов он легко обходится заходом без авторизации. То есть твиты пользователя видны всем, кроме тех кого он добавил в какой-то там черный список. Глупая и ненужная функция, если уж так хочется скрыться — там же есть приватные аккаунты, которые не видно никому кроме «друзей». Вряд ли для Хабра «приватные аккаунты» будут иметь смысл, это все-же не соцсеть, а ресурс для публикаций, здесь публичность предусмотрена самой идеологией сайта.
Гугл перевел как «старые волосатые» :)))
Ну так в случае с белым шумом одно другому не помешает, а наоборот поможет:))
Ну значит можно ужать это поле с унарной формы до бинарной?

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

Можно записать и выложить на ютуб. А через несколько лет проснуться знаменитым:)
Ну это понятно, но далеко не все такие фанаты чтобы покупать железо:) А вот софтовый пакет — было бы интересно.
Вообще интересно конечно все это. Я в то время учился в школе, домашнего компьютера не было, только один или два часа в неделю в школе, поэтому собственно эпоха Доса прошла где-то рядом, но тем ни менее оставила то самое первое впечатление от мира IT — яркое и завораживающее, которое теперь вызывает ностальгию.
А когда появился домашний компьюьтер, уже была Win95/98, хотя я пользовался еще некоторое время Нортоном и средой Borland C — уже из винды.

Подаю идею тем, кто помнит больше: попробовать создать Old School DOS Pack, некий пакет под DosBox, содержащий подборку классического и наиболее интересного досовского софта тех времен. Не только файловые менеджеры, но и текстовые редакторы, среды программирования, утилиты, игрушки, в общем все то что ассоциируется у вас с теми временами. Попытаться воссоздать типичную рабочую среду Хакера из 90-х:) Чтобы можно было запустить и окунуться во все это:)
Лайкул вас ообих — мне непонятно и в G+ и в FB.
Вконтакте и Твиттер — вот понятные сети. Твиттер после недавнего изменения интерфейса стал еще понятнее, и интерфейс стал более отзывчивым.
Я считаю что создание литералов длинных чисел должно поддерживаться в языке. А уж как их использовать — это вопрос библиотек.
Для совершенно простой программы на D, которая выглядит как-то так (ничего особенного, просто сделанное на скорую руку нагромождение синтаксических конструкций, единственное требование к которому — быть самодостаточным для компиляции, т.е. не требовать никаких зависимостей)
Заголовок спойлера
module Hello.World;

this() 
{
}

alias void *HANDLE;
alias HANDLE HWND;
alias char CHAR;
alias const(CHAR)*  LPCCH, LPCSTR, PCCH, PCSTR;
alias uint UINT;
alias ushort WORD;

version (Windows) {
extern (Windows) {
nothrow {
@nogc
{
int MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
}
}}}

struct Soo {
	int x, y;
};

int foo(int x, int y)
{
 return x+y;
}

int main()
{
	int i = 12Lu;
	Soo s;
	if(i>10) {
		int j = i;
		s.x = foo(50,50);
	}
	MessageBoxA(cast(void*)0, "test", "hello world", 0);
    return 0;
}


маленький кусок дерева выглядит вот так
Заголовок спойлера


На самом деле ничего особенного, просто я навесил самодельную рефлексию на все структуры синтаксического дерева, чтобы их можно было как-то смотреть в удобном виде.
Спасибо! Там у них и про баг с более низким приоритетом битовых операторов относительно операторов сравнения написано!
Да, вы правы. Мне кажется, я где-то видел такой гибридный синтаксис, но совершенно не помню где. Добавлю, что Scala — в конце, Kotlin — в конце, Nemerle — в конце, Swift — в конце, Nim — в конце, Zig — в конце…
Здесь есть некий конфликт с объявлением параметров функций и полей структур — там обычно тип все равно в начале.
Можно конечно пойти по пути C/C++/C#/Java и просто принять, что если есть два идентификатора, разделенные пробелами — то первый это всегда тип, второй — объект. Но в этом случае нужно очень аккуратно подходить к синтаксису, чтобы не нагородить неоднозначностей.
В некоторых языках statements рассматриваются как выражения, возвращающие значение. В этом случае оператор «точка с запятой» становится чем-то вроде оператора «запятая» из С/С++, освобождая саму запятую для других целей.
Сделайте нормальное неоднобуквенное латинское название:) На самом деле и Си-то некоторое время назад не запросто гуглился.
Уже где-то отвечали. Когда конструкция начинается с ключевого слова, парсить ее гораздо проще (нет неоднозначностей) и быстрее. Причем это касается не только компилятора, но и например среды разработки, в которой нужно «на лету» распарсить буфер редактора, раскрасить его, загрузить в разные деревья списки функций и классов и и т.д.

А объявления переменных кстати в таком формате («КлючевоеСлово Тип СписокОбъектов») лучше всего смотрятся. К тому же, в С++ есть например «const int x = 100», это ведь никого не смущает.

Имена числовых типов — наверное так однозначнее; ведь Си знаменит тем, что там int и char могут быть разных размеров для разных платформ. Хотя олдскульные имена типов тоже неплохи, если жестко задать им размерность в байтах.

Информация

В рейтинге
1 679-й
Зарегистрирован
Активность