Как насчет следующего:
int coluna(int sz, int tabuleiro[sz][sz])
{
int i, j, k, m;
i= 0;
m= sz;
while (i<m) {
int allzeroes= 1;
for (j=0; j<sz; j++) {
if (tabuleiro[i][j]!=0) {
allzeroes= 0;
break;
}
}
if (allzeroes) { // col i is all zeroes
// move all remaining cols down 1 col
for (j=i; j<m-1; j++)
for (k=0; k<sz; k++)
tabuleiro[j][k]= tabuleiro[j+1][k];
// zero last column
for (k=0; k<sz; k++)
tabuleiro[m-1][j]= 0;
// new last col that is not zero
m--;
}
else i++;
}
return 1;
}
Ни один, который я видел.
Несомненно, существуют "новые" языки, открывающиеся все время. Но я использовал кавычки паники, потому что все примеры, обычно предлагаемые:
Для конкретных примеров:
Работа продвижения, популяризации, применения и совершенствования их (и многие другой) важные идеи стоит. Но это не делает то использование действительно инновационным.
Конечно, я буду рад, если кто-либо может обеспечить пример действительно исходного понятия в программировании, которое не существовало десять лет назад.
Я сказал бы, что последние дополнения C# как LINQ, дополнительные методы, лямбда-выражения и остальные являются относительно новыми. Если они не будут большими прямо сейчас, то они будут.
ASP.NET MVC, хотя это не функция языка, будет большим (я почти уверен), хотя я знаю многих, никогда не будет принимать его.
Синий язык программирования демонстрирует большой потенциал. Подумайте «Python, но проще в использовании и расширении».
Нет, я не говорю, что Blue лучше, чем Python, я просто говорю, что его варят, он прост в использовании и (уже через пару лет) довольно стабилен. Это росло на мне около года :)
Язык E сделал доступным облегченный конвейер обещаний. Это должно стать решающей идеей для предстоящей многоядерной революции, поскольку она позволяет писать код, который легко распараллеливается, имеет недорогие зависимости между взаимодействующими подпроцессами и обходит все стандартные проблемы с управлением блокировками и устранением тупиковых ситуаций. , Основные идеи в E были перенесены на множество других языков . E является частью длинной (хотя и несколько непонятной) линейки языков объектных возможностей, которая вносит очень важный вклад в надежность и безопасность программного обеспечения. Е сейчас около 10 лет.
Хорошо, мы знаем Контракты Кода начиная с Eiffel - таким образом, этому 20 лет + годы и Анализ кода в течение многих лет и лет, но я никогда не видел такой полной комбинации Контрактов Кода, Анализа кода и Поблочного тестирования как в c# 4.0 и Pex. Возможно, я неправ и не осведомлен о других языках и продуктах, которые действительно предлагали тот уровень функциональности несколько лет назад - но я, конечно, назову ту степень справки к "bugfree" программному обеспечению функцией. Так, действительно ли это является новым?
Партия "нового" языка предназначается один или другой хорошо на месте VM, а именно, JVM или CLR. Это позволяет концентрироваться на дизайне синтаксиса, и "философия" больше, чем на реализации (усиливающий существующий оптимизировал VM, GC, библиотеки, и т.д.).
Интересно, некоторые языки предназначаются для обеих платформ, как Язык программирования Вентилятора.
Другие языки просто переводят себя на другой язык (обычно C), таким образом полагаясь на некоторый портативный или локальный оптимизированный компилятор, чтобы сделать хорошее задание.
Я нашел Haxe интересным, потому что он предназначается для нескольких languages/VM: JavaScript, Flash, NekoVM или даже PHP.
Как другие сказали, трудно найти действительно новые понятия сегодня. Частично, потому что много уже были исследованы, частично потому что партия программистов является ленивой и запутанной, если новый язык не использует знакомый синтаксис (я видел партию жалоб людей в списке рассылки Lua, запрашивая, чтобы использование {и} вместо/закончило - см. также жалобы на JavaFX, не являющийся Java...), уже не говоря о новом понятии!
Язык программирования Scala находится под контролем 10 лет (я полагаю, что он был первоначально выпущен в 2001), и, как могли утверждать, был первым:
OMeta меньше чем 2 года и является языком для создания других языков. По-моему, это более выразительно, чем языки как предстоящий MGrammar Microsoft.
Самая прохладная идея, которую это имеет, состоит в том, что можно создать языки объектно-ориентированным способом (например, Вы могли создать язык мэшапа Ruby и грамматик C#).
Также хорошо, что синтаксис выглядит почти идентичным BNF и таким образом довольно читаемым.
Я записал больше об этом здесь.
очень ожидание Шикнуть.
Шиканье является объектно-ориентированным, языком программирования со статическим контролем типов в активной разработке с 2003, которая стремится использовать поддержку Общеязыковой инфраструктуры Unicode, интернационализации и веб-приложений, при использовании вдохновленного Python syntax1 и особого акцента на расширяемости компилятора и языке. Некоторые знаменитые функции включают вывод типа, генераторы, мультиметоды, дополнительный утиный ввод, макросы, истинные закрытия, приправление карри и Первоклассные функции.
Я не думаю, что недавние инновации изобретали новые возможности. Это делало старые идеи доступными (и практичное) в основных настройках. Лямбда-выражения являются ярким примером этого - старый как выступы, но подавляющее большинство разработчиков не будет встречаться с ними перед C# 3 и VB9.
Точно так же две функции, возможно, существовали независимо прежде, но никогда на том же языке. Я не хотел бы начинать требовать, какие комбинации являются новыми, но это достойно рассмотрения.
Природа дженериков.NET, "новых" между прочим?, я не знаю, что в достаточном количестве вычислительной истории говорится, но существуют четкие различия между нею и любым Java дженерики (со стиранием типа) или шаблоны C++ (где специализация является действительно бизнесом времени компиляции насколько я могу сказать, требуя источника для шаблона).
Как насчет F# :). Существуют также тонны новых языков в разработке сольными разработчиками. Как scala, jruby, отличные, шикают и т.д.
Чтобы язык завоевал популярность, ему действительно нужна большая поддержка со стороны крупной компании, таким образом, мы застрянем с тем, что мы получили некоторое время. Хотя Sun и MS вкладывают капитал в большой степени в создание их платформ (JVM, CLR) более открытый для этих языков. Значения по умолчанию будут Java и C# на данный момент, но только время покажет.
Я думаю, что формулировка вопроса предполагает, что нет никаких инноваций, но на самом деле всего, что показано в обсуждении, вот то, что инновации занимают десятилетия для превращения его в господствующую тенденцию.
Если Вы задали этот вопрос приблизительно 20 лет назад, когда OO было одной из 'больших новых вещей' с C++ и Smalltalk и этажеркой, люди могли просто ответить, что это был просто Simula (1967) повторно упакованный. Но в 1970, я не думаю, что любой рассмотрел бы объекты быть 'большими инновациями', скорее они просто будут 'интересной синтаксической точностью' на том языке Simula. Со временем OO развилось, люди распознали, как OO является естественным для modeling/structing систем, шаблоны разработки были найдены... и теперь сегодня очень много языков просто считают OO само собой разумеющимся ''. Но трудно найти в любой момент вовремя, где люди сказали бы, что 'OO было большой новой идеей', потому что, когда это было новым, никто не ценил ее объема влияния на поле разработки программного обеспечения, и к тому времени, когда ее досягаемость была очевидна, это больше не было новым.
20 лет с этого времени, возможно, все новые/популярные языки будут иметь функцию как 'классы типа' от сегодняшнего Haskell (это - уничтожающая функция), но это уже 'слишком старо' по критериям этого вопроса, чтобы быть инновациями, даже при том, что это может быть 'следующая большая вещь'.
Таким образом да, я держал пари, что существуют новые вещи под солнцем, вероятно, сотни, но они все выключены на крошечных экспериментальных языках и мы не будем ценить новинки до несколько десятилетий спустя, когда лучшие из сегодняшних идей будут совершенствованы/доказаны и превращают свой путь в господствующую тенденцию.
Языки развиваются. Вам не обязательно нужен новый язык для получения новой функции языка. Как пример, Haskell не является новым языком, но он действительно имеет много "новых" функций, включая STM.
Язык программирования D просто находится под контролем 10 лет. Его уникальные функции включают переходную константу (все достижимое от объекта константы является также константой), оценка функции времени компиляции и способность аннотировать функции, поскольку чистый и иметь их статически проверил компилятор для побочных эффектов, видимых вне функции. Также включенный шаблонная система, которая помещает шаблоны C++, дженерики Java/C#, и т.д. к позору:
static if
оператор, подобный тому, что существует на бумаге в C++ 0x, на самом деле реализован и работает.Википедия имеет хорошую временную шкалу о 1-м появлении языков программирования - это показывает, что существует несколько языков, что бегунок в подобный в годах 2000 +, хотя я верю им, не является широко используемыми языками (уже?).
AgentSpeak (L) язык для программирования интеллектуальных агентов. Это основано на Прологе (который очень стар), но существуют некоторые очень определенные функции, и это совершенно ново.
Можно проверить полностью интерпретатор по имени Jason.
Powershell как язык не старше 10, конечно, не языковые функции.