Как стать автором
Обновить
234.67
ITSumma
Эксперты в производительности

Разработан язык программирования Ć

Время на прочтение2 мин
Количество просмотров24K
Польский разработчик Пётр Фусик объявил о создании нового языка программирования Ć, который решает одну специфическую проблему: написание кода, который потом будет удобно использовать в C, C++, C#, Java, JavaScript, Python, Swift и OpenCL одновременно.

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

Синтаксис похож на синтаксис языка C#. Автор пишет, что на самом деле даже подсветка синтаксиса C# работает достаточно хорошо для Ć. Но при этом Ć не является клоном C# или его подмножеством: «Различия обусловлены необходимостью полностью автоматизированной трансляции в эффективный код на C и JavaScript в частности».

Ć является объектно-ориентированным языком программирования, поскольку большинство целевых языков являются таковыми: «Это можно рассматривать как улучшение по сравнению с C, тем не менее, объектно-ориентированный вывод C довольно прост в использовании для программистов на C».

Зависимости от библиотек рантайма минимальны. Вывод на C часто представляет собой самодостаточную пару .c/.h, содержащую переносимый, человекочитаемый код C99. Аналогично, вывод на других языках не зависит ни от чего, кроме стандартного языка.

Управление памятью нативное для целевого языка. Если в целевом языке доступен сборщик мусора, то он используется. В противном случае (в C и C++) объекты и массивы выделяются в стеке для максимальной производительности или в куче для дополнительной гибкости. При выделении в куче используются интеллектуальные указатели C++.

Работа над языком Ć велась много лет, и вот он наконец дорос до «официального» объявления.

Пример кода на Ć:

public static class HelloCi
{
	public const int VersionMajor = 0;
	public const int VersionMinor = 3;
	public const string Version = VersionMajor + "." + VersionMinor;

	/// Returns `true` if and only if `x` is a power of 2 (1, 2, 4, 8, 16, ...).
	public static bool IsPowerOfTwo(int x)
	{
		return (x & x - 1) == 0 && x > 0;
	}

	/// Calculates greatest common divisor of `a` and `b`.
	public static int GreatestCommonDivisor(int a, int b)
	{
		// Euclidean algorithm
		while (b != 0) {
			int t = b;
			b = a % b;
			a = t;
		}
		return a;
	}

	/// Checks whether the given string is a palindrome.
	/// Note: empty string is considered palindrome.
	public static bool IsPalindrome(string s)
	{
		int j = s.Length;
		for (int i = 0; i < --j; i++)
			if (s[i] != s[j])
				return false;
		return true;
	}

	/// Gets a boolean value out of strings `"true"` and `"false"`.
	/// In other cases returns `defaultValue`.
	public static bool ParseBool(string s, bool defaultValue)
	{
		if (s == "true")
			return true;
		if (s == "false")
			return false;
		return defaultValue;
	}

	/// Converts an unsigned integer from its decimal representation.
	public static int ParseUnsignedInt(string s)
	{
		if (s == null || s.Length == 0)
			throw "null or empty argument";
		int n = s.Length;
		int r = 0;
		for (int i = 0; i < n; i++) {
			int c = s[i];
			if (c < '0' || c > '9')
				throw "Not a digit";
			// TODO: detect overflow
			r = r * 10 + c - '0';
		}
		return r;
	}
}

См. также Haxe.
Теги:
Хабы:
Всего голосов 69: ↑42 и ↓27+15
Комментарии62

Другие новости

Информация

Сайт
www.itsumma.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
ITSumma