首页 > 科技 > 无代码是软件的未来吗?

无代码是软件的未来吗?

最初发布在https://arpandhatt.me。

介绍

创建没有代码的软件的前景诱人。 如果您是一个崭露头角的企业家,则可以创建应用程序而无需学习编程或雇用昂贵的开发人员。 甚至大型公司也可以通过避免软件工程的麻烦来节省资金。 似乎没有代码的未来应该已经在这里了。 但是,无代码开发存在一些基本问题,从而限制了其潜力。

什么是代码?

如果我们热衷于摆脱代码,那么我们应该对什么是代码还是什么不是代码有一个很好的了解。 根据字典的定义,单词代码在软件开发领域中表示"程序指令"。 但是,摆脱计算机指令是不可行的。 因此,我们将定义通俗使用的代码。 这很难描述,但很多人都熟悉。 这可能会敲响钟声(不必担心理解!):

fn calc_scores(students_to_valid_schedules: &BTreeMap>, tries: usize) -> Vec)> {
let mut lengths: Vec = students_to_valid_schedules.values().map(|schedules| schedules.len()).collect();
let mut scores = Vec::new();
let mut rng = thread_rng();
for i in 0..tries {
let random_perm = create_random_permutation(&lengths, &mut rng);
let mut random_schedule_perm = Vec::new();
for (i, (student, schedules)) in students_to_valid_schedules.iter().enumerate() {
random_schedule_perm.push(&schedules[random_perm[i]]);
}
let score = calc_set_score(&random_schedule_perm);
scores.push((score,random_perm));
prune_scores(&mut scores);
}
return scores;
}

fn create_random_permutation(lengths: &Vec, rng: &mut ThreadRng) -> Vec {
let mut out = Vec::new();
for len in lengths {
out.push(rng.gen_range(0,len))
}
return out;
}

那是我用Rust编写的一个较短项目中的一些代码。 如果您不熟悉编程,则可能会有些吓人。 即使您确实有编程经验,但是对于高级语言(例如C#,Python),仍然可能会有一些特殊的符号和语法似乎不必要。 让我们继续前进编程语言的链条。 这是一些Javascript:

const list = new LinkedList();
list.add("red");
list.add("orange");
list.add("yellow");

console.log(list.get(1));

for (const color of list) {
console.log(color);
}
console.log(list.remove(1));

console.log(list.get(1));

const array1 = [...list.values()];
const array2 = [...list];

对于某些人来说,这可能更容易理解。 奇怪的符号更少,语法更简洁。 我假设每个人仍然会考虑此代码。 让我们再上一个台阶。 看一下这个Python:

def graph_mat(title, values, width=10):
maximum = max(values)
mat = []
mat.append(title[:width] + " " * max(0,width - len(title[:width])))
for value in values:
mat.append(bar(value/maximum, width=width))
return mat


def graph_all_mats(data_dict, iters, width=10):
mats = []
for key, data in data_dict.items():
mats.append(graph_mat(key, data, width=width))

for l in range(iters+1):
row = ""
for mat in mats:
if len(mat) > l:
row += "|" + mat[l] + "\t"
else:
row += "|" + width * " " + "\t"
print(row)

Python被认为是最易读的编程语言之一。 创建它是为了使编程入门尽可能容易。 现在,它已成为最受欢迎的语言之一,并且在数据科学等领域排名第一。 但是,大多数人仍然会考虑使用此代码。 让我们进一步迈进Scratch,这是一种与到目前为止所看到的语言截然不同的编程语言:

世界各地都在使用它来教小学生如何编码。 通过使用这些块而不是文本,它们可以避免复杂语法的复杂性以及由于错误输入而引起的陷阱。 但是,如上所述,这仍然可能变得复杂。 我们可以继续,但是我们已经对大多数人丢弃了编程中最令人沮丧的部分之一:打字。 这是关于通用编程语言所能获得的。 从这里他们不会变得简单多了。 现在,让我们深入研究通用语言之外的内容,并深入研究用于特定目的的工具。 一个常见的示例是Square发生器,Wix和Weebly等网站生成器。 这些帮助用户通过拖放网页元素(例如文本和图像)而不是代码段来创建网站。 他们隐藏了代码,因为该工具所要求的灵活性已达到临界点。 临界点在哪里取决于应用程序。

总之,这些无代码平台只是Rust的一部分,就像Rust,Javascript和Python一样。 最后,您仍然在提供计算机说明。 如果我们返回字典定义,则说明您正在编码。 您可能没有在键入代码,而是在拖放指令以供计算机执行。 指令的复杂性仍将取决于目标的复杂性。 如果您只想在网站上放一些图片,则无需知道如何编写循环和理解数据结构。 您只需要找到一个工具即可将您的图片放在网站上。 如果您想构建一个可以保护隐私的联系人跟踪的应用,那么您就必须动手了,网站生成器不是构建这样的东西的最佳选择(甚至根本不是选择)。

判决是什么?

答案是"不完全"。 无代码开发将进入许多应用程序。 它已经有。 许多信号处理应用程序不使用代码开发。 人们无需编写代码,而是构建数学运算的流程图。 许多网站已经在使用诸如Wordpress和其他服务之类的工具来将编程委托给其他人。 如果您要构建以前已经做过很多次的事情(例如产品展示网站),则可能无需任何编程即可完成,并且可以快速可靠地构建结果。 但是,所有这些工具都有其局限性,即灵活性。 计算机所需的指令数量没有变化。 仅当大部分问题已经解决并且您将各个部分放在一起时,无代码才可行。 未来仍然会存在许多以前尚未解决的复杂而新颖的问题。 在那种情况下,没有代码就是不行。

-Arpan Dhatt,公正的开发人员

(本文翻译自Arpan Dhatt的文章《Is No-Code the Future of Software?》,参考:https://medium.com/swlh/is-no-code-the-future-of-software-6e223e206375)

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/3036957.html

setTimeout(function () { fetch('http://www.sosokankan.com/stat/article.html?articleId=' + MIP.getData('articleId')) .then(function () { }) }, 3 * 1000)